浅谈SQL Server内部运行机制
副问题[/!--empirenews.page--]
对付已经很认识T-SQL的读者,可能对付较专业的DBA来说,逻辑的增编削查,可能较伟大的SQL语句,都长短常简朴的,不存在任何挑衅,不值得一提,那么,SQL的哪些方面是他们的挑衅 可能软肋呢? 那就是sql优化。然而,要想成为一个好的Sql优化好手,起主要做的一件事无疑就是相识sql语句在SQL Server中是怎样执行的。在这一系列中,我们将开始sqlserver优化系列讲授,本讲为优化系列的开篇文章,在本篇文章中,我们将重点讲授SQL Server系统布局。 在正式讲授之前,我们先来看看如下题目,你是否碰着过,若你碰着过且乐成办理,那么这篇文章,你可以跳过。 为了测试必要,我们先模仿插入5亿3千多万条数据。
(一)查询迟钝题目 *,姑且表,表毗连,子查询等造成的查询迟钝题目,你能办理吗? (二)内存走漏 如下查询了8分2秒,然后内存溢出,你知道题目吗?
(三)常常传闻如下观念,你都能办理吗? 事宜与锁(请参考我另一篇文章:浅谈SQL Server事宜与锁(上篇)https://www.cnblogs.com/wangjiming/p/8396986.html,ACID,断绝级别,脏读,分表分库,程度拆分,垂直拆分,高并发等 一、SQL Server系统布局抽象 二、SQL Server系统布局概述 SQL Server焦点系统布局,大抵包罗六大部门:客户端会见器材、SQL Server 收集接口(SQL Server Network Interface,SNI)、相关引擎、存储引擎、 磁盘缓和冲池。下图为SQL Server焦点系统大抵外观图。 (一)SQL Server客户端会见器材 SQL Server客户端会见器材,提供了长途会见技能,它与SQL Server处事端基于必然的协议,使其可以或许长途会见数据库,就像在当地操纵数据库一样,如我们常常用的 Microsoft SQL Server Management Studio。 SQL Server客户端会见器材是较量多的,个中较量风行的要数Microsoft SQL Server Management Studio 和Navicat(Navicat在MySQL中也是较量常用的)了,至于其他器材,本篇文章就不罗列了,感乐趣的读者伴侣,可以查询一下。 (二)SQL Server收集协议 SQL Server收集协议,又叫SQL Server收集接口(SNI),它是组成客户端和处事端通讯的桥梁,它与SQL Server处事端基于必然协议,方可通讯,如我们在客户端输入一条查询语句SELECT * FROM BigDataTest,这条语句,只有客户端和处事端基于必然协议,方可被处事端理会,不然,被视为无效语句。 SQL Server收集协议,由一组API组成,这些API供SQL Server数据库引擎和SQL Server当地客户端挪用,如实现最根基的CRUD通讯。 SQL Server 收集接口(SQL Server Network Interface,SNI)只必要在客户端和处事端设置收集协议即可,它支持一下协议: (1)共享内存 (2)TCP/IP (3)定名管道 (4)VIA (三)相关引擎 相关引擎,也叫查询引擎,其首要成果是认真处理赏罚SQL语句,其焦点组件由三部门构成:呼吁说明器、查询优化器和查询执行器。 (1)呼吁说明器:认真理会客户端转达过来的T-SQL语句,如客户端转达一条SQL语句:SELECT * FROM BigDataTest,它会搜查该语句的语法布局,若语法 错误,它会将错误返回给协议层,然后协议层将错误返回给客户端;假如语法布局正确,它会按照查询呼吁天生查询打算或探求一个已存在的查询打算(先在缓冲池打算缓存中查找,若找到,则直接给查询执行器执行,若未找到,则会天生基于T-SQL的查询树,然后交给查询优化器优化) (2)查询优化器:认真优化呼吁理会器天生的T-SQL查询树(基于资源的优化,而非基于时刻的优化),然后将最终优化功效转达给查询执行器执行。查询优化器是基于 “资源开销”的优化器,这种算法评估多种可执行的查询方法,并从中选择开销最低的方案作为优化功效,然后将该功效天生查询打算输出给查询执行器。留意,查询优化器是“基于资源开销最优”而非“基于方案最优”,也就是,查询优化器的最终优化功效未必是最好的方案,但必然是资源开销最低的方案。 (3)查询执行器:认真执行查询。假使查询执行器吸取到呼吁理会器或查询优化器转达过来的SQL语句:SELECT * FROM BigDataTest,它通过OLE DB接口转达到存储引擎,再转达到存储引擎的会见要领。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |