资源描述
调整SQL语句和应用,日月明王 msn:,SQL语句的执行,分析(PARSE) 语法检查; 搜索共享SQL区,查看该语句是否已经存在; 查询数据字典,决定安全权限、最优路径等; 如果共享SQL区不存在该语句,则执行编译生成分析树。 执行(EXECUTE) 将分析树放入数据库缓冲区中; 执行物理/逻辑读写。 取数据(FETCH),SQL语句的优化,利用ORACLE的共享区(SHARED_ POOL),相同的SQL语句可以共享编译后的分析树 遵循的原则: 约定所有语句的标准格式,包括PL/SQL 约定大小写 使用相同的绑定变量 注: 两条SQL语句必须是语法、文本完全相同,也即存取权限、路径、大小写、空格数、变量名等完全相同,才能视为可共享的SQL,将共享的SQL和PL/SQL保留在共享区中,保留大的已分配空间 SHARED_POOL_RESERVED_SIZE SHARED_POOL_SIZE的10%为较大连续共享池内存请求而保留的空间,以避免由碎片引起的性能下降 防止实体被换出 使用系统包DBMS_SHARED_POOL可在共享内存中保留实体 DBMSPOOL.SQL和PRVTPOOL.PLB过程脚本创建DBMS_SHARED_POOL的包说明和包体 使用V$SQLAREA V$SQLTEXT查询当前系统中共享区中的所有SQL语句,何时使用DBMS_SHARED_POOL 在装入大的PL/SQL实体(如STANDARD 和DIUTIL包)时, DBMS_SHARED_POOL 包中的过程是非常有用的。 对频繁执行的触发器,DBMS_SHARED_POOL也是非常有用。这时可以将编译过的频繁使用的触发器保存在共享区中 如何使用DBMS_SHARED_POOL 确定需要调入内存的包或游标; 启动数据库; 调用DBMS_SHARED_POOL.KEEP dbms_shared_pool.keep(object IN VARCHAR2,type IN CHAR DEFAULT P) object - 实体名或游标地址 type - 实体的类型。 P:Procedure、C:cursor 、R:Trigger、Q:sequence,数据访问方法:使用索引(INDEX),索引有如下的特性: 由ORACLE自动维护 可减少磁盘I/O 仅查询被索引的列时才用到索引 对索引的搜索是对全表扫描的替换 索引、表独立 有自己的存储参数 通常比原来的表小 可存储在与表分离的表空间中,使用聚簇(CLUSTER),对于聚簇键的选择,应遵循如下原则: 要聚簇的表主要用作查询,并且聚簇键很少更新 经常一同使用的表之间有联结关系 此列有一广泛的取值,不是经常重复 多表在该列上做联结 该列很少被更新 该列不能为LONG 或LONG RAW 数据类型 聚簇表应经常由应用联结访问 如果经常选择一个主记录和对应的细节记录,考虑使用聚簇表 如果经常选择同一个主表的许多细节记录,考虑将细节表单独在聚簇中保存,不应使用聚簇表的情况: 如果应用仅偶尔联结或经常修改公共列值,不要聚簇表 如果应用经常执行聚簇表中仅一个表的全表的搜索,不要聚簇表 使用CREATE CLUSTER命令创建聚簇表,SQL优化方式,基于规则的优化 基于成本的优化 设定: init.ora: OPTIMIZER_MOD : RULE | CHOOSE | FIRST_ROWS | ALL_ROWS 使用提示: Select /*+ FIRST_ROWS */ name from emp where salary2000; 对象统计: Analyze table emp compute statistics; Analyze talbe emp compute statistics for all indexed columns; Analyze table emp estimate statistics sample size 20 percent; Execute dbms_utility.analyze_schema(scott,estimate,estimate_percent=20);,跟踪不良SQL,设置启动参数 开启SQL_TRACE 运行程序 确定跟踪文件 在跟踪文件上运行tkprof,产生文本 根据结果优化SQL,Init.ora:TIMED_STATISTICS , MAX_DUMP_FILE_SIZE , USER_DUMP_DEST, SQL_TRACE 或者 alter session set timed_statistics=true; 收集操作系统的计时信息,这些信息可被用来优化数据库和 SQL语句 ALTER SESSION SET SQL_TRACE = true; 使用 SQL 跟踪设备将引发系统开销,只应在需要优化信息的情况下使用 TRUE。 TKPROF.EXE .admino817udumpORA03808.TRC o.txt explain=system/manager sys=no sort=fchdsk,Sample TKPROF Output,资源计划: 执行rdbms/admin/utlxplan.sql生成PLAN_TABLE AUTOTRACE: 通过./sqlplus/admin/plustrace.sql来设置 SET AUTOTRACE OFF | ON | TRACEONLY EXPLAIN STATISTICS,
展开阅读全文