随着业务的不断扩展,对数据的分析、抽取、转换等操作越来越多,对TB级ORACLE数据库的性能依赖越来越高,请各们同仁说说如何解决数据库查询性能的问题?以及通常有哪些优化手段?
其实这个问题楼上基本说完了,我总结一把
优化基本从两方面:
1、硬件
高性能的主机+闪存存储
2、系统和软件层面
补丁或者升级最新版本。
sql优化。
关系数据库和非关系数据库集合使用。
建立从库或者叫dg副本,查询等业务可以从dg端执行,减轻主库压力。
收起从两个方面入手,第一升级硬件,在数据量达到一定级别的时候,其实任何的软优化都于事无补,大数据会造成物理读,引起IO瓶颈,所以1.扩大内存,并调整SGA和PGA,11g以后的话直接可以让memery自动管理;第二普通硬盘换成SSD,或者有条件直接上内存数据库;第二当然就是优化SQL,通过awr等手段,结合实际的业务场景进行优化。
对于oracle而言
从软件上讲,使用最新的版本,补丁,新特性。毕竟新的东西是在完善老的数据库系统,更优的执行计划,更优的算法等等诸如此类,
然后就是使用数据的集群缓存,比如和nosql数据库配合使用,
硬件上面的话使用固态硬盘,闪存阵列卡,运行速度更快更好的cpu,或者直接使用成熟的一体机exdata。
下面说下具体的解决方案,没有什么业务是不可拆分的,而且拆分的效率往往是巨大的,或许前期的时间耗费的比较多,不过收获大部分是可观的,说说索引,提前过滤好结果集,对于海量的数据作用是很明显的,对于建立什么样的索引,每个业务场景都是不同的,不能一概而论,有些时候使用索引的性能并不怎么好。下面说些笼统查询优化技术的分区,分表,临时表,中间表,历史表,虚拟列等等,最后一句话,减少结果集,因为往往很多时候展现的数据并不需要那么多,合理使用索引,因为一个索引可能产品蝴蝶效应。