本文属于SQL Server T-SQL执行内幕系列
前言:
本文主体内容来自于:http://rusanu.com/2013/08/01/understanding-how-sql-server-executes-a-query/但是经常打不开,本人又在:https://www.codeproject.com/Articles/630346/Understanding-how-SQL-Server-executes-a-query 发现几乎跟原文一模一样的内容,并且网上大多收录这篇而不是原文。 不过提醒一下第二篇文章中对原文进行了少量的删减。
一开始想直译,但是看了内容之后,觉得略微有点难读,加上自己对这方面也有点想法,所以打算把它作为一个引子,在不影响作者内容跟信息准确性的前提下添加自己的看法。所以如果读者看原文的话,会发现跟原文并不完全一样。
本文不适合初学者看,除非你的学习能力很好,但是不代表所谓的初学者不能看,我只是给个忠告而已,因为内容较深入,可能会影响兴趣。
目录:
本系列内容较多,原文本身已经很多,加上个人添加的内容之后,篇幅过长,不便于阅读,过长的篇幅也容易造成阅读疲劳,所以我把它们拆分:
- T-SQL执行内幕(1)——简介
- T-SQL执行内幕(2)——Tasks、Workers、Threads、Scheduler、Sessions、Connections、Requests
- T-SQL执行内幕(3)——解析和编译
- T-SQL执行内幕(4)——优化
- T-SQL执行内幕(5)——执行
- T-SQL执行内幕(6)——返回结果
- T-SQL执行内幕(7)——内存授予
- T-SQL执行内幕(8)——数据存储
- T-SQL执行内幕(9)——数据访问
- T-SQL执行内幕(10)——读取数据
- T-SQL执行内幕(11)——Read Ahead
- T-SQL执行内幕(12)——锁、闩锁
- T-SQL执行内幕(13)——写数据
- T-SQL执行内幕(14)——DDL
- T-SQL执行内幕(15)——备份、还原和DBCC
- T-SQL执行内幕(16)——总结
SQL Server数据库引擎有两大核心:存储引擎(Storage Engine)和查询处理器(Query Processor),也叫关系引擎(Relational Engine)
- 存储引擎:负责在磁盘与内存之间以某种方式读取数据。并且在这个过程中维护数据一致性及并发性。
- 查询处理器/关系引擎:接受提交到SQL Server的所有查询,并为其选择最佳执行计划,然后把执行计划执行最后返回结果。
正文:
如果你是一个普通数据库开发人员,那了解增删改查的T-SQL写法基本上就能开始工作了,但是随着时间的推移和外界的不断变化,除非你转到别的领域,不