SQLServer2008笔记

摘要:   今天我们继续学习三个有关计划更新的概念:Halloween Protection、Split/Sort/Collapse和Merge阅读全文
posted @ 2012-04-07 15:07 邀月 阅读(699) | 评论 (0) 编辑
摘要: 前一节主要介绍了索引的更新机制和索引的转向指针,以及更新的位置和修改单个行(或单索引对应的若干行)。如果你修改单个操作(Insert,update,Delete)或使用(BCP、BLUK Insert)命令的多行,而表有多个索引时,你得关注另外一些主题。SQL Server 2008提供了两种维护表索引的策略:表级修改和索引级修改。查询优化器会根据预计的执行成本决定使用相应的策略。阅读全文
posted @ 2012-03-14 15:57 邀月 阅读(743) | 评论 (2) 编辑
摘要: 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归。在SQL server 2005中,我们可以使用CTE,当然,好的数据结构设计可以避免你使用CTE,请看这里:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html 如果你是一个数据库设计新手,那么在sql server 2008中可以使用新的原生分层结构数据hierarchyid。阅读全文
posted @ 2011-05-03 14:14 邀月 阅读(782) | 评论 (2) 编辑
摘要:  我们已经了解SQL Server如何在一个Heap中存储数据。现在我们了解一下SQL Server在一个Heap数据修改时内部实际如何操作。对于一个有聚集索引的表的数据修改,我们在第七章中讨论。一般来说,在一个表中应该有一个聚集索引。某些情况下你也许会觉得Heap是一个更好的选择,但请注意,希望做出彻底测试后再做决定。现在,我们只关注Heap中数据的修改。 阅读全文
posted @ 2010-08-08 00:23 邀月 阅读(1603) | 评论 (0) 编辑
摘要: DBCC CHECKDB之外的一致性检查命令,包含:DBCC CHECKALLOC,DBCC CHECKTABLE,DBCC CHECKFILEGROUP,DBCC CHECKCATALOG,DBCC CHECKIDENT,DBCC CHECKCONSTRAINTS阅读全文
posted @ 2010-08-04 19:52 邀月 阅读(1343) | 评论 (2) 编辑
摘要: DBCC CHECKED用四种方式输出信息: 1、常规输出,由一个错误的信息和邮件组成的列表指向发布DBCC CHECKDB命令的连接。 2、SQL Server 错误日志的一条信息 3、Windows 应用程序事件日志的一个项。 4、在sys.dm_exec_requests目录视图的进度报告信息阅读全文
posted @ 2010-08-03 20:44 邀月 阅读(1174) | 评论 (2) 编辑
摘要: 前面几篇主要介绍了per-table一致性检查,本文我们关注交叉表的一致性检查,主要包括:Service Broker一致性检查,交叉目录(cross-catalog)一致性检查,索引视图一致性检查,XML索引一致性检查,空间索引(spatial- index)一致性检查。阅读全文
posted @ 2010-08-03 00:33 邀月 阅读(1313) | 评论 (3) 编辑
摘要: 上篇关注元数据一致性检查、页审核、数据和索引页处理;本文我们继续了解per-table逻辑一致性检查,将继续关注:列处理、文本页处理。阅读全文
posted @ 2010-08-01 20:25 邀月 阅读(1007) | 评论 (2) 编辑
摘要:  上文简单介绍了原始的系统目录一致性检查和分配的一致性检查。本文我们继续了解per-table逻辑一致性检查。这部分内容较多,分为上中下三篇:上篇关注元数据一致性检查、页审核、数据和索引页处理;中篇关注:列处理、文本页处理,下篇关注交叉页一致性检查。阅读全文
posted @ 2010-08-01 08:24 邀月 阅读(1062) | 评论 (0) 编辑
摘要: 从本文开始,我们了解几种类型的一致性检查,先来看两个,原始的系统目录一致性检查和分配的一致性检查。阅读全文
posted @ 2010-07-31 13:10 邀月 阅读(1027) | 评论 (0) 编辑
摘要: 上文主要介绍有效处理数据库的几个方法:事实生成、使用查询处理器。本文关注批处理、读取数据页到进程和并行机制。阅读全文
posted @ 2010-07-28 00:03 邀月 阅读(1142) | 评论 (5) 编辑
摘要:   上文简要介绍了获取一个持久视图、磁盘空间冲突和使用数据库快照的替代方案,本文将关注有效处理数据库的几个方法:事实生成、使用查询处理器、批处理、读取数据页到进程和并行机制。阅读全文
posted @ 2010-07-22 22:25 邀月 阅读(1345) | 评论 (6) 编辑
摘要:   本文将继续关注计划向导的后半部分,包括:计划指南的管理、计划指南的考虑因素、计划指南的有效性、从计划缓存中冻结计划。这也是计划缓存和重编译的最后一节。阅读全文
posted @ 2010-07-20 00:34 邀月 阅读(1177) | 评论 (7) 编辑
摘要:   上文主要介绍计划缓存的时机和计划缓存冲突。本文将继续关注计划指南(Plan Guide)和优化指示(Optimization Hints),由于篇幅所限,计划指南分两部分,第一部分包括:优化提示、计划指南的意图、计划指南的类型。第二部分包括:计划指南的管理、计划指南的考虑因素、计划指南的有效性、从计划缓存中冻结计划。本文是第一部分。阅读全文
posted @ 2010-07-18 07:34 邀月 阅读(1189) | 评论 (2) 编辑
摘要:   当任何人提到检查一个SQL Server数据库的一致性时,头脑中的第一反应该是“DBCC”。在SQL Server 7.0中,DBCC代表数据库一致性检查,但在随后版本,SQL Server 2000中,微软改变了定义,它变成了数据库控制台命令。这也折射出一个事实:DBCC命令已经远远超出一致性检查的范围。阅读全文
posted @ 2010-07-17 00:35 邀月 阅读(1399) | 评论 (2) 编辑
摘要:   上文主要介绍了缓存大小管理、缓存项的成本(Costing of Cache entries),本文我们继续关注计划缓存的时机和计划缓存冲突。阅读全文
posted @ 2010-07-15 23:22 邀月 阅读(1158) | 评论 (0) 编辑
摘要:   上文主要介绍了已编译计划、执行上下文和计划缓存元数据和几个常用的系统函数,并介绍了几个葵花宝典级的调优语句。本文将继续关注缓存大小管理、缓存项的成本(Costing of Cache entries)。阅读全文
posted @ 2010-07-13 00:21 邀月 阅读(1300) | 评论 (7) 编辑
摘要:   上文我们了解计划缓存内部操作的第一部分-缓存存储。今天我们继续关注已编译计划、执行上下文和计划缓存元数据相关的几个非常有用的系统函数和视图。阅读全文
posted @ 2010-07-11 23:31 邀月 阅读(1334) | 评论 (6) 编辑
摘要:   上文我们了解编译对象和重编译的起因:Correctness-Based Recompiles,Optimality-based Recompiles。今天我们继续关注如何从缓存中移除计划和计划缓存内部操作。阅读全文
posted @ 2010-07-10 10:13 邀月 阅读(1011) | 评论 (0) 编辑
摘要:   上文我们了解编译对象和重编译的起因之一:Correctness-Based Recompiles,现在我们继续了解重编译的另一个起因:Optimality-based 重编译。阅读全文
posted @ 2010-07-06 19:45 邀月 阅读(1060) | 评论 (0) 编辑
摘要:   上文我们了解简单参数化查询的不足和预查询(Prepared Queries),现在我们了解编译对象和重编译的原因。阅读全文
posted @ 2010-07-04 20:54 邀月 阅读(1037) | 评论 (4) 编辑
摘要:   前文主要提到简单参数化和强制参数化。下面我们继续了解简单查询的不足和预查询(Prepared Queries)阅读全文
posted @ 2010-07-03 02:25 邀月 阅读(1012) | 评论 (0) 编辑
摘要:   在这一节,我们将继续关注Adhoc和参数化:简单参数化和强制参数化。阅读全文
posted @ 2010-07-01 23:18 邀月 阅读(1090) | 评论 (0) 编辑
摘要:   通过第八章的查询优化,我们大致了解SQL Server中的查询优化进程及查询执行的一些细节。因为查询优化通常是复杂和耗时的进程,SQL Server频频受益于重用已经生成并保存在计划缓存中的查询计划,而不是每次都产生一个新计划。当然,如果前一个计划不理想,SQL Server还是会生成一个新的计划。当然也可以强制生成新计划。在这一章,我们将关注SQL Server 2008的计划缓存,了解它是如何组织的。阅读全文
posted @ 2010-06-29 23:34 邀月 阅读(1281) | 评论 (2) 编辑
摘要:   本文继续关注分区表(Partitioned Tables) 和数据仓库(Data Warehousing)。SQL Server 2005针对分区表的并行查询的执行有一个局限性。APPLY操作符的使用在对扫描每个交互的分区时有限制,即允许SQL Server 2005对每个表只允许一个线程。虽然也允许并行查询。但大多数情况下还是被忽略了。而且,APPLY模式不考虑分区的大小差异,仍然使用一个线程处理一个最大或最小的分区。阅读全文
posted @ 2010-06-29 12:13 邀月 阅读(1252) | 评论 (7) 编辑
摘要:   本文继续了解索引视图(Indexes View)。注意:虽然索引视图是在SQL Server 2000中已经加入,但只有SQL Serer 2008的企业版才支持索引视图的匹配。阅读全文
posted @ 2010-06-24 00:54 邀月 阅读(1174) | 评论 (3) 编辑
摘要:   前几篇主要介绍了查询结构优化中的几个关键概念:统计(Statistics)、基准估计(Cardinality estimation)和成本(costing) ,今天开始真正进入主题:索引选择。阅读全文
posted @ 2010-06-21 23:51 邀月 阅读(1149) | 评论 (3) 编辑
摘要:   上篇主要介绍了筛选统计和字符串统计、基线估计,本文将关注Limitation和Costing阅读全文
posted @ 2010-06-20 14:59 邀月 阅读(1258) | 评论 (2) 编辑
摘要:   上篇主要列举了统计的概念和统计的设计、统计的浓度。本文将关注筛选统计和字符串统计、基线估计。 阅读全文
posted @ 2010-06-20 00:29 邀月 阅读(1020) | 评论 (0) 编辑
摘要:   上篇介绍了架构优化,下来我们一起了解几个非常重要的概念:统计(Statistics)、标量评估(Cardinality estimation)和成本(costing)阅读全文
posted @ 2010-06-06 16:09 邀月 阅读(1563) | 评论 (8) 编辑
摘要:   上文主要介绍了查询可选计划的存储和操作符如(计算标量、计算序列 等)。现在我们继续来了解优化架构。阅读全文
posted @ 2010-05-16 16:52 邀月 阅读(1233) | 评论 (6) 编辑
摘要:   上文主要介绍了查询优化的入门基础和查询优化器如何浏览查询计划中的规则和属性。现在我们继续来了解查询可选计划的存储和操作符如(计算标量、计算序列等)。阅读全文
posted @ 2010-05-16 07:06 邀月 阅读(453) | 评论 (0) 编辑
摘要:   SQL Server内置的查询优化器负责对一个给定的SQL语句执行判断作出最合理的查询计划。因为查询优化器并没有过多的内容展示于外界,因此不像SQL引擎中的其他组件那样为人熟知。第八章(The Query Optimizer)主要介绍查询优化器及其工原理,本章读完后,你应该会加深在较高层次的优化架构的理解,并熟知一个特定的查询计划为什么会被查询优化器所采用。此外,你应该能解决特定的案例,比如查询优化器没有选择预期的执行计划,以及什么因素影响了优化器的选择。 第八章是本书的另外核心技巧之一--查询优化,它在底层数据存储的基础上,主要介绍对已有的SQL语句或查询进行针对性的测试和优化方法。这里有一些实用的技巧。阅读全文
posted @ 2010-05-12 00:38 邀月 阅读(1508) | 评论 (9) 编辑
摘要:    这一节我们继续了解稀疏列的物理存储。阅读全文
posted @ 2010-05-09 13:02 邀月 阅读(1271) | 评论 (6) 编辑
摘要:   上文简单介绍了 filestream数据存储和修改的一些特性。下面我们来继续了解SQL Server 2008中新增的稀疏列(sparse column)。阅读全文
posted @ 2010-05-09 07:35 邀月 阅读(380) | 评论 (4) 编辑
摘要:   上文简单介绍了filestream数据的基础,本文继续了解FileStream的一些特性。阅读全文
posted @ 2010-05-08 00:22 邀月 阅读(1060) | 评论 (3) 编辑
摘要:   上文简单介绍了不限长度的Large Object Data存储形式,以及存储在数据行的LOB数据。本文简要介绍MAX-Length数据及添加数据到LOB列的存储,另外还有filestream数据的基础。阅读全文
posted @ 2010-05-06 08:01 邀月 阅读(1376) | 评论 (5) 编辑
摘要:   上文简单介绍了限制长度的Large Object Data存储形式,本文将介绍不限长度的Large Object Data存储形式。阅读全文
posted @ 2010-05-03 23:44 邀月 阅读(1150) | 评论 (4) 编辑
摘要:   第五章《Table》和第六章《Indexes:Internals and Management》我们主要讨论了“规则行”在表和索引中的存储机制,第五章中我们了解到规则行是以“固定变量”的格式存储,SQL Server提供了另外一种格式存储数据,即“列描述”(Column Descriptor)。它能存储一些特殊的值(包括固定变量和不能适应常规8-KB大小页面的CD格式的值),在这章中。我们将讨论一些超过正常数据行 大小限制的数据,它们被存储作为"行溢出"或Large Object(LOB)数据。此外,SQL Server 2008还提供了一种常规列的复杂存储列,即稀疏列(Sparse Columns),和新阅读全文
posted @ 2010-05-03 12:05 邀月 阅读(1147) | 评论 (0) 编辑
摘要:   前面我们主要了解Inserting/Deleting Rows 时SQL Server的内部存储机制,这一篇我们来看看Update Rows的内部机制。SQL Server更新行有多种方式,自动并隐性地为特定的操作选择最快的更新策略,在决定策略时,SQL Server评估将要影响行的数量,行是如何(通过查询或索引恢复、或者索引本身)被访问的,索引键是否发生变化等。更新在两种情况下发生:一是在原始行改变一列值到新值。二是delete紧跟着一个insert。Update能被查询处理器或存储引擎管理。阅读全文
posted @ 2010-04-16 09:04 邀月 阅读(1316) | 评论 (16) 编辑
摘要:   上一篇我们主要了解Inserting Rows 时SQL Server的内部存储机制,这一篇我们来看看Deleting Rows的内部机制。当你从一个表中删除行时,你必须考虑数据页和索引页发生了什么。记住:数据实际上是聚集索引的叶级,从表中删除一个带有聚集索引的行意味着同时在非聚集索引的叶级中删除同样的行。从一个Heap中删除行有些差异,它其实是从一个索引的非叶级页删除。阅读全文
posted @ 2010-03-25 15:22 邀月 阅读(932) | 评论 (0) 编辑
摘要:   前几篇文章主要介绍了聚集索引和非聚集索引的物 理存储结构,及几类特殊的索引:1、计算列索引和索引视图(Indexes On computered Columns and Indexed View);2、全文索引(Full-Text Indexes);3、空间索引(Spatial Indexes);4、XML索引(XML Indexes) 下面这几篇主要是关于数据修改的内部结构。阅读全文
posted @ 2010-03-14 22:59 邀月 阅读(1100) | 评论 (4) 编辑
摘要:   前几篇文章主要介绍了非聚集索引的物理存储结构,今天我们来看看几类特殊的索引: 1、计算列索引和索引视图(Indexes On computered Columns and Indexed View) 2、全文索引(Full-Text Indexes) 3、空间索引(Spatial Indexes) 4、XML索引(XML Indexes)阅读全文
posted @ 2010-03-03 20:47 邀月 阅读(1146) | 评论 (6) 编辑
摘要:   前文简要介绍了堆中的非聚集索引行(Nonclustered index rows on a Heap)和聚集表中的非聚集索引行(Nonclustered index rows on a Clustered table) 今天我们继续学习三类特殊的非聚集索引行: 1、非惟一的非聚集索引行(nonunique Nonclustered index rows) 2、使用包含性列的非聚集索引行(nonunique Nonclustered index rows with included Columns(using include))阅读全文
posted @ 2010-02-23 00:24 邀月 阅读(981) | 评论 (9) 编辑
摘要:   上节主要学习了聚集索引的物理结构以及查找数据行的方式。本节我们了解几类特殊的非聚集索引的结构以及数据存储的方式。阅读全文
posted @ 2010-02-21 09:13 邀月 阅读(1254) | 评论 (6) 编辑
摘要:   上节主要学习了聚集健的依赖(The Dependancy on the Clustering key)和建立非聚集索引的聚集键的三个基本要点:聚集键应该是惟一的、窄的、静态的。本节我们继续深入学习物理的索引结构(physical Index Structures),这一部分分为两类:一、聚集索引的物理结构。二、 非聚集索引的物理结构。今天我们先来看第一部分: 聚集索引的物理结构阅读全文
posted @ 2010-02-08 01:43 邀月 阅读(1407) | 评论 (8) 编辑
摘要:   上篇主要介绍了索引中的基本概念B-Tree及分析索引的工具,下面我们继续学习理解索引的存储结构。这一节太费时间了,整整看了两个晚上,将近六个小时.累啊!阅读全文
posted @ 2010-02-04 21:51 邀月 阅读(1480) | 评论 (19) 编辑
摘要:   在第五章主要学习了table的内部存储结构,第七章《Special storage》中将继续深入学习存储机制,那将是本书最难理解的一章。第六章主要介绍index的基础知识,第八章是《query Optimizer》,下面我们先来看看第六章:Indexes:Internals and Management。这一章分为三部分:阅读全文
posted @ 2010-02-02 12:29 邀月 阅读(1385) | 评论 (2) 编辑
摘要:   上篇文章中提到五种典型的存储结构:一、固定长度的行;二、可变长度的行;三、Null和可变长度列;四、时间和日期数据;五、SQL_variant 数据。今天我们继续来看可变长度的行的存储:阅读全文
posted @ 2010-02-01 15:41 邀月 阅读(1312) | 评论 (2) 编辑
摘要:   前面我们学习了数据页 的存储结构以及如何检查一个data page。那么如何查询一个物理页呢?记得在上篇文章时,我们介绍了了一个未公开的DBCC PAGE命令。该命令前需要知道页的具体参数,如--查询testdb数据库的第一个文件的第157页的数据页--DBCC PAGE (testdb,1,157,1);那么,如何查询第一页(first_page)的值呢?阅读全文
posted @ 2010-01-31 22:32 邀月 阅读(1147) | 评论 (2) 编辑
摘要:   上篇我们主要学习了元数据(metadata)的存储及利用目录视图来查询这些信息,今天,我们继续学习数据页(Data Pages)。阅读全文
posted @ 2010-01-28 14:25 邀月 阅读(1173) | 评论 (1) 编辑
摘要:   在上一篇中,我们主要学习了如何在系统视图中察看我们创建表和索引的元数据信息,今天,我们继续学习数据存储的元数据结构。阅读全文
posted @ 2010-01-27 00:06 邀月 阅读(1382) | 评论 (9) 编辑
摘要:   最近断断续续看《Microsoft Sql server 2008 Internals》,中文名是《深入解析Microsoft Sql server 2008》,由于邀月拿到的是英文版,所以一边看,一边查字典,顺便把一些理解记下来,翻译或理解不对之处,敬请指出。3w@love.cn。欢迎交流。兼以本文作为目录索引及序。   这里邀月可以保证的是:这个系列95%以上的内容都是邀月根据原英文纯手工翻译,加上自己的理解和注释,没有借助任何翻译工具。除了已注明的出处MSDN 之外,如有转载,请注明来自邀月工作室。   本系列文章预计约60-70篇,文章中所有示例,邀月均在SQL Server 2008环境下运行通过阅读全文
posted @ 2010-01-26 08:35 邀月 阅读(4789) | 评论 (18) 编辑
摘要: 本文将描述SQl server如何实际存储数据,此外,还大概浏览一下用以跟踪数据存储信息的系统元数据。你可以不理解数据存储的内部机制,而有效的使用SQL Server,但了解这些对你开发一个高效的应用程序很有帮助。阅读全文
posted @ 2010-01-25 11:32 邀月 阅读(1342) | 评论 (14) 编辑
摘要: 在这章中,我们将对表(table)作一些简单的介绍,并继续深入察看表的一些内部结构。简单的说,表是具有一些特定意义的实体的集合。表不仅是MS SQL Server的心脏,也是更广泛意义上的关系数据模型更是如此。在SQL Server中,表通常更多的与Base table同义,称它为基表是为了和视图(View)所对应的virtual table相区别。这些virtaul table并不存放真正的实体数据。阅读全文
posted @ 2010-01-23 16:13 邀月 阅读(814) | 评论 (2) 编辑
摘要:   在上篇文章中,主要简单介绍了数据库的存放机制和snapshot的简单应用。下来我们看看一个基本的系统数据库Tempdb,关于tempdb,补充一些MSDN没有的东东。阅读全文
posted @ 2010-01-23 09:14 邀月 阅读(1642) | 评论 (16) 编辑
摘要:   在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是:如果你的系统是用Raid设备直接存放data文件,则不需要再借助FileGroup,因为FileGroup会增加数据库会影响复杂性和灵活性。如果你的磁盘空间许可,你仍然不需要使用FileGroup,只要在同一个驱动器内增加一连串的File就可以了。阅读全文
posted @ 2010-01-20 16:56 邀月 阅读(775) | 评论 (3) 编辑
摘要:   最近断断续续看《Microsoft Sql server 2008 Internals》,中文名是《深入解析Microsoft Sql server 2008》,由于邀月拿到的是英文版,所以一边看,一边查字典,顺便把一些理解记下来,翻译或理解不对之处,敬请指出。3w@love.cn。欢迎交流。兼以本文作为目录索引及序。阅读全文
posted @ 2010-01-19 12:27 邀月 阅读(3059) | 评论 (12) 编辑