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‘)

时间: 2024-11-08 21:16:38

SQL Server 2008 基础的相关文章

sql server 2008 基础知识

一.配置管理器 1.管理服务 使用配置管理器可以启动.停止.重新启动.继续或暂停服务. 服务器和客户端网络协议 2.SQLSMS 简介:SQLSMS是一个集成环境,用于访问.配置.管理和开发SQL Server的所有组件. 注册服务器:为客户机确定一台SQL Server数据库所在的机器,及服务器. 4.Sqlcmd工具 sqlcmd通过OLE DB与服务器进行通信,使用sqlcmd工具可以在命令提示符窗口中输入T-SQL语句,调用系统过程和脚本文件. T-SQL脚本文件是一个文本文件,可以包含

SQL Server 2008 中文版标准教程 清晰扫描 PDF版 [121M]下载

内容介绍: 本书全面介绍了SQL Server 2008中文版数据库管理和应用的知识.本书共分12章,介绍数据库与SQL Server 2008基础知识,数据查询和管理,SQL Server 2008数据库的创建.配置和管理,数据类型.列属性.表数据完整性,Transact-SQL语言基础.常用函数和SQL Server 2008中Transact-SQL语言增强功能等,使用XML查询技术,存储过程与触发器,操作架构.索引和视图,SQL Server的安全机制,SQL Server备份与恢复,使

SQL Server 2008空间数据应用系列一:空间信息基础

转自:http://www.cnblogs.com/beniao/archive/2011/01/18/1933412.html Microsoft SQL Server 2008 提供了全面性的空间支持,可让组织通过具空间功能的应用程序来无缝地取用.使用及扩展以位置为基础的数据,最后可协助用户做出更好的决策.空间分析是一项非常复杂的工作,包含一系列学术内容:地理.数学.天文.图形等.虽然在使用SQL Server 2008的空间特性中不必要深入研究关于地理.数学.天文以及图形等学科,但如果你想

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

[by:yy] 无论我们学什么呢,都要讲究一个Why,一个How.那么我们为什么要学SQL呢?无非就那么几点. 1.为了适应其他技术,和其他技术配对而学. 我个人的理解呢,只要在IT行业,无论你学什么,或者做什么工作.都离不开数据库.而学习数据库呢,又太文字化了,看的心里就烦.我是很抵触文字的.看着一大排一大排的字,就怕.可能是大天朝的教育所致.已经怕了学生生涯了. 2.为了适应社会而学. 随便找个招聘信息,都会有标注需要会SQL语言啊.了解MySql呀.会搞Oracle呀.所以呢,为了能在找工

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

原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识. SQL Server 2

SQL Server 2008空间数据应用系列二:空间索引(Spatial Index)基础

原文:SQL Server 2008空间数据应用系列二:空间索引(Spatial Index)基础 在前一篇博文中我们学习到了一些关于地理信息的基础知识,也学习了空间参照系统,既地球椭球体.基准.本初子午线.计量单位.投影等相关理论知识,我们可以使用这些空间参照系统组件来定义一系列应用于地球空间上的几何图像来表示地理空间中的特定功能,表示着地球上一个一个特定的位置点. 本篇主要介绍地理空间索引的概念以及微软SQL Server 2008 R2中的空间索引的应用. 一.空间索引 空间索引是指依据空

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

插入数据 T-SQL提供了几种数据插入的语句:INSERT VALUES.INSERT SELECT.INSERT EXEC.SELECT INTO及BULK INSERT. INSERT VALUES语句: INSERT INTO dbo.Orders(orderid, orderdate, empid, custid) VALUES(10001, '20090212', 3, 'A'); SQL Server 2008增强了VALUES语句的功能,允许在一条语句中指定由逗号分隔开的多行记录:

实战基础技能(23)--------SQL Server 2008 无法保存表的更改

MS SQL Server 2008 在建完表后,如果要重新设计表,如修改字段长度,就会提示:“当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示:不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项”.如才能直接保存对表的更改?打开Microsoft SQL Server Management Studio 菜单栏 “

SQL Server 2008中文版关系数据库基础与实践

SQL Server 2008集成开发环境.数据库.数据库表.功能强大的T-SQL查询功能.报表服务.分析服务和集成服务,然后讲解了如何利用索引.视图.函数.存储过程.游标及触发器来管理和提高T-SQL的查询和操作功能http://www.readnovel.com/novel/99350/19.htmlhttp://www.readnovel.com/novel/99350/20.htmlhttp://www.readnovel.com/novel/99350/21.htmlhttp://ww