以Linux平台为例,下面的参数设置的大小, kernel.shmall = kernel.shmmax = kernel.shmmni = hugepage是否启用 Solaris中DISM的设置 Hp-Ux异步IO的设置 AIX VMM(Virtual Memory Manager)的设置
数据库架构上的优化
A.通过安装规范(Grid Infrastructure, Database, Dataguard),可以减少很多误操作,方便管理归档、逻辑备份、物理备份等,进而提高工作效率,也可以减少故障率 B.RAID级别的设置,RAID组的规划,存储Cache的设置,ASM磁盘组的磁盘的大小,LUN的划分等 C.表空间大小、表空间多少、LOB存储 D.表是否分区、是否采用压缩、是否有合适的索引、合适的pctfree(减少行连接和行迁移,也可以减少cache buffers chains)、合适的storage减少表碎片 E.逻辑备份的规划 F.物理备份的规划 G.操作系统、数据库监控的规划一个好的、长期的规划,可以保证数据库运行平稳,方便管理,以及后续的升级、迁移都不是问题
数据库层面最优
A. 通过分析AWR,我们可以手动指定各个组件的大小 Oracle推出了AMM,ASMM等SGA自动化管理,但是这些自动化当然也会带来一定的弊端,比如内部资源协调等,这些都需要latch,也会带来CPU的争用 db_cache_advice参数相关的latch simulator lru latch,simulator hash latch _library_cache_advice参数相关的latch shared pool simulator 通过设置_library_cache_advice为false,可以关闭shared pool的建议。使用statistics_level=basic也可以关闭, 但是不建议调节statistics_level,这也会关闭其他信息的收集 B. 一些新功能是否启用等 C. Cursor相关参数 D. Optimizer相关参数 E. IO相关参数客户端层面优化
A.客户端可能使用的有.NET,Java开发的程序比较多,可以启用连接池,还可以启用statement cache并设置大小,提高软解析的次数 B.根据情况,还可以适当调整SDU,SEND_BUF_SIZE,RECV_BUF_SIZE最后一步sql优化
SQL优化是重中之重,也是最难的一部分,尤其是SQL语句的改写,涉及到业务逻辑。常见的方法 A.使用合适的统计信息收集的方式 B.设置表、索引或列的信息 C.使用profile D.通过Hint E.使用DBMS_SQLDIAG F.使用DBMS_SPM G.创建合理的索引 H.调整业务逻辑,减少执行频率 I.使用临时表或视图 J.改写SQL
常用的工具
AWR, ASH, ADDM and Sql Tuning Advisor,SQL Access Advisor,SQLT,SQLHC,ASHV,EM,Grid Control,Cloud Control