欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

oracle不开归档对效率会快吗,关于性能:存档庞大的数据库(oracle),而不会影响向其插入记录的进程...

发布时间:2024/9/3 数据库 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 oracle不开归档对效率会快吗,关于性能:存档庞大的数据库(oracle),而不会影响向其插入记录的进程... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我们有一个审计数据库(oracle),它保存部署在应用程序服务器上的服务(大约100个)执行的所有活动的监视器信息。您可能认为审计数据库非常庞大,因为服务处理的请求数量很大。此数据库上唯一的写入事务是实时编写审计信息的服务。

随着审计数据库的开始增长(每天超过一百万条记录),查询所需数据(例如select all errors occurred with service A for requests between start date and end date)很快变得几乎不可能。

为了解决这个问题,一些"聪明的孩子"决定设置一个批处理作业,将数据从数据库复制到另一个数据库(例如,audit_archives)并删除记录,以便在审计数据库中保留仅2天的审计数据。

这看起来很简洁,但每当"批处理"进程运行时,将数据插入审计数据库的审计进程开始变得非常慢 - 有时"批处理"进程也因数据库争用而失败。

设计此方案以更有效的方式执行上述归档的更好方法是什么,以便对审计流程和批处理产生最小的影响?

您可能希望研究对基表进行分区。

创建镜像表(作为"历史"数据的目标)并在该表上创建相同的分区方案(最可能是基于每个日期)。

然后,您可以简单地将"旧"分区(使用ALTER TABLE the_table EXCHANGE partition)从一个表交换到另一个表。应该只需要几秒钟来"移动"分区。实际性能取决于定义的索引(本地,全局)。

这种技术通常用于反过来(准备将新数据输入数据仓库环境中的报告表),但也应该用于"归档"。

感谢您的答复。 这里有一个问题是,在工作日的24小时之内,我们无法承担审计表不可用的费用。

@ringbearer:为什么你认为桌子不可用?

ALTER TABLE the_table EXCHANGE partition的副作用?

@ringbearer:不,表不会"不可用"。 锁定可能存在一些问题,但您需要尝试一下。 我不确定是否需要锁定表或锁定分区。

我轻松的方式。

使用FORALL语句删除旧记录部分最佳

用FORALL复制数据部分最好

根据星期几添加分区

II队列

使用FORALL语句删除旧记录部分最佳

使用审计触发器填充audit_archives,在触发器使用队列中避免长dml

总结

以上是生活随笔为你收集整理的oracle不开归档对效率会快吗,关于性能:存档庞大的数据库(oracle),而不会影响向其插入记录的进程...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。