ORACLE海量数据频繁更新容易出一些怪问题
2008-04-09 20:39
253 查看
最近在做一个海量数据的查询系统,每天会在凌晨插入20M行数据左右,一个月数据在550M行左右,通过索引等方法,基本上能实现不错的查询性能。不过,该月数据会一次性地
被删除为若干个月后的数据清空空间,我们是用TRUNCATE语句来清空的。结果在QA测试时需要对清空、重装载数据的过程进行功能、性能测试,发现不定地会出现在重装一天数据后,就导致数据查询
急剧变慢,基本无法得到查询结果。甚至于明知查出来的数据会很少,或者索引范围很小。问题是用于分块的一个分区键值表被用来限定大数据表查询范围,如果用分工健值表的主键来唯一确定大数据表范围,则没有性能
变慢问题,而通过分区键值表得到不止一个值,即便是关联的数据更少或差不多,则查询无解。通过执行计划跟踪,发现分区键值表无法很好地使用其表上所建索引,而直接导致在大数据表上做全表扫描。奇怪的是,唯一确定就能用到索引,唯二确定就不能用到索引,
而且还不是100%的出现这个情况,不过有一定可能重现。
经过分析,发现数据字典中一些关于大数据表的统计数据没有得到及时更新,让查询优化引擎认为数据量很小,不需要索引能更快得到结果,尽管这不是现实的情况?!反正手工改变该统计量后,查询速度就正常了。因为不能在项目起来后用DBA用户手工管理,就采取在导入
一天数据后,进行大数据表分析强制更新统计数据,虽然分析该表会多出十多分钟处理,但总算解决了这个古怪问题。
被删除为若干个月后的数据清空空间,我们是用TRUNCATE语句来清空的。结果在QA测试时需要对清空、重装载数据的过程进行功能、性能测试,发现不定地会出现在重装一天数据后,就导致数据查询
急剧变慢,基本无法得到查询结果。甚至于明知查出来的数据会很少,或者索引范围很小。问题是用于分块的一个分区键值表被用来限定大数据表查询范围,如果用分工健值表的主键来唯一确定大数据表范围,则没有性能
变慢问题,而通过分区键值表得到不止一个值,即便是关联的数据更少或差不多,则查询无解。通过执行计划跟踪,发现分区键值表无法很好地使用其表上所建索引,而直接导致在大数据表上做全表扫描。奇怪的是,唯一确定就能用到索引,唯二确定就不能用到索引,
而且还不是100%的出现这个情况,不过有一定可能重现。
经过分析,发现数据字典中一些关于大数据表的统计数据没有得到及时更新,让查询优化引擎认为数据量很小,不需要索引能更快得到结果,尽管这不是现实的情况?!反正手工改变该统计量后,查询速度就正常了。因为不能在项目起来后用DBA用户手工管理,就采取在导入
一天数据后,进行大数据表分析强制更新统计数据,虽然分析该表会多出十多分钟处理,但总算解决了这个古怪问题。
相关文章推荐
- 频繁更新Oracle表更新速度问题解决
- oracle的一些小问题集锦(不断更新)
- asp.net 与oracle 连接的一些常见问题(不断更新中)
- oracle更新xml节点问题的一些细节
- oracle更新xml节点问题的一些细节
- 使用ASP.NET 2.0 的一些问题!(11.22更新)
- ASSERT的一些问题(不断更新)
- oracle一些问题集中!
- 64位win7下安装oracle的一些问题
- 【数据结构】一些海量数据处理问题
- 遇到的一些问题及解决方法(不断更新)
- caffe训练中遇到的一些问题(持续更新......)
- 问题:oracle 两个表之间的修改;结果:ORACLE 两个表之间更新的实现
- midlet通过http访问servlet,进而访问oracle的一些中文处理问题
- oracle官方提到被频繁询问的问题2(rcp和或者rsh还需要么)
- iOS开发之适配IPV6更新网络处理为AFNetworking3.x, 集成以及遇到的一些问题总结。
- Navicat Premium连接Oracle遇到的一些问题和其解决方法
- 我用VS2008写的的第一个Filter,遇见的一些问题,和解决方法,更新结束。
- 记录工作中遇到的一些问题(长期更新)
- 生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)