木匠的微型博客 Charlie Twitter

    follow me on Twitter

    Monday, January 19, 2009

    Learn from Oracle book 读书学习数据库

    首先热烈庆祝今天读完了老刘(Lewis)的Cost Based Oracle Fundamentals附录A附录B,就此读完了全书.欢迎客官您将各种SQL执行计划和优化器方面的疑难问题放马过来,让木匠尝试一下新学的功夫.

    开卷有益,静下心来读书是吸取知识的最快途径之一, 再结合试验,进步更是飞快.
    书中自有黄金屋,书中自有颜如玉,对第二点还没啥体会,您有的话,介绍一下.

    2008年上半年读完了Steven Feuerstein的Oracle PL/SQL Best Practices, 2nd Edition: October 2007, ISBN 13: 9780596514105. 感觉PL/SQL功力暴增,从菜牛一跃变为牛人,读完了Doing SQL from PL/SQL: Best and Worst Practices更是进入了超一流选手的行列,充满自信.

    2008年10月11月,花了两个月时间完成了瑞士人Christian Antognini的Troubleshooting Oracle Performance. 读了一半,节奏缓慢,等读完了所有章节,才明白了前半部分铺垫的意义,盖房子要有一个好的根基. 作者虽然母语不是英语,开始读的时候稍有不适,慢慢的,发现他的文章却是平铺直叙,拿捏得体,易于理解,所以读书进度很快.

    扯远一点,1994年偶然在公司(西安思维)捡到一本Code Complete(代码大全)中文译本,爱不释手,但也只是蜻蜓点水,学到一点皮毛.现在我手里正拿着Code Complete的原版.
    代码大全里讲的软件开发有几种比喻(Metaphor), 比如软件书写(Penmanship,写作),软件农场(种庄稼/耕作Farming),软件堆积(养牡蛎Oyster Farming) 和 软件构造(Construction/Building,构建软件).
    我同作者一样,喜欢盖房子这个比喻,房屋的根基和房屋的构造规划都很重要.

    2008年5月开始读CBO Fundamentals,这本书真是难啃,内容不易理解,断断续续,每天大概5页,9月份卡在第十三章Sorting and Merge Joins,圣诞节又拾起这本书,一鼓作气,冲过难关,读完了剩余部分,特别是读完14章The 10053 Trace File,贯穿全剧,对CBO的认识又上了一层台阶.
    我对英国英语不太适应,Doing SQL from PL/SQL: Best and Worst Practices的作者也是英国人,读起来相当吃力,改天我把所有20个要点及示例重新写一遍.

    下一个目标是Richard J. Niemiec的Oracle Database 10g Performance Tuning Tips & Techniques, 1000页,每天十页,计划100天(3个月)读完.粗粗翻了一下,此人标准美国英语,文笔通俗易懂,按时完成目标问题不大.


    2005年7月刚到加拿大时,从旅馆到办公室的路上, 距离办公室有300米,中午常到这里散步.

    9 comments:

    yumianfeilong said...

    那就问个笼统的问题。

    您老管理的数据库或者开发的数据库项目都是使用什么optimizer_mode?

    如果使用CBO,是否定期的去对表进行分析,是否遇到过执行计划因DDL导致re-parse突然改变这样的情况?

    victor666666 said...

    如果改变也是改正确了,有bug(Oracle的问题)或统计数据不对(你的问题)那就另当别论了

    1 木匠 said...

    To yumianfeilong,

    两个批处理工作节点是 All_Rows,
    两个OLTP工作节点是 First_Rows_1000.
    老刘Lewis推荐 First_Rows_1 或者First_Rows_10用在OLTP应用上.
    First_Rows_1000是我3年前设置的,当时有一个问题不会解决,瞎试.现在知道答案了,如果存取过滤条件列和排序列上都有索引, SQL Optimizer 可能优先考虑排序列上的索引,而不是存取判断列(access predicate)上的索引.
    First_Rows_1000改回First_Rows_1需要从新审查.

    每个月收集一次统计信息,还没有碰到过DDL导致执行计划改变的情况.
    Fix是使用Store Outline和SQL Profile,11g用SQL plan baseline;或者修改统计信息,或者修改隐含参数.
    你给我个具体的案例,好让我出手过招,检查一下10053 trace,看看为什么执行计划变了.

    To victor666666 (六好多呀),

    99%的情况SQL Optimizer可以给出最优路径. 1% 的问题SQL Optimizer 可能给出错误的执行路径, 需要DBA和Developer修复.

    boypoo said...

    一年还能读这么多技术书,强烈佩服!!

    1 木匠 said...

    To boypoo,

    希望今年读书量增加一倍.

    victor666666 said...

    第二三本没看过,也决定09年仔细看看,另外,除了Jlw这本书外,有个法国人写的一本sql的书,好像名字叫the art of sql也是非常不错的,推荐

    1 木匠 said...

    To victor666666,

    加到亚马逊购物袋里了,找时间拜读一下.

    Anonymous said...

    年终忙,一点时间都没有,今天忙得差不多了,全国也都不送快递了,你的书过了年才能给你买了。先给你和全家拜个年!Happy牛爷!新年鱼块! - Nini

    1 木匠 said...

    To Nini,

    No hurry, Haste makes waste.

    Good things come to those who can wait.

    ^_^