dblotus
作者dblotus·2013-07-01 10:26
数据库管理员·IBM

推荐一本DB2调优的好书

字数 3405阅读 7422评论 23赞 2
给大家推荐一本关于DB2调优的好书,中文版刚刚发布,绝非广告啊,只是这书真的非常不错,真心推荐给大家。
一本纯干货的小册子,非常实用,虽然是for Z的,但是基本通用。对调优感兴趣的,看看还是不错的。

《DB2 SQL性能调优秘笈》
http://item.jd.com/11252774.html

英文版,不一定全:
http://my.safaribooksonline.com/book/databases/db2/9780133038484/firstchapter

作者网站:http://www.db2sqltuningtips.com

看看第一章的目录,翻译成调优秘笈,应该也不为过了。

FYI. 

第1章 SQL优化技巧宝典100+ 
1. 去除在谓词列上编写的任何标量函数 
2. 去除在谓词列上编写的任何数学运算 
3. SQL语句的Select部分只写必要的列 
4. 尽可能不用Distinct 
5. 尽量将In子查询重写为Exists子查询 
6.确保宿主变量定义为与列数据类型匹配 
7. 由于优化工具处理"或"逻辑可能有问题,所以尽量采用其他方式重写 
8. 确保所处理的表中数据分布和其他统计信息正确并反映当前状况 
9. 尽可能用UNION ALL取代UNION 
10. 考虑使用硬编码还是使用宿主变量 
11. 尽可能减少DB2的SQL请求 
12. 尽量将区间谓词重写为Between谓词 
13. 考虑使用全局临时表 
14. 优先使用Stage 1谓词而不是Stage 2谓词 
15. 记住(某些)谓词的顺序很重要 
16. 多个子查询排序 
17. 索引关联子查询 
18. 了解DB2 Explain工具 
19. 使用工具进行监控 
20. 采用提交和重启策略 
21. 实现优良的索引设计 
22. 避免与非列表达式不一致 
23. 所有筛选逻辑放在应用代码之外 
24. 确保涉及Min和Max的子查询谓词要处理可能返回Null的情况 
25. 如果查询只选择数据,一定要把游标处理写为For Fetch Only(只获取)或For Read Only(只读) 
26. 避免只是为了帮助确定代码逻辑应当执行更新还是插入而从表中选择一行 
27. 避免只是为了得到更新值而从表中选择一行 
28. 利用动态SQL语句缓存 
29. 避免使用Select * 
30. 当心可以为Null的列,还要当心SQL语句可能从数据库管理器返回Null 
31. 尽量减少执行打开和关闭游标的次数 
32. SQL中要避免非逻辑 
33. 使用关联ID来保证更好的可读性 
34. 保证表和索引文件合法而且有组织 
35. 充分利用Update Where Current of Cursor和Delete Where Current of Cursor 
36. 使用游标时,利用多行获取、多行更新和多行插入来使用ROWSET定位和获取 
37. 了解锁定隔离级别 
38. 了解Null处理 
39. 编程时要考虑性能 
40.让SQL来处理 
41.使用Lock Table 
42. 考虑OLTP前端处理 
43. 考虑使用动态可滚动游标 
44. 利用物化查询表改善响应时间(只适用动态SQL) 
45. 结合Select的Insert  
46. 充分利用多行获取 
47. 充分利用多行插入 
48. 充分利用多行更新 
49. 充分利用多行删除 
50.在Select子句中使用标量全选 
51. 在动态SQL中充分利用REOPT ONCE和REOPT AUTO,在静态SQL中充分利用REOPT VARS和REOPT ALWAYS 
52. 标识易失表 
53. 使用ON COMMIT DROP改进 
54. 使用多个Distinct 
55. 充分利用反向索引扫描 
56. 当心Like语句 
57. 正确地设置聚簇索引 
58. 必要时使用Group By表达式 
59. 当心表空间扫描 
60. 不要问你已经知道的信息 
61. 注意查询中的表顺序 
62. 使用左外联接而不是右外联接 
63. 检查不存在的行 
64. 使用存储过程 
65. 不要只是为了排序而选择某一列 
66. 尽可能限制结果集 
67. 批量删除时充分利用DB2 V8的改进DISCARD功能 
68. 充分利用DB2 LOAD工具完成批量插入 
69. 注意视图、嵌套表表达式和公共表表达式的物化 
70. 考虑压缩数据 
71. 考虑并行性 
72. 让STDDEV、STDDEV_SAMP、VAR和VAR_SAMP函数远离其他函数 
73. 考虑使用ROWID数据类型(V8)或RID函数(V9)直接访问行 
74. 用真实统计和一定的数据测试查询以反映性能问题 
75. 在WHERE子句中指定前导索引列 
76. 尽可能使用WHERE而不是HAVING完成筛选 
77. 尽可能考虑Index Only处理 
78. DB2 V9中表达式上的索引  
79. 考虑DB2 V9 Truncate语句 
80. 在子查询中使用DB2 V9 Fetch First和Order by 
81. 利用DB2 V9乐观锁定 
82. 使用DB2 V9 MERGE语句 
83. 了解DB2 NOFOR预编译选项 
84. 考虑Select Into中使用Order By 
85. 尽量编写布尔项谓词 
86. 编写传递闭包 
87. 避免用Order By排序 
88. 尽可能使用联接而不是子查询 
89. 当心Case逻辑 
90. 在Order By子句中充分利用函数 
91. 了解你的DB2版本 
92. 了解日期运算 
93. 了解大容量插入选择 
94. 了解Skip Locked Data(V9)避免锁定 
95. 对输入流排序 
96. 如果需要真正的唯一性,可以使用V8 Generate_Unique函数 
97. 了解声明临时表的新选项 
98. 执行Get Diagnostics时需要注意 
99. 适当地对In列表排序 
100. 结合Select的Update和Delete(V9) 
101. 只在必要时执行SQL语句 
102. 充分利用内存中的表 
103. 避开通用型SQL语句 
104. 避免不必要的排序 
105. 了解表达式和列函数 
106. 结合使用谓词时要注意 
107. 为搜索查询增加冗余谓词 
108. 充分利用改进的动态缓存(V10) 
109. 尝试当前提交来避免锁(V10) 
110. 尝试使用系统时态表获取历史数据(V10) 
111. 尝试使用业务时态表获取历史数据(V10) 
112. 了解分级函数 (V10) 
113. 充分利用扩展指示符(V10) 
114. 得到更大的时间戳精度(V10) 
115. 尝试Index Includes(V10) 
116. 使用With Return to Client(V10) 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论23 条评论

snowmicesnowmice数据库管理员calabar
2013-11-13 13:35
《DB2 SQL性能调优秘笈》已经有一本了,可惜没有时间来看。
freeflyfreefly软件开发工程师TRS
2013-11-04 15:04
sunpowercongsunpowercong数据库管理员BC
2013-08-14 09:39
我也买本瞧瞧
atpeace331atpeace331数据库管理员银行
2013-07-12 12:51
sunyangnj: 能不能给个链接看看。佩服老牛,都那个位置了,还坚持学习。
高级进阶DB2(第2版)——内部结构、高级管理与问题诊断
http://product.dangdang.com/product.aspx?product_id=23290630#catalog

DB2数据库性能调整和优化(第2版)
http://product.dangdang.com/product.aspx?product_id=23290630#catalog
sunyangnjsunyangnj技术经理苏宁金融研究院
2013-07-10 14:38
atpeace331: sunyang 老师,老牛的书开始预售第 2 版的了,您最近有看吗?
能不能给个链接看看。佩服老牛,都那个位置了,还坚持学习。
sunny_zhao0127sunny_zhao0127数据库管理员C.H.Robinsion
2013-07-10 13:53
好书要入手啊
atpeace331atpeace331数据库管理员银行
2013-07-10 13:15
sunyangnj: 赞同这个意见。我对老牛的优化器和执行计划的知识看了几遍,还在深度,打算都理解透了,再去看这本新书,这本新书貌似不错。
sunyang 老师,老牛的书开始预售第 2 版的了,您最近有看吗?
sunyangnjsunyangnj技术经理苏宁金融研究院
2013-07-10 09:55
atpeace331: 本书建议先把老牛的关于优化器和执行计划的知识熟读,然后测试测试测试再测试,直到把《DB2 SQL性能调优秘笈》中的 Tips 全部实验完
赞同这个意见。我对老牛的优化器和执行计划的知识看了几遍,还在深度,打算都理解透了,再去看这本新书,这本新书貌似不错。
atpeace331atpeace331数据库管理员银行
2013-07-10 09:44
本书建议先把老牛的关于优化器和执行计划的知识熟读,然后测试测试测试再测试,直到把《DB2 SQL性能调优秘笈》中的 Tips 全部实验完
iwaichiwaich软件开发工程师IBM
2013-07-09 04:33
拿到手发现书好小,好薄。。。
db2_worldlovedb2_worldlove数据库管理员zcgx
2013-07-05 15:09
秘笈啊,很小的一本书,是我买的最薄的一本书
warren_159369warren_159369系统架构师HBC
2013-07-05 15:03
在调优上问题不大,
dblotusdblotus数据库管理员IBM
2013-07-05 14:16
宝贝敏敏: 买完才发现一行小字 for z/os,呵呵
在调优上问题不大,:)
宝贝敏敏宝贝敏敏数据库管理员苏宁电器
2013-07-05 14:07
买完才发现一行小字 for z/os,呵呵
dblotusdblotus数据库管理员IBM
2013-07-05 11:26
宝贝敏敏: for z/os ,和小机有多大区别?
很不一样,但是大部分tips,是通用的,但是需要自己实验,理论结合实践嘛
宝贝敏敏宝贝敏敏数据库管理员苏宁电器
2013-07-05 10:03
for z/os ,和小机有多大区别?
lxpeng163lxpeng163项目经理哈尔滨银行
2013-07-04 22:18
浅显易懂的书就是好书
id_taosicaiid_taosicai系统运维工程师软通动力
2013-07-04 13:53
决定买下,感谢您的推荐。现在正看牛哥(新庄)的秩序渐进DB2
thuanqinthuanqin其它ibm
2013-07-03 19:40
已入~希望lz能多推荐点书,大数据方面的希望也能推荐点
taylor840326taylor840326数据库管理员中国百盛集团
2013-07-03 16:15
入一本看看。
junfajunfa软件开发工程师北京
2013-07-03 09:38
很不错,很详细啊
jeffbeckjeffbeck数据库管理员某银行
2013-07-02 14:29
已经入手了一本
shlei6067shlei6067联盟成员数据库管理员NJ
2013-07-01 13:36
db2的书籍不多,精品的也不多,作者推荐的看目录应该挺不错,有时间买一本看看。
Ctrl+Enter 发表

相关文章

相关问题

相关资料

X社区推广