
读书笔记
文章平均质量分 59
风之子ADAM
这个作者很懒,什么都没留下…
展开
-
《基于ORACLE SQL优化》读书笔记
注:为读《基于ORACLE SQL优化笔记》对比RBO 与CBO 在数据选择性不佳的情况下,对执行路径的选择。select * from emp where mgr = 7902;1. 骗下优化器,修改表和索引统计信息2. CBO 对 上面语句选择FULLTABLE SCAN;3. RBO还是走索引。数据准备:CREATE TABLE原创 2014-02-06 16:28:59 · 594 阅读 · 0 评论 -
读书笔记-锁
锁为数据的一个属性。查看某一行是不是锁定了,要找到这一行。V$lock实为队列表。DML 锁:TX,TMDDL锁:排他DDL锁,共享DDL锁,可中断解析锁注:DDL自带COMMIT,执行DDL,不想让它提交现有事务,可以使用自治事务。 SQL> select * from t1 where a=1 for update; A---------原创 2014-03-13 13:51:06 · 640 阅读 · 0 评论 -
读书笔记 ORACLE数据恢复
数据库到OPEN状态的条件:控制文件都存在,而且已经同步数据文件都存在且已经同步。每个重做日志组有至少一个成员。通过v$recover_file 查看有问题的文件OPEN状态下,数据库出现以下问题就会失败控制文件系统或是还原表空间的数据文件整个重做日志组数据恢复指导可处理以下两种情况:一种是因必需的数据库文件缺失、不一致或损坏原创 2014-03-18 10:18:54 · 674 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 星形转换/谓词推入/连接因式分解/表移除
星形转换:事实表和维度表由外键相连,事实表的外键列上有位图索引。星形转换核心:将针对各个维度表的限制条件通过等价改写的方式以额外的子查询施加到事实表上。然后通过索引间的位图操作。允许星形转换:Alter session set star_transformation_enabled =true; 谓词推入:还是会把视图中定义的SQL当成一个独立的处理单元来处理,但CBO原创 2014-04-16 15:49:38 · 1148 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 子查询展开/视图合并
查询转换是硬解析的第一步,在9i 中,它在CBO之前执行。10G以后,属于CBO的一部分。CBO会对查询转换做成本估算。子查询展开:将子查询拆开:不能做子查询展开的子查询通常在目标SQL的执行计划的最后一步才会被执行,并且走FILTER类的执行方式。改写不基于成本!!where条件为exists,in,=any的子查询,ORACLE会转换成相应的半连接。Notexists, not in,原创 2014-04-15 16:26:51 · 1913 阅读 · 0 评论 -
读书笔记MTTR
故障类别:语句错误,用户进程错误,网络故障,用户错误,实例错误,介质故障。用户进程错误:PMON会定时CHECK 恢复进程网络故障:提供冗余路径,备份监听程序,网络连接和网络接口卡。Enterprise Manager > Availability > View and Manage TransactionsDB装载了控制文件后,打开数据文件原创 2014-03-21 16:32:46 · 593 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 绑定变量窥探
绑定变量窥探(参数_OPETIM_PEEK_USER_BINDS)绑定变量窥探,在硬解析中会确定下来一个执行计划。如果某个SQL 对应的SHARED CURSOR 被清出SHAREDPOOL了,而再次执行时值不对,则会引起绑定错误的执行计划让ORACLE执行目标SQL使用硬解析方法:对SQL涉及到的表使用DDL。比如COMMENT.Comment on table t1 is原创 2014-04-03 21:04:57 · 750 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 绑定变量分级
绑定变量分级:Level1: 32Level2:33-128Level3:129-2000Level4:2000+分级只适用于文本类型,NUMBER类型固定为22.SQL文本没有变化,如果绑定变量的定义长度发生了变化,该SQL还是可能会做硬解析。在11.2.0.4上做了下实验。2000没有做出来。而且如果先有了N为4000的子CURSOR则不会再为小于4000的级别分配子CUR原创 2014-04-09 20:35:52 · 680 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 得到绑定变量值
查询v$sql_bind_capture,如果查不到,再去查dba_hist_sqlstat或原创 2014-04-11 10:33:48 · 833 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 常规游标共享
常规游标共享:OLTP系统,在开发阶段没有使用绑定变量,上线了之后才发现问题,此时使用绑定变量,大部分SQL要改写。代价大,考虑使用常规游标共享。在解析之前,使用系统产生的绑定变量来替换目标SQL文本中where或是values子句中的具体输入值。受cursor_sharing 控制:EXACT: 不启用SIMILAR:排除不安全的谓词条件(范围查询,有通配符的LIKE,对有直方图原创 2014-04-11 14:06:50 · 612 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 自适应游标共享
自适应游标共享:(通过适时触发硬解析动作,缓解绑定变量窥探带来的副作用)Exec dbms_stats.gather_table_stats( method_opt=>’for allcolumns size 1’) 不收集直方图统计信息Exec dbms_stats.gather_table_stats( method_opt=>’for allcolumns size auto’) 自原创 2014-04-12 12:52:18 · 626 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-可传递性
注:为读《基于ORACLESQL优化笔记》 可传递性, 除了原书的例子,感觉跟SQL 重写是一个意思吧。ORACLE对EXIST 与IN 的转换,嵌套查询与子查询的转换,还有视图里的谓词推入。稍改写原书的例子。感觉原例有点点奇怪。drop table t11; drop table t12; drop table t13; create table t11(c1n原创 2014-02-06 17:28:27 · 704 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-游标
show parameter open_cursors; --单个session可并存sessioncursor数 select count(*) from v$open_cursor where sid in (select sidfrom v$mystat where rownumselect name,value from v$sysstat where name ='opene原创 2014-02-18 10:04:48 · 780 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-CBO局限性
注:为读《基于ORACLESQL优化笔记》原文写了四个CBO局限性:1. CBO 会默认目标SQL语句WHERE 条件中出现的各个列之间是独立的,没有关联关系。2. CBO会假设所有的目标SQL都是单独执行的,并且互不干扰。3. CBO对直方图统计信息有诸多限制4. CBO在解析多表关联的目标SQL时,可能会漏选正确的执行计划。原创 2014-02-06 18:13:27 · 803 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-访问索引的方法
访问B树索引:索引分枝块两种类型的指针,IMC,索引行记录所记录的指针。在同等条件下, 唯一性B树索引比非唯一性B树索引,省叶子节点的存储空间。 INDEX UNIQUE SCAN:针对UNIQUE INDEX,WHERE条件中为等号。INDEX RANGE SCAN:在同等条件下,目标索引行的数量大于1时,索引范围扫描所用的逻辑读至少会比相应的唯一性扫描的逻辑读多1.(有试验原创 2014-02-07 14:19:20 · 860 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-表的连接类型
内连接:完全满足条件的。T1 JOIN T2 ON (xxx =yyy);T1 JOIN T2 USING (xxx);Natural join 自动使用列名相同的列连接。外连接:驱动表中不满足连接条件的记录对应的被驱动表中的查询都以NULL来填充。对于外连接,选择条件出现在WHERE后,还是ON 后面是有区别的。ORACEL中(+)对面的表为驱动表。如有选择条件不带(+)原创 2014-02-07 15:54:59 · 615 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-表的连接方式
NL: 向量I/O 把原先的一批单块读组合起来,用一个向量I/O去批量处理。笛卡尔连接 MERGE JOIN CARTESIAN: 大部分情况为SQL中漏掉连接条件。反连接:外部WHERE 条件中NOT EXISTS ,NOT IN 或是NOT EXISTS和半连接:会去重复。找到一条合条件的记录就停止搜索被驱动表。把外部WHERE 中含有EXISTS,IN或是=ANY的子查询转换原创 2014-02-08 11:38:35 · 645 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-查看执行计划
1. Explainplan(将解析的SQL产生的执行计划写入PLAN_TABLES$)a. Explainplan for +xxSQLb. Select* from table(dbms_xplan.display)2. DBMS_XPLANa. Select* from table(dbms_xplan.display_cursor(n原创 2014-02-11 13:31:18 · 791 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-位图索引执行计划
位图索引优点(适用):1. 被索引列DISTINCT值少2. 多列建立索引3. 查询有多个AND ,OR。原书示例代码:create table customer(customer# number,marital_status varchar2(10),region varchar2(10),gender varchar2(原创 2014-02-11 17:12:07 · 731 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-特殊执行计划
AND-EQUAL(INDEX MERGE):多个单列等值条件 +每个列上有索引。示例中数据量少。不加HINT走的是全表扫,如果数据量大,而且那两列的选择性好,应当不用加HINT。INDEX JOIN:针对单表不同索引的连接。 (在没有联合索引情况下)要取代的是全表扫,原表数据不能有NULL值。列有属性NOTNULL。VIEW:按能否做视图合并分为两种。不做合并在执行计划中会出现VIEW字原创 2014-02-12 14:52:49 · 973 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-使用SPM稳定执行计划
SQL PROFILE:相对被动SPM:主动,保证只有被验证过的执行计划才会被启用。只有DBA_SQL_PLAN_BASELINES中ENABLED和ACCEPTED值均为YES的SQLPLAN BASELINE对应的执行计划才会被ORACLE启用。 自动捕获:对于重复执行的SQL,ORACLE会自动捕获其SQLPLAN BASELINE.11gR2以上环境,ACCEPTED原创 2014-02-13 14:45:27 · 1500 阅读 · 0 评论 -
《基于ORACLE SQL优化》读书笔记-使用SQL PROFILE锁定执行计划
SQL PROFILE:1. Automatic2. Manual要注意为了使用SQL PROFILE能应对SQL中变量值的变化,需要使用force_match=>trueAUTOMATIC:create table t41 (n number); insert into t41 select rownum from dual connect原创 2014-02-12 18:05:47 · 1433 阅读 · 1 评论 -
《基于ORACLE SQL优化》读书笔记-CURSOR
Shared Cursor:n Parent Cursor(V$SQLAREA):存SQL文本n Child Cursor(V$SQL):解析树和执行计划。硬解析:n 找不到Parent Cursorn 找到Parent Cursor,但找不到ChildCursor 危害:n Shared Pool Latch 争用(常为CPU占用率高) 为child cursor分配原创 2014-02-14 11:05:31 · 868 阅读 · 0 评论 -
《基于ORACLE的SQL优化读书》笔记 ORACLE里应用的类型
ORACLE里应用的类型:硬解析:(open,parse,execute,fetch,close)软件解析:SESSION_CACHED_CURSORS 设置为0(每次open,parse,bind,execute,fetch,close)软软解析:SESSION_CACHED_CURSORS 设置>0,执行三次以上。(一次open,每次parse,bind,execute,fetch原创 2014-04-12 20:17:24 · 545 阅读 · 0 评论