SQL Server 2008 基础

SQL流程

TDS是一种协议,一系列描述两个计算机间如何传输数据的规则。象别的协议一样,它定义了传输信息的类型和他们传输的顺序。总之,协议描述了“线上的位”,即数据如何流动。表格数据流协议是建立在TCP/IP Net-Library之上的,包含在TCP数据段内。TDS用1433端口进行数据库通信。

TDS协议位于TCP的数据段内,结构如下:

IP

TCP

TDS头

TDS的DATA段

8位头

TDS客户端使用称为表格格式数据流 (TDS) 的 SQL Server 专用应用程序级协议来发送 SQL 语句。数据包由用于 SQL Server 的 Microsoft OLE DB 提供程序、SQL Server ODBC 驱动程序或 DB-Library DLL 生成。TDS 数据包然后被传递给 SQL Server 客户端 Net-Library,客户端 Net-Library 将 TDS 数据包封装为网络协议数据包。在服务器上,服务器 Net-Library 接收网络协议数据包,且析取 TDS 数据包并将其传递给关系数据库服务器。在将结果返回给客户端时,这一进程反向执行。

表格数据流端点:一个网络协议一旦连接成功,就会创建一个对应的TDS端点,用于在客户端与服务器之间互传信息

对于这一步,性能问题可能会出现在把请求的内容转换成SQL Server能处理的格式的过程中,如果数据量大,转换开销就高,不管是从外部传入SQL Server还是从SQL Server输出到外部,都是如此

命令解释器:在TDS把请求转换成SQL Server内部可识别的格式后,首先会传到命令解释器处,这个组件会检查传入的T-SQL语法是否符合规定。如果语法符合要求,就好生成查询树传入查询优化器中

命令解释器同时也会检查是否已经存在缓存了的执行计划,如果存在,就重用;如果不存在,就让查询优化器生成执行计划

查询优化器:该组件是SQL Server的核心部分,优化器的作用是对特定的请求进行一系列的优化,使其尽可能高效地对数据进行操作,最终选择最低开销的候选计划生成预估执行计划,并传入执行器执行查询.

查询执行器:查询执行器是执行查询的组件,但是实际上并不是真正执行,而是通过OLEDB协议访问并使用一系列的指令操作存储引擎进行查询的执行操作。存储引擎才是实际的查询执行者

数据访问方法:数据访问方法是提供数据和索引的存储、查询及修改的代码集合。它包含了索引操作数据的代码,但是并不由自己去数据操作数据,而是提交请求到缓冲管理器

缓冲区管理器:缓冲管理器是管理BufferPool的组件。Buffer Pool是SQL Server内存的主要部分,它管理内存中的数据,并把适当的数据作为输出传输给(数据访问方法)。如果所需数据不在于内存中,缓冲管理器需要从磁盘读取对应的数据页到内存的数据缓存,然后把所需的数据返回给数据访问方法。在这个过程中可能会出现一种等待状态PageIOLatch

数据缓存:数据缓存是BufferPool中的最大部分,也可以说是SQL Server中占用内存最多的部分。它用于存放从磁盘加载到内存中的数据,以便后续操作使用

对于当前数据缓存中每个数据库的缓存大小情况。可以使用一个DMV来查询

——sys.dm_os_buffer_descriptors

SELECT COUNT(*) * 8 / 1024 AS 'Cached Size(MB)' ,

CASE database_id

WHEN 32767 THEN 'ResourceDb'

ELSE DB_NAME(database_id)

END AS 'Database'

FROM sys.dm_os_buffer_descriptors

GROUP BY DB_NAME(database_id) , database_id

ORDER BY 'Cached Size (MB)' DESC

事务管理器

事务管理器主要包含两部分:锁管理器和日志管理器

1、  锁管理器通过使用锁机制来保证数据的并发性和隔离性。

2、日志管理器通过预写入日志机制,保证事务的ACID特性当需要修改数据时,数据访问方法会先到事务管理器中通过对事务日志进行操作,把请求传到Buffer管理器中完成,然后返回给数据访问方法并通过事务管理器写入日志文件中

数据库事务

事务是对数据库操作的工作单元,这个单元可以是一个select语句,也可以是包含多个select、update、dalete、insert等操作的命令集合。这个集合被认为是工作单元,SQL SERVER的很多特性都是基于这个工作单元,也就是事务

关系数据库包含4大核心事务特性:原子性、一致性、隔离性和持久性,简称ACID特性

1、原子性

原子性意味着一个事务内的所有操作必须全部完成或者全部回滚。典型的例子是在ATM机上操作时,要么取钱、存钱或者转账成功,要么等于从来都没有做过任何操作。如果转账成功但是对方未收到款项,势必造成很大问题

2、一致性

一致性要求整个事务在运行的前后数据库的状态是一致的,比如库存不能为负值、性别字段的值要么为“男”要么为“女”等。为了确保事务的一致性,事务不能打破数据定义中的一致性约束

3、隔离性

隔离性保证在同一时间中,一个事务的运行不能被另外一个事务所影响。但是SQL Server实际是允许这个操作的

4、持久性

持久性意味着事务一旦成功提交,将永久存储到服务器的文件系统中,即使系统在中途崩溃,所发生的效果都不会丢失,这个会通过日志来保证

提交事务意味着永久把事务的影响记录到数据库中,回滚意味着把发生的所有操作去除,等于没有做过,不过日志其实还是会记录这个操作

关系引擎和存储引擎是SQLServer的两大组件

1、关系引擎,也叫查询处理器,因为它的主要作用是优化和执行查询。关系引擎中包含的命令解析器用于检查语法和转换查询树,而查询优化器则用于优化查询,还有一个查询执行器负责执行查询

2、存储引擎,负责管理所要数据及涉及的I/O,其中包含的数据访问方法用于处理对行、索引、也、行版本、空间分配等的I/O请求,缓冲区管理器用于管理SQL Server的主要内存消耗组件——Buffer Pool,事务管理器将通过所管理数据及维护事务的ACID属性

缓冲池:在数据库性能及管理领域中属于相当重要的一个组件,也是SQL Server中内存消耗最大的组件。缓冲池包含了SQL Server的所有缓存,如计划缓存和数据缓存等

下面是逻辑CPU 格式在不同位数的操作系统中

能支持的最大工作者线程数。

1)对于32 位操作系统:

总可用逻辑CPU<=4 时,最大工作者线程=256。

总可用逻辑CPU>4 时,最大工作者线程=256+((逻辑CPU-4)×8)。

2)对于64 位操作系统:

总可用逻辑CPU<=4 时,最大工作者线程=512。

总可用逻辑CPU>4 时,最大工作者线程=512+((逻辑CPU-4)×16)。

还有一个比较简单的方法可用于检查当前系统的最大线程数。比如执行下面的脚本:

SELECT max_workers_count

FROMsys.dm_os_sys_info

通常出现threadpool 类型的等待意味着当前有大量并行执行计划,或者遇到了CPU 瓶

颈,但是不管是什么情况,都需要经常检查这部分的数据,以确保有足够的线程可用对

于每个工作线程,在64 位系统中都要消耗2MB 的内存,在32 位系统需要消耗0.5MB 的

内存,所以SQL Server 只会在需要的时候才创建工作线程。这部分的信息可以通过sys.

dm_os_workers 这个DMV 来查看。

SELECT COUNT(*)

FROMsys.dm_os_workers

SQL Server NUMA CPU 配置

SELECT scheduler_id ,

cpu_id ,

parent_node_id ,

status

FROM sys.dm_os_schedulers

当前已缓存的计划数及所占的MB 数

SELECT COUNT(*) AS 'Number of Plans' ,

SUM(CAST(size_in_bytes AS BIGINT)) / 1024 /1024 AS 'Plan Cache Size (MB)'

FROM sys.dm_exec_cached_plans

查看缓存对象的对应内存数

SELECT objtype AS 'Cached Object Type' ,

COUNT(*) AS 'Number of Plans' ,

SUM(CAST(size_in_bytes AS BIGINT)) / 1024 /1024 AS 'Plan Cache Size (MB)' ,

AVG(usecounts) AS 'Avg Use Count'

FROM sys.dm_exec_cached_plans

GROUP BY objtype

查询数据库路径

USE master

go

SELECT physical_name

FROM   sys.master_files

WHERE  database_id = DB_ID('RJBDB')

检查证书

select name, start_date, expiry_date

from sys.certificates

where name not like '##%'

查看镜像端点

SELECT * FROM sys.endpoints e

查询镜像状态

select *

from sys.database_mirroring

where database_id=DB_ID('RJBDB')

转载于:https://blog.51cto.com/370220760/1855905

SQL Server 2008 基础相关推荐

  1. SQL Server 2008基础(自学笔记)

    导语:经过一个月的学习,简单的把SQL Server 2008的基础过了一遍,现在进行笔记分享(大一学生自学,如果有错误,欢迎大佬们指正) 一.数据库的创建 1.数据库文件 (1).主要数据文件 包含 ...

  2. 找到一本适合自己的SQL Server 2008入门书

    <SQL Server 2008基础教程> 本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程 ...

  3. Analysis Services基础知识——深入SQL Server 2008

    Analysis Services基础知识 --深入SQL Server 2008 这一节中,我们将介绍Analysis Services的体系结构,这个体系结构在SQLServer2005中建立,并 ...

  4. SQL Server 2008空间数据应用系列四:基础空间对象与函数应用

    SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1. ...

  5. SQL Server 2008从基础开始学习的历程(1)------创建表与查询

    [by:yy] 无论我们学什么呢,都要讲究一个Why,一个How.那么我们为什么要学SQL呢?无非就那么几点. 1.为了适应其他技术,和其他技术配对而学. 我个人的理解呢,只要在IT行业,无论你学什么 ...

  6. 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-08 数据修改

    插入数据 T-SQL提供了几种数据插入的语句:INSERT VALUES.INSERT SELECT.INSERT EXEC.SELECT INTO及BULK INSERT. INSERT VALUE ...

  7. PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

    DBA可以使用的工具很多,对于SQL Server来说,有查询分析器.事件探查器.命令行工具等,其中SQL语句是重中之重,但是PowerShell的出现使得DBA又多了一种选择. 测试脚本下载 本系列 ...

  8. 《Microsoft Sql server 2008 Internals》读书笔记--第九章Plan Caching and Recompilation(10)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  9. SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008

    SQL Server 2008中Analysis Services的新特性 --深入SQL Server 2008 内容简介: 本书涵盖了SQL Server 2008引入的新功能.作者之一Rober ...

最新文章

  1. 2_vuex状态管理器
  2. 帝豪gl车机系统降级_从拥有帝豪GL开始,出行的好伴侣,说说感受
  3. BZOJ3019 : [Balkan2012]handsome
  4. spring注解注入IOC
  5. 新媒体中的MCN机构是什么意思
  6. linux常用命令备忘(不断更新中...)
  7. 计算机操作系统-1days
  8. 如何安全的使用密码登录账号(在不知道密码的情况下)
  9. 中文.com域名如何申请 什么是.com域名过期
  10. 《非暴力沟通》的优秀读后感2600字
  11. Android wifi 信号强度单位 dbm
  12. Pygame中blit( )方法讲解(Surface对象)
  13. 随机创建圆形、三角形或者矩形类的对象, 存放在数组中,并计算出每个形状的面积和周长
  14. CSS(三):CSS特性与盒子模型
  15. 世界上最远的距离-泰戈尔
  16. 《仙剑奇侠传4》仙剑问答全答案
  17. 最新pdf转换器注册码
  18. MYSQL_43-48
  19. 选择手机中的一张照片或拍照上传图片(超高清晰度)
  20. 开放原子全球开源峰会Intel展区及论坛感悟

热门文章

  1. ffmpeg-从flv文件中提取AAC音频数据保存为文件
  2. php 子网掩码正则,验证子网掩码正则表达式代码范例
  3. golang time包梳理
  4. Mac Redis安装入门教程
  5. tornado 学习注意事项--00
  6. 软件工程---08.软件测试
  7. ubuntu14.04 通过PPA 安装ffmpeg
  8. Linux的SOCKET编程 简单演示
  9. linux ethtool 查看网卡状态
  10. java源代码保存在扩展名为,看完跪了