资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
OracleOracle 数据库优化策略总结数据库优化策略总结SELECT 时不利用函数在做频繁的查询垄断时,尽量直接 select 字段名,然后利用 C 语言代码对查询收获做二次加工,避免让 Oracle来做混杂的函数可能数学计算。因为 Oracle 出于通用性的琢磨,其函数及数学计算的速度远不及用 C 语言直接编译成机器码后计算来的快。绑定变量这个能够大幅度减退 SQL 的“hard parse” ,我们大局部过程都曾经告终了变量绑定。个别未曾告终的,修正一下,也能很快看到收获。批量 FETCH万一顺次 select 会归来多条登记,利用批量 Fetch,例如顺次 fetch 1000 条登记,要比一条条的 fetch 数据快的多,也能够管用减退 oracle 的压力。批量提交顺次修正多条登记,然后顺次性提交,要比每条提交顺次快的多。当然前提是业务逻辑批准这么做。批量增删改万一必需顺次性修正可能剔除多条登记,能够批准批量数组绑定的措施,这个和前面说得“绑定变量”相仿,差异是前者绑定的是一个变量,这里绑定的是一个大数组的首指针,这种措施要比逐条绑定厉行快的多。SQL 预解析前面的大局部是批量垄断,还有一种常见的场景是小事务垄断,但频率极其高。这种场景等闲 SQL 也不混杂,几乎未曾优化的余地了,然而由于垄断频繁,同样会构成CPU 居高不下。现在我们的过程大局部都是下面这个利用形式:loop parse sql; bind var; execute sql; end loop;固然我们利用了绑定变量的措施,然而由于垄断频繁,同样构成许多的“soft parse”以及网络通信。在内存数据库中,我们等闲批准预解析的措施来长进效率,事实上,Oracle 很早就给开发者供给这种形式,只是开发者嫌繁琐没利于用而已。将过程改成下列形式:parse sql; bind var; loop execute sql; end loop;这么就能够管用减退 Oracle 的压力,能够将厉行效率起码长进一倍。然而这种形式波及到过程构造的改变,定然在设计阶段就这么做。否则,后期再调剂的话,危险和工作量都会很大。SQL 语句的一些优化措施1、SQL 语句用大写的;因为 Oracle 总是先解析 SQL 语句,把小写的字母转换成大写的再厉行。2、避免在索引列上利用 NOT 等闲,我们要避免在索引列上利用 NOT, NOT 会发生在和在索引列上利用函数雷同的波及。3、当 Oracle“碰到”NOT,他就会静止利用索引转而厉行全表扫描。4、避免在索引列上利用计算。WHERE 子句中,假定索引列是函数的一局部。优化器将不利用索引而利用全表扫描。5、尽量少用 DISTINCT 垄断,用 EXISTS 轮换DISTINCTvalues should never be negative。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号