首页 > 编程知识 正文

书籍推荐(SQL 优化推荐书单)

时间:2023-05-06 21:00:13 阅读:122395 作者:4495

数据库的内部结构像操作系统那么复杂。

相关内容有三个主要硬件: CPU、内存和IO。还有交互的软件、SQL和嵌入式语言

在远古的数据库APP应用程序中,只有少数科学家执行批处理。 瓶颈通常是单个硬件组件,如CPU、内存和IO。 众所周知的是老式硬盘,转速不够快,计算容易变慢。 使用RAID可以大大提高效率。 内存初期也没有很多容量,或者很贵,用于难民; CPU往往增长最快,摩尔定理在18个月内翻了一番,但那时仍达不到目前的i3速度。

所以在那个时期,跑批可能需要几天。 有一部叫《模仿游戏》的电影。 这是图灵艾伦(美国计算机协会以他的名义设立图灵奖的那个图灵)自制的破译德军密码的机器。 解读之前大家能做的就是等待机器停止。 20世纪50年代,计算机正式投入使用的时期,数据管理的概念(现在称为数据库管理)形成了。 那个年代基本上是在硬件系统上寻找性能优化的突破口。

上述故事,历史告诉了我契机。 在谈论数据库性能优化时,不能忽视机器和软件本身的体系结构。 在谈论如何优化SQL时,请不要脱离数据库软件本身的体系结构。 那么,以下书函必须同时进行阅读和训练。

SQL服务器端:

与该架构有关的分别是010-3010和010-3010。

《Microsoft SQL Server 2008 Internals》,千万不要看文生义。 全面了解SQL Server的基础结构和上层APP应用程序的本质,而不仅仅是存储。 书的体系图,很好用。 你以前用SQL server管理studio拉数据,但经常抱怨。 这个接口为什么总是那么慢,很快就会堵塞。 看了之后,你觉得,啊,这些SQL经历了这样那样的步骤,怪不得反应慢了,我好像不得不有点限制数据地跑,或者去服务器在Bulk跑。 对调谐不是也有帮助吗? 这个体系结构图在我的免费《Inside SQL Server 2005/2008 Storage Engine》上有高清版。 请下载,贴在你的电脑前,随时评论。 本书不仅是讲体系,对理解表、索引结构的知识也很重要。 一些长期开发的朋友不知道为什么要分割分区,如何分割分区。 正如您在这里看到的,分区的概念是分布式存储的APP应用程序,它有助于SQL利用多磁盘磁道地址搜索数据。

《Storage Engine》是一本讲述内幕的书。 如果你能读上一篇《知识星球》知道些什么,这本书就有助于你知道为什么要这么做。 为什么会存在Halloween Problem? 也就是说,是引起了你的SQL循环吗? 明明有结束条件,为什么却不能一直等待结束? 为什么SQL有where条件却堵塞了别人的咨询; 为什么Inner join没有比Inner Hash Join早来等一系列问题,书中有详细的例子。 除了介绍了这些SQL本身的原理外,本文档还提供了许多实质性的操作示例。 例如Inner Hash Join。 经常询问身边开发了4、5年的朋友,平时使用什么样的Hint来提高性能。 他们往往摇头,也就是说给了我一个不知道Hint是什么的回答。 那么你用过“with(nolock )”吗? “当然,这样可以快速阅读”。 所以如果你也不知道内幕是什么,读这本书就行了。

如果想再挖深一点,请看《Internals》。 这是一本关于Windows操作系统的书。 在谈论进程、线程、内存、NUMA和性能监视器时,有一些我们日常健康检查数据库时经常使用的概念。

《Storage Engine》 )如果你平时的工作,是为了快速提取数据,不想深入了解体系,想在三个月内提高自己的T-SQL优化水平,就直接看看这个吧。 在本书中,让我们从实际调整的角度来寻找为什么我们的SQL会变慢的理由。 可能的是堵车。 由于服务器资源不足,可能会出现排队,或者出现并发竞争条件。 这意味着我们访问的资源被另一个进程锁定了。 为什么我们的存储过程会突然变慢,可能是因为重新编译导致CPU变高,或者是因为参数嗅探器计划缓存(parameter sniff )。 当然,这本书还提到了逻辑处理和物理处理。 也就是说,我的微信公众号包含了执行计划的物理操作。 这是SQL创建级别,但也可以说明Join和from where对最终结果的影响。 数据库级的调整本质上是需要考虑整个库的输出质量,并平衡每个组件以满足大多数要求。

《Windows Internals》 :索引无疑是我们常规SQL优化中优先考虑的步骤。 那么你知道为什么索引会定期重建吗; 为什么不相关的字段也要放在索引中; 为什么在数据仓库中对中药使用位图索引? 这本书以索引为中心说明了大量索引的实际操作,以及为什么要这么建设。 如果不知道成本优化的概念,库中实际上有很好的索引,但是优化程序没有引用这个索引,所以我们不能导出优先级

化器使用这个索引。书中还特别指出了优化器的盲点,需要人去做调度。这本是优化器的一个缺陷,但是给了 AI 从全量数据角度去帮我们做优化决策的一个入口。

《Database System implementation》,即《数据库系统实现》。再有兴趣的同学可能需要研读一下这本书了,虽说是教科书,但是各家数据库的供应商毕竟都有自己对 SQL 引擎的实现方式。万变不离其宗,基本原理就在这里。当然你想改写数据库历史的话,还可以读一读论文,参考这篇文章:https://blog.csdn.net/liujiangce/article/details/80119795

除了书,有些博客也是值得经常看看的。我经常看的几个博客,都是上面这些书的作者的博客。

https://www.axdzm.com/blog/ 全面介绍 SQL Server 技术点的博客。当然他们也提供培训和线下支持。

https://www.red-gate.com/simple-talk/sql/ SQL 洪门,相信大家用过很多他家的工具了,虽然有可能是盗版的。

http://www.sqlservercentral.com/blogs 这是一个 SQL 论坛,很多年了,几十万的 SQL 技术爱好者云集于此。

http://zydmht.com/ 专为调优而开的博客。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。