SQL Server 存储】的更多相关文章

4. SQL SERVER存储引擎之数据篇 (4.1)文件 (0)主数据文件.mdf初始文件大小至少为3MB,次要数据文件.ndf初始大小,同日志文件一样至少为512KB: (1)SQL SERVER在逻辑上用文件组将文件分批管理(类似ORACLE的TABLESPACE),一个文件组可以包含多个文件,插入数据时,同一个文件组内的所有文件等比例增长.例如:文件组中有两个文件,初始大小分别为100M和200M,此时插入3M的数据,file1新增(100/300)*3M=1M,file2新增(200/…
SQL Server存储ntext截断问题   最近遇到一个问题:将大文本存储到数据库的时候,查询出来的文本却被截断了. 最后百度发现,作者提出 sql server management studio 工具在查询记录的时候,如果遇到ntext和比较长的nvarchar字段,它会作自动的截断以节省显示时间,而实际上数据是完整的. 经过测试,验证确实如上所述,成功排除bug. 参考资料: https://blog.csdn.net/kwanhong/article/details/613330…
在SQL Server中执行查询时,有一些操作会产生中间结果集,例如:排序操作,Hash Join和Hash Aggregate操作产生的Hash Table,游标等,SQL Server查询优化器使用 Worktable 和 Workfile 存储中间结果集,对中间结果集执行后续操作,以响应用户的请求. 一,Spool 操作符 Spool的中文解释是假脱机,是指两个设备处于联机状态,只不过都在后台运行. 假脱机的原理,通俗的说,是在两个设备之间进行数据交换,一个设备传输数据的速度快,一个设备传…
我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或写入所有数据页.页有不同的类型,像数据页,GAM,SGAM等.在这文章里,让我们一起来理解下数据页结构. SQL Server把数据记录存在数据页(Data Page)里.数据记录是堆表里.聚集索引里叶子节点的行. 数据页由3个部分组成.页头(标头),数据区(数据行和可用空间)及行偏移数组. 在我们讨论在SQL Server里,数据页内部结构具…
我们知道SQL Server在8K 的页里存储数据.分区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时,页会分配给它用来存储数据.GAM(Global Allocation Map)和SGAM(Shared Global Allocation Map)页用来跟踪SQL Server里空间分配情况.这里我们会一起讨论下SQL Server的空间分配,还有GAM和SGAM怎么帮助我们分配空间. 在SQL Server里有2类区: 统一区(Uniform E…
在以前的文章里,我们讨论了数据页,GAM和SGAM,还有PFS页.今天我们一起来讨论下索引分配映射(Index Allocation Map:IAM)页. 在SQL Server 2005和以后的版本里,分配单元(allocation units)以下三个类型: IN_ROW_DATA 用于存储堆分区或索引分区,即heap和B-tree. LOB_DATA 用于存储大型对象 (LOB) 数据类型,例如 xml.varbinary(max) 和 varchar(max). ROW_OVERFLOW…
我们都知道数据在存储引擎中是以页的形式组织的,但数据页在不同的组织形式中其中对应的数据行存储是不尽相同的,这里通过实例为大家介绍下堆表的中特有的一种情形Forwared Records及处理方式. 概念 堆表中,当对其中的记录进行更新时,如果当前数据页无法满足更新行的容量,此时这行记录将会转移到新的数据页中,而原数据页中将会留下指针(文件号,页号,槽号)链接到新的数据页中. Code 创建测试数据 create database testpage go use testpage go creat…
在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下. 数据记录存储我们具体的数据,换句话说,它存在堆表里,或者存在聚集索引的叶子节点.数据记录结构是为了让SQL Server更高效的管理数据.我们来看下数据记录结构示意图: 上图中蓝色部分是所有数据记录部分(即系统行开销,大小基于列个数,等于或大于7 bytes),绿色部分是表结构里取决于定长/变长列的数据记录部分(实际存放的数据,大小基于实际数…
这段时间谈了很多页,现在我们可以看下这些页在数据文件里是如何组织的. 我们都已经知道,SQL Server把数据文件分成8k的页,页是IO的最小操作单位.SQL Server把数据文件里的第1页标记为0.在所有数据库文件里,前面的9个页面(到页号8)都是如下显示一样的顺序,第10个页(页号9)是启动页,用来保存数据库的元数据信息. 第1个页,页号0,是文件头(page type 15).它保存着文件头信息.每个数据文件只有一个文件头页,而且是第0页的位置.文件头页里保存着数据文件信息,例如文件大…
1.区段 区段(extent)是用来为表和索引分配空间的基本存储单元.它由8个连续的64KB数据页组成. 基于区段(而不是实际使用空间)分配空间的概念的要点: 一旦区段已满,那么下一记录将要占据的空间不是记录的大小,而是整个新区段的大小.一次分配一个区段而不是分配一个记录. 通过预分配空间,SQL Server节省为每个记录分配新空间的时间.  向当前分配的区段添加了过多的行就要占用整个区段,看起来是一种浪费,但是这种方法浪费的空间不多.但是,这些浪费的空间会累加,特别是在碎片较多的环境中. 占…
创建和配置ASP.NET Session状态数据库 在基于NLB(网络负载平衡)环境下的ASP.NET Web应用程序开发,我们需要将Session存储在数据库中供多个Web应用程序调用,以下为配置方法及注意事项. 1.创建用于存储ASP.NET Session的数据库(远程.本地皆可,使用数据库用户身份认证) 在Windows\Microsoft.NET\Framework/V2.0.50727目录下使用如下命令: 命令: aspnet_regsql.exe -S QQ442518843 -U…
1.区段 区段(extent)是用来为表和索引分配空间的基本存储单元.它由8个连续的64KB数据页组成. 基于区段(而不是实际使用空间)分配空间的概念的要点: 一旦区段已满,那么下一记录将要占据的空间不是记录的大小,而是整个新区段的大小.一次分配一个区段而不是分配一个记录. 通过预分配空间,SQL Server节省为每个记录分配新空间的时间.  向当前分配的区段添加了过多的行就要占用整个区段,看起来是一种浪费,但是这种方法浪费的空间不多.但是,这些浪费的空间会累加,特别是在碎片较多的环境中. 占…
SQL Server 2000专门提供了处理text,ntext,image字段的函数,他们是: TEXTPTR TEXTVALID READTEXT UPDATETEXT WRITETEXT 一般作用方法 写字段WRITETEXT : DECLARE @val varbinary(16) SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件 WRITETEXT 表名.字段名 @val '您的长字符串,一般都是大于8000的,不大于也行' 说明:第二行加上条件…
我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map:DCM ),还有差异备份(differential backups). 差异变更页(Differential Change Map:DCM ) :SQL Server使用差异变更页来跟踪自上次完全备份后修改过的区.DCM页在数据文件里是第6页.DCM页用来跟踪完全备份后修改过的区.DCM为每个跟踪的区使用每一位来记录.如果这个位是设置为1,…
今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式( bulk logged recovery model )如何运作的. 批量更改映射(Bulk Changed Map:BCM):SQL Server使用BCM页来跟踪自上次完全备份后,被大容量日志操作修改的区.在数据库文件里,BCM页是第7页.BCM对每个跟踪的页都有一个位.如果这个位标记是1,表示对应区在上次日志备份后因为大容量日志操作而修改.如果这个位标记为0,表示在上次日子备份后因为大容量…
好久没来院子了,最近在学java了,再加上项目比较紧,最近都没怎么上,其实这几天在项目中学到不少东西,都能写下来,但是久而久之就忘了,还是得养成及时总结的好习惯啊,还有有时间一定要把那个小项目整理下来发上来! 今天根据项目要往sql server里存一些别的语言的数据,有泰文和柬埔寨语,按照平常存进去结果查出来的都是??,后来查了一下,解决办法就是在入库的时候每个字符串插入前都加入一个N,比如N'พม่า',这样就可以了. 而且还知道了一个以前没注意的小知识,nvarchar和varchar中n…
错误信息: 中文版: 服务器无法在 'any' <ipv4> 1433 上侦听.错误: 0x277a.若要继续,请通知您的系统管理员. TDSSNIClient 初始化失败,出现错误 0x277a,状态代码 0xa.原因: 无法初始化 TCP/IP 侦听器. 无法加载或初始化请求的服务提供程序. TDSSNIClient 初始化失败,出现错误 0x277a,状态代码 0x1.原因: 初始化失败,出现基础结构错误.请检查以前的错误. 无法加载或初始化请求的服务提供程序. 由于网络库中存在内部错误…
我们已经讨论了GAM与SGAM页,数据页(Data Page) ,现在我们来看下页面自由空间页(Page Free Space (PFS) ). PFS在数据文件里是第2页(页号1,页号从0开始),接在文件头(file header,页号0)后.GAM与SGAM是用来跟踪区分配情况,而PFS页是用来跟踪页分配级别(page level allocation).当分配页时,数据库引擎使用GAM与SGAM来确定有可用页的区.一旦数据库引擎找到有可用页的区,它使用PFS页来确定在那个区里未分配的页,页…
http://blog.csdn.net/ltylove2007/article/details/21084585 http://www.cnblogs.com/anding/p/3254674.html…
http://blog.itpub.net/355374/list/1/?cid=75087…
  资料: http://www.cnblogs.com/woodytu/p/4488930.html…
http://baoqiangwang.blog.51cto.com/1554549/541298/…
这篇文章我想谈下SQL Server如何在变长列上存储索引.首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: -- Create a new table CREATE TABLE Customers ( CustomerName ) NOT NULL PRIMARY KEY, Filler ) NOT NULL ) GO -- Insert 80.000 records ) BEGIN INSERT INTO Customers VALUE…
本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程中对存储的利用建议.当然,重点还是集中在对于一个标准的AlwaysOn可用组配置过程中,对存储的选择和配置上面. AlwaysOn的部署首先建立在一个Windows Server Failover Cluster(WSFC)上.并且每个服务器通常有一个独立的SQL Server实例.另外,每个服务器…
一.概述. "流光容易把人抛,红了樱桃,绿了芭蕉“ 转眼又年中了,感叹生命的有限,知识的无限.在后续讨论索引之前,先来了解下索引和表数据的内部结构,这一节将介绍页的存储,页分配单元类型,区的存储, 最后简要介绍下系统页存储类型,页中的数据结构. 1.1  页存储 页是 sql server存储数据的基本单位,大小为8kb, 它存储的类型包括表,索引数据,分配位图,可用空间信息等,页也是可以读写的最小I/0单位.也就是如只需访问一行数据,也会把整个页加载到内存中.一页大小是8192个字节,由三块组…
在SQL Server的内部存储中,日期和时间不是以字符串的形式存储的,而是使用整数来存储的.使用特定的格式来区分日期部分和时间部分的偏移量,并通过基准日期和基准时间来还原真实的数据. 一,DateTime的内部存储 SQL Server存储引擎把DateTime类型存储为2个int32类型,共8个字节,第一个int32 整数(前4个字节)存储的是日期相对于基准日期(1900-01-01)的偏移量.基准日期是1900-01-01,当前4 字节为0 时,表示的日期是1900 年1 月1 日.第二个…
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql Server数据库 . 单就操作过程而言,Sql Server中数据库备份和恢复过程是相当简单的,可以通过Management Studio的图形界面进行操作,也可以使用几句T-SQL语句完成.但要明白备份恢复的整个过程,定制符合系统需求数据库备份方案,却需要知晓数据库的实现原理.备份和恢复是数据库…
1. 数据库组成 数据库的存储结构分为逻辑存储结构和物理存储结构. ◊ 逻辑存储结构:说明数据库是由哪些性质的信息所组成.SQL Server的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中. ◊ 物理存储结构:数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件. SQL Server数据库系统中的数据库文件是由数据文件和日志文件组成的,数据文件以盘区为单位存储在存储器中. 1.1 数据文件 数据库…
在今天的文章里,我想谈下SQL Server里非常重要的话题:SQL Server如何处理文件的文件组.当你用CREATE DATABASE命令创建一个简单的数据库时,SQL Server为你创建2个文件: 一个数据文件(.mdf) 一个事务日志文件(.ldf) 数据文件本身在有且只有一个主文件组里创建.默认情况下,在主文件组里,SQL Server存储素有的数据(用户表,系统表等).那有额外的文件和文件组的目的是什么?我们来看下. 多个文件组 当你为你的数据创建额外的文件组,你可以在它们里面存…
在实际工作中,我经常看到——有时人们定期重启SQL Server!我们都希望接受,SQL Server的定期重启并不真的是一个好主意.但在今天的文章里,我想进一步讨论下,当你定期重启你的SQL Server时,有哪些副作用. 缓冲池(Buffer Pool) 一旦你重启你的SQL Server,你会丢失缓冲池的所有内容,这是SQL Server保存来自存储子系统的数据库页.作为副作用,在重启后,你的查询会简单的更慢,因为SQL Server需要进行很多的物理I/O读,从存储子系统请求回数据到缓冲…