前言
近年来,随着系统的数据量逐年增加,并发量也成倍增长,SQL性能越来越成为IT系统设计和开发时首要考虑的问题之一。SQL性能问题已经逐步发展成为数据库性能的首要问题,80%的数据库性能问题都是因SQL而导致。面对日益增多的SQL性能问题,如何下手以及如何提前审核已经成为越来越多的IT从业者必须要考虑的问题。
现在将8年专职SQL优化的经验和心得与大家一起分享,以揭开SQL优化的神秘面纱,让一线工程师在实际开发中不再寝食难安、谈虎色变,最终能够对SQL优化技能驾轻就熟。
编写本书也是对多年学习积累的一个总结,鞭策自己再接再厉。如果能够给各位读者在SQL优化上提供一点帮助,也不枉个中辛苦。
2014年,作者罗炳森与有教无类(网名)联合编写了《Oracle查询优化改写技巧与案例》一书,该书主要侧重于SQL优化改写技巧。到目前为止,该书仍然是市面上唯一一本专门讲解SQL改写技巧的图书。
因为《Oracle查询优化改写技巧与案例》只专注于SQL改写技巧,并没有涉及SQL优化的具体思想、方法和步骤,本书可以看作是对《Oracle查询优化改写技巧与案例》一书的进一步补充。
本书共10章,各章的主要内容如下。
第1章详细介绍了SQL优化的基础知识以及初学者切实需要掌握的基本内容,本章可以帮助初学者快速入门。
第2章详细讲解统计信息定义、统计信息的重要性、统计信息相关参数设置方案以及统计信息收集策略。
第3章详细讲解执行计划、各种执行计划的使用场景以及执行计划的阅读方法,通过定制执行计划,读者可以快速找出SQL性能瓶颈。
第4章详细讲解常见的访问路径,这是阅读执行计划中比较重要的环节,需要掌握各种常见的访问路径。
第5章详细讲解表的各种连接方式、各种表连接方式的等价改写以及相互转换,这也是本书的核心章节。
第6章介绍单表访问以及索引扫描的成本计算方法,并由此引出SQL优化的核心思想。
第7章讲解常见的查询变换,分别是子查询非嵌套、视图合并和谓词推入。如果要对复杂的SQL(包含各种子查询的SQL)进行优化,读者就必须掌握查询变换技巧。
第8章讲解各种优化技巧,其中涵盖分页语句优化思想、分析函数减少表扫描次数、超大表与超大表关联优化方法、dblink优化思路,以及大表的rowid切片优化技巧。掌握这些调优技巧往往能够事半功倍。
第9章分享在SQL优化实战中遇到的经典案例,读者可以在欣赏SQL优化案例的同时学习罗老师多年专职SQL优化的经验,同时学到很多具有实战意义的优化思想以及优化方法与技巧。
第10章讲解全自动SQL审核,将有性能问题的SQL扼杀在“摇篮”里,确保系统上线之后,不会因为SQL写法导致性能问题,同时还能抓出不符合SQL编码规范但是已经上线的SQL。
本书对系统面临性能压力挑战的一线工程师、运维工程师、数据库管理员(DBA)、系统设计与开发人员,具有极大的参考价值。
为了满足不同层次的读者需求,本书在写作的内容上尽量由浅入深,前5章比较浅显易懂,适合SQL优化初学者阅读。通读完前5章之后,初学者能够对SQL优化有一定认识。后5章属于进阶和高级内容,适合有一定基础的人阅读。通读完后5章的内容之后,无论是初学者或是有一定基础的读者都能从中获益良多。
本书专注于SQL优化技巧,因此书中不会涉及太多数据库系统优化的内容。
虽然本书是基于Oracle编写的,但是关系型数据库的优化方法都殊途同归,因此无论是DB2从业者、SQL SERVER从业者、MYSQL从业者,亦或是PostGre SQL从业者等,都能从本书中学到所需要的SQL优化知识。
因水平有限,本书在编写过程中难免有错漏之处,恳请读者批评、指正。联系我们的方式如下:692162374@qq.com(QQ好友数已达上限)或者327165427@qq.com(新开QQ账号)。
如果有读者想进一步学习SQL优化技能或者一些公司或机构需要开展SQL优化方面的培训,都可以联系作者。另外,作者还开设了实体培训班,可以实现零基础学习,结业后可以顺利就业,欢迎联系罗老师。