广告
返回顶部
首页 > 资讯 > 数据库 >SQL Server内部运行机制的原理是什么
  • 977
分享到

SQL Server内部运行机制的原理是什么

2024-04-02 19:04:59 977人浏览 八月长安
摘要

本篇文章给大家分享的是有关SQL Server内部运行机制的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(一)查询缓慢问题*,临时

本篇文章给大家分享的是有关SQL Server内部运行机制的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

(一)查询缓慢问题

*,临时表,表连接,子查询等造成的查询缓慢问题,你能解决吗?

(二)内存泄漏

如下查询了8分2秒,然后内存溢出,你知道问题吗?

SELECT * FROM BigDataTest

SQL Server内部运行机制的原理是什么

(三)经常听说如下概念,你都能解决吗?

事务(请参考我另一篇文章:浅谈sql Server事务与锁(上篇)https://www.cnblogs.com/wangjiming/p/8396986.html,ACID,隔离级别,脏读,分表分库,水平拆分,垂直拆分,高并发

一、SQL Server体系结构抽象

SQL Server内部运行机制的原理是什么

二、SQL Server体系结构概述

SQL Server核心体系结构,大致包括六大部分:客户端访问工具、SQL Server 网络接口(SQL Server Network Interface,SNI)、关系引擎、存储引擎、

磁盘和缓冲池。下图为SQL Server核心体系大致轮廓图。

SQL Server内部运行机制的原理是什么

(一)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网络协议,又叫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 Server内部运行机制的原理是什么

关系引擎,也叫查询引擎,其主要功能是负责处理SQL语句,其核心组件由三部分组成:命令分析器、查询优化器和查询执行器。

(1)命令分析器:负责解析客户端传递过来的T-SQL语句,如客户端传递一条SQL语句:SELECT * FROM BigDataTest,它会检查该语句的语法结构,若语法

错误,它会将错误返回给协议层,然后协议层将错误返回给客户端;如果语法结构正确,它会根据查询命令生成查询计划或寻找一个已存在的查询计划(先在缓冲池计划缓存中查找,若找到,则直接给查询执行器执行,若未找到,则会生成基于T-SQL的查询树,然后交给查询优化器优化)

(2)查询优化器:负责优化命令解析器生成的T-SQL查询树(基于资源的优化,而非基于时间的优化),然后将最终优化结果传递给查询执行器执行。查询优化器是基于

“资源开销”的优化器,这种算法评估多种可执行的查询方式,并从中选择开销***的方案作为优化结果,然后将该结果生成查询计划输出给查询执行器。注意,查询优化器是“基于资源开销***”而非“基于方案***”,也就是,查询优化器的最终优化结果未必是***的方案,但一定是资源开销***的方案。

(3)查询执行器:负责执行查询。假若查询执行器接收到命令解析器或查询优化器传递过来的SQL语句:SELECT * FROM BigDataTest,它通过OLE DB接口传递到存储引擎,再传递到存储引擎的访问方法。

(四)存储引擎

SQL Server内部运行机制的原理是什么

存储引擎,本质就是管理资源存储的,它的核心组件包括三部分:访问方法、事务管理器和缓冲区管理器。

(1)访问方法:访问方法本质是一个接口,供查询执行器调用(该接口提供了所有检索数据的代码,接口的实际执行是由缓冲区管理器来执行的),假若查询执行器传递一条SQL语句:

SELECT * FROM BigDataTest,访问方法接收到该请求命令后,就会调用缓冲区管理器,缓冲区管理器就会调用缓冲池的计划缓存,在计划缓存中寻找到相应的结果集,然后返回给关系引擎。

(2)缓冲区管理器:供访问方法调用,管理缓冲池,在缓冲池中查询相应资源并返回结果集,供访问方法返回给关系引擎。

(3)事务管理器:主要负责事务的管理(ACID管理)和高并发管理(锁),它包括两个核心组件(日志管理器和锁管理器),锁管理器负责提供并发数据访问,设置隔离级别等;日志管理器负责记录所有访问方法操作动作,如基本的CRUD。

(五)缓冲池

SQL Server内部运行机制的原理是什么

缓冲池驻于内存中,是磁盘和缓冲区管理器的桥梁SQL Server中,所有资源的查询都是在内存中进行的,即在缓冲池中进行的,假若缓冲池接收到缓冲区管理器传递过来的的一条SQL语句:SELECT * FROM BigDataTest,缓冲区管理器数据缓存先从磁盘数据库中取满足条件的结果集,然后放在缓冲池数据缓冲中,然后以结果集的形式返回给缓冲区管理器,供访问方法返回给关系引擎的查询执行器,然后返回给协议层,协议层再返回给客户端。注意,这里操作的是缓冲池中数据,而不是磁盘DB中的数据,并且操作的缓冲池数据不会立即写入磁盘,因此就会造成查询到结果与BD中的结果不一致,这就是所谓的脏读。

缓冲池主要包括两部分:计划缓存(生成执行计划是非常耗时耗资源的,计划缓存主要用来存储执行计划,以备后续使用)和数据缓存(通常是缓存池中容量***的,消耗内存***,从磁盘中读取的数据页只要放在这里,方可调用)

(六)磁盘

SQL Server内部运行机制的原理是什么

磁盘主要是用来存储持久化资源的,如日志资源,数据库资源和缓存池持久化支援等。

三、一个查询的完整流程

如下为一个比较完善的查询过程,即第二部分查询语句:SELECT * FROM BigDataTest 整个过程。

SQL Server内部运行机制的原理是什么

以上就是SQL Server内部运行机制的原理是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: SQL Server内部运行机制的原理是什么

本文链接: https://www.lsjlt.com/news/57808.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server内部运行机制的原理是什么
    本篇文章给大家分享的是有关SQL Server内部运行机制的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(一)查询缓慢问题*,临时...
    99+
    2022-10-18
  • JS的运行机制原理是什么
    本篇内容主要讲解“JS的运行机制原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS的运行机制原理是什么”吧!代码块: JS中的代码块是指由<script>标签分割...
    99+
    2023-06-17
  • php的运行机制和原理是什么
    PHP的运行机制和原理如下: 客户端请求:当用户在浏览器中输入一个URL并发送请求时,服务器会接收到该请求。 Web服务器:...
    99+
    2023-10-28
    php
  • redis内部运作机制是什么
    本篇内容主要讲解“redis内部运作机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis内部运作机制是什么”吧!redis 就是一个数据库,不过与传统数据库不同的是 redis 的...
    99+
    2023-06-27
  • JavaScript运行机制及原理是什么
    这篇文章主要介绍“JavaScript运行机制及原理是什么”,在日常操作中,相信很多人在JavaScript运行机制及原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • 深入剖析Golang Facade模式的内部机制与运行原理
    Golang中的Facade模式是一种结构型设计模式,用于隐藏系统复杂性并提供一个简单的接口供客户端使用。它通过为客户端提供一个统一...
    99+
    2023-10-08
    Golang
  • Linux内核的运行原理是什么呢
    Linux内核的运行原理是什么呢,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。众所周知的是,几乎整个互联网都运行在 Linux 上,从网络协议,到服务器,到你平常访问的绝大多数...
    99+
    2023-06-16
  • Node.js内置模块的运行机制是什么
    今天小编给大家分享一下Node.js内置模块的运行机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。内置模块一些栗子F...
    99+
    2023-07-04
  • Python内存管理机制的原理是什么
    今天就跟大家聊聊有关Python内存管理机制的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。小块空间的内存池在Python中,许多时候申请的内存都是小块的内存,这些小块内存...
    99+
    2023-06-17
  • java虚拟主机运行的原理是什么
    Java虚拟主机(JVM)是一个虚拟的计算机,它运行在真实计算机上。JVM可以执行Java字节码文件,将其转换为可执行代码并在操作系...
    99+
    2023-06-12
    java虚拟主机 虚拟主机
  • SQL Server中哈希索引的原理是什么
    这篇文章将为大家详细讲解有关SQL Server中哈希索引的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。当一个key-value键值对传递给一个...
    99+
    2022-10-18
  • JavaScript内存回收机制的原理是什么
    这期内容当中小编将会给大家带来有关JavaScript内存回收机制的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.用局部变量和全局变量解释GCGC在回收内存...
    99+
    2022-10-19
  • Servlet的运行原理是什么
    这篇文章主要介绍“Servlet的运行原理是什么”,在日常操作中,相信很多人在Servlet的运行原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Servlet的运行原理是什么”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • laravel运行的原理是什么
    Laravel是一个基于PHP的开源Web应用框架,它的运行原理如下: 路由:Laravel使用路由来确定请求应该由哪个控制器处...
    99+
    2023-10-28
    laravel
  • JavaScript的运行原理是什么
    这篇文章将为大家详细讲解有关JavaScript的运行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。扫描器源代码首先被分解成 chunk,每个 c...
    99+
    2022-10-19
  • SQL Server数据库复制失败的原因是什么
    SQL Server数据库复制失败的原因是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原因:在复制数据库时,必须先停止mssqlse...
    99+
    2022-10-18
  • SQL Server使用xp_cmdshell提示“不是内部或外部命令,也不是可运行的程序 或批处理文件”
        数据迁移后,使用SQL Server 2012 备份数据库,备份完成后自动压缩成rar文件,以前执行没有问题的语句现在只能做备份,而不能自动压缩并删除备份,说明问题出在执行备份后...
    99+
    2022-10-18
  • Ajax的内部实现机制是什么
    Ajax的内部实现机制主要涉及以下几个方面:1. XMLHttpRequest对象:Ajax通过XMLHttpRequest对象与服...
    99+
    2023-08-16
    Ajax
  • java运行机制指的是什么
    这篇文章给大家分享的是有关java运行机制指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java程序运行时,必须经过编译和运行两个步骤:首先将后缀名为java的源文件进行编译,最终生成后缀名为.clas...
    99+
    2023-06-06
  • MySQL排序的内部原理是什么
    MySQL排序的内部原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。排序,排序,排序 我们通过explain查看My...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作