您现在的位置是:首页 >

JVM性能调优 ORACLE性能调优原则下篇

火烧 2023-01-20 20:22:18 1074
ORACLE性能调优原则下篇    用户SQL质量    以上讲的都是硬件方面的东西 在条件有限的条件下 我们可以调整应用程序的SQL质量      不要进行全表扫描(Full Ta le Sca )
JVM性能调优 ORACLE性能调优原则下篇

ORACLE性能调优原则下篇  

   用户SQL质量    以上讲的都是硬件方面的东西 在条件有限的条件下 我们可以调整应用程序的SQL质量      不要进行全表扫描(Full Table Scan) 全表扫描导致大量的I/O     尽量建好和使用好索引 建索引也是有讲究的 在建索引时 也不是索引越多越好 当一个表的索引达到 个以上时 ORACLE的性能可能还是改善不了 因为OLTP系统每表超过 个索引即会降低性能 而且在一个sql 中 Oracle 从不能使用超过 个索引 当我们用到GROUP BY和ORDER BY时 ORACLE就会自动对数据进行排序 而ORACLE在INIT ORA中决定了sort_area_size区的大小 当排序不能在我们给定的排序区完成时 ORACLE就会在磁盘中进行排序 也就是我们讲的临时表空间中排序 过多的磁盘排序将会令 free buffer waits 的值变高 而这个区间并不只是用于排序的 对于开发人员我提出如下忠告:     ) select update delete 语句中的子查询应当有规律地查找少于 %的表行 如果一个语句查找的行数超过总行数的 % 它将不能通过使用索引获得性能上的提高      ) 索引可能产生碎片 因为记录从表中删除时 相应也从表的索引中删除 表释放的空间可以再用 而索引释放的空间却不能再用 频繁进行删除操作的被索引的表 应当阶段性地重建索引 以避免在索引中造成空间碎片 影响性能 在许可的条件下 也可以阶段性地truncate表 truncate命令删除表中所有记录 也删除索引碎片      ) 在使用索引时一定要按索引对应字段的顺序进行引用      ) 用(+)比用NOT IN更有效率      降低ORACLE的竞争     先讲几个ORACLE的几个参数 这几个参数关系到ORACLE的竞争      ) freelists 和 freelist 组 他们负责ORACLE的处理表和索引的空间管理      ) pctfree 及 pctused 该参数决定了freelists 和 freelist 组的行为 pctfree 和pctused 参数的唯一目的就是为了控制块如何在 freelists 中进出    设置好pctfree 及 pctused对块在freelists的移走和读取很重要      其他参数的设置     ) 包括SGA区(系统全局区) 系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段     主要包括数据库高速缓存(the database buffer cache)     重演日志缓存(the redo log buffer)     共享池(the shared pool)      数据字典缓存(the data dictionary cache)以及其它各方面的信息     ) db_block_buffers(数据高速缓冲区)访问过的数据都放在这一片内存区域 该参数越大 Oracle在内存中找到相同数据的可能性就越大 也即加快了查询速度      ) share_pool_size (SQL共享缓冲池) 该参数是库高速缓存和数据字典的高速缓存      ) Log_buffer (重演日志缓冲区)     ) sort_area_size(排序区)     ) processes (同时连接的进程数)     ) db_block_size (数据库块大小) Oracle默认块为 KB 太小了 因为如果我们有一个 KB的数据 则 KB块的数据库要读 次盘 才能读完 而 KB块的数据库只要 次就读完了 大大减少了I/O操作 数据库安装完成后 就不能再改变db_block_size的值了 只能重新建立数据库并且建库时 要选择手工安装数据库      ) open_links (同时打开的链接数)     ) dml_locks     ) open_cursors (打开光标数)     ) dbwr_io_slaves (后台写进程数) lishixinzhi/Article/program/Oracle/201311/17647  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码