随笔分类 -  01.数据库基础

Database Essentials
摘要:我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾SQL Server。在这篇文章里,我想给你概括讲下在Linux上,SQL Server的起步是怎样 阅读全文
posted @ 2016-11-29 10:26 Woodytu 阅读(4997) 评论(4) 推荐(12) 编辑
摘要:大家可能都听说了,微软在几个星期前宣布发布可以在Linux上完整运行的SQL Server!如果你想看下在Linux上SQL Server如何运行,进行查询是什么样的体验,可以看下下面的视频。 阅读全文
posted @ 2016-06-14 09:28 Woodytu 阅读(795) 评论(0) 推荐(1) 编辑
摘要:从去年4月到现在的开博以来,我写了不少关于MS SQL的文章,感觉自己对MS SQL越来越了解,今天下午在一个SQL Server的技术群文档看到了一个文档,是黄钊吉上传的,我对他的印象,总觉得他是MS SQL的大牛,不管是从他的博客,还是出版的《 数据库技术丛书:SQL Server性能优化与管理 阅读全文
posted @ 2016-03-17 08:01 Woodytu 阅读(5212) 评论(31) 推荐(23) 编辑
摘要:在今天的文章里,我想给你快速展示下当我们从表里删除记录时,在SQL Server里发生了什么。首先我们来创建一个简单的表,在8KB的页上刚好能插入4条记录。1 -- Create a simple table where 4 records fit onto 1 page2 CREATE TABLE... 阅读全文
posted @ 2015-07-12 08:46 Woodytu 阅读(1233) 评论(1) 推荐(1) 编辑
摘要:这篇文章我想谈下空值位图掩码(NULL bitmap mask) ,并揭开它的神秘面纱。空值位图掩码是在存储引擎层为列是否存储NULL值进行编码。它是一个简单的位图掩码,如果值是1的话,表示这列有NULL值,如果是0的话,表示这列有具体的值(非NULL值)。这样的解释听起来非常直接,但当我们进一步分... 阅读全文
posted @ 2015-06-17 08:00 Woodytu 阅读(1676) 评论(1) 推荐(4) 编辑
摘要:自SQL Server 2005起,我们有了READ COMMITTED SNAPSHOT ISOLATION level (RCSI) 和SNAPSHOT ISOLATION level (SI)两个事务隔离级别。当你使用这些事务隔离级别时,读操作(SELECT语句)在读的时候不需要S锁(共享锁)... 阅读全文
posted @ 2015-06-16 08:05 Woodytu 阅读(1334) 评论(3) 推荐(7) 编辑
摘要:这段时间谈了很多页,现在我们可以看下这些页在数据文件里是如何组织的。我们都已经知道,SQL Server把数据文件分成8k的页,页是IO的最小操作单位。SQL Server把数据文件里的第1页标记为0。在所有数据库文件里,前面的9个页面(到页号8)都是如下显示一样的顺序,第10个页(页号9)是启动页... 阅读全文
posted @ 2015-05-11 20:49 Woodytu 阅读(2913) 评论(3) 推荐(3) 编辑
摘要:今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式(bulk logged recovery model)如何运作的。批量更改映射(Bulk Changed Map:BCM):SQL Server使用BCM页来跟踪自上次完全备份后,被大容量日志操作修改... 阅读全文
posted @ 2015-05-10 21:02 Woodytu 阅读(2214) 评论(2) 推荐(0) 编辑
摘要:我们已经讨论了各种不同的页,包括数据页、GAM与SGAM页、PFS页,还有IAM页。今天我们来看下差异变更页(Differential Change Map:DCM),还有差异备份(differential backups)。差异变更页(Differential Change Map:DCM ) :... 阅读全文
posted @ 2015-05-10 16:48 Woodytu 阅读(2405) 评论(1) 推荐(3) 编辑
摘要:在以前的文章里,我们讨论了数据页,GAM和SGAM,还有PFS页。今天我们一起来讨论下索引分配映射(Index Allocation Map:IAM)页。在SQL Server 2005和以后的版本里,分配单元(allocation units)以下三个类型:IN_ROW_DATA用于存储堆分区或索... 阅读全文
posted @ 2015-05-09 18:35 Woodytu 阅读(4649) 评论(2) 推荐(5) 编辑
摘要:我们已经讨论了GAM与SGAM页,数据页(Data Page) ,现在我们来看下页面自由空间页(Page Free Space (PFS))。PFS在数据文件里是第2页(页号1,页号从0开始),接在文件头(file header,页号0)后。GAM与SGAM是用来跟踪区分配情况,而PFS页是用来跟踪... 阅读全文
posted @ 2015-05-08 20:41 Woodytu 阅读(4019) 评论(2) 推荐(0) 编辑
摘要:我们知道SQL Server在8K 的页里存储数据。分区就是物理上连续的8个页。当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时,页会分配给它用来存储数据。GAM(Global Allocation Map)和SGAM(Shared Global Allocation Map)页用... 阅读全文
posted @ 2015-05-08 14:53 Woodytu 阅读(5615) 评论(3) 推荐(3) 编辑
摘要:在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下。数据记录存储我们具体的数据,换句话说,它存在堆表里,或者存在聚集索引的叶子节点。数据记录结构是为了让SQL Server更高效的管理数据。我们来看... 阅读全文
posted @ 2015-05-07 21:54 Woodytu 阅读(4194) 评论(0) 推荐(5) 编辑
摘要:我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。页有不同的类型,像数据页,GAM,SGAM等。在这文章里,让我们一起来理解下数据页结构。SQL Server把数据记录存在数据页(... 阅读全文
posted @ 2015-05-07 14:03 Woodytu 阅读(12086) 评论(16) 推荐(17) 编辑
摘要:一个简单的更新查询现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么。这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答。庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的。这次存取方法(Acc... 阅读全文
posted @ 2015-05-04 21:43 Woodytu 阅读(3131) 评论(0) 推荐(5) 编辑
摘要:计划缓存(Plan Cache)如果SQL Server已经找到一个好的方式去执行一段代码时,应该把它作为随后的请求重用,因为生成执行计划是耗费时间且资源密集的,这样做是有有意义的。如果没找到被缓存的计划,然后命令分析器(Command Parser)在T-SQL基础上生成一个查询树(query t... 阅读全文
posted @ 2015-05-02 23:20 Woodytu 阅读(2530) 评论(7) 推荐(7) 编辑
摘要:为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程。最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程。关系和存储引擎如图所示,SQL Server被分为2个主要引擎:关系引擎和存储引擎。关系引擎有时也被称为查询处理器,因为它的主... 阅读全文
posted @ 2015-05-01 23:36 Woodytu 阅读(4057) 评论(0) 推荐(6) 编辑
摘要:恭喜您!在你面前就只剩下几页了,然后你就可以完成第1个月的SQL Server性能调优培训了。今天我将讲下页的一些限制,还有为什么你会喜欢这些限制,同时也会讨厌这些限制。正如你在第2周学到的,数据页始终是8kb 的大小,而且你只能在上面存储8060 bytes。你的记录大小指示你在一个页里可以存储多... 阅读全文
posted @ 2015-04-29 23:43 Woodytu 阅读(2224) 评论(6) 推荐(1) 编辑
摘要:哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识。今天我会讲下SQL Server中的区管理,因为这是个很重要的话题,我们会在第23周探讨TempDb。在最高级别来讲,区就是一组8张8k大小的页。因此一个区始终是64k的块(连续页)。... 阅读全文
posted @ 2015-04-29 22:06 Woodytu 阅读(2355) 评论(3) 推荐(2) 编辑
摘要:上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。 页是SQL Server的基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定查询所需... 阅读全文
posted @ 2015-04-29 20:46 Woodytu 阅读(4833) 评论(5) 推荐(8) 编辑