01 2013 档案
摘要:“SQL Server的Insert操作在堆表或者聚集索引表的时候,哪个效率更高?为什么高?” 之前有同事问过我这个问题,为了确保日志库的记录效率,于是我做了简单测试了,首先要先强调几点概念: 堆表:没有聚集索引的表,记录通过IAM页以及PFS页来确定哪页有空闲空间。 聚集索引表:有聚集索引的表,记
阅读全文
摘要:假如有一张大表,现在需要增加一个非聚集索引,对于DBA来说,要有预估其大小以及执行时间的估算能力,尤其对一些企业使用SSD硬盘,其硬盘空间很是宝贵,增加索引如果错误预估其大小,很有可能导致硬盘资源超出预期使用量,造成没必要的麻烦,这里只针对其预估硬盘占用空间展开讨论,行为标准8060 in_row_data,不涉及行溢出,大对象等情况。 举个例子给大家 create table Index_test (id int,a char(10))goinsert into Index_test select 100,'aaaaa'go 4000create nonclustered i
阅读全文
摘要:首先,我需要强调下,这篇主旨是揭示堆表的删除记录找回的原理,我所考虑的方面并不适用于每个人的每种情况,望大家见谅~ 很多朋友认为数据库在简单模式下,堆表误删除一条记录,是无法找回的,因为没有日志记录。其实不然,某种意义上是可以找回的,因为堆表在删除记录时,没有回收空页面的前提下,只更改了行偏移,实际数据没有被物理删除,所以利用这点,测试了下恢复数据,果然成功了,但是还有点问题没有研究出结果:如果不关闭页面校验,除了更改偏移量,删除数据时还需要更改页眉,这点还没时间去琢磨,所以恢复数据时还要能推断出页眉的16进制对应关系,有兴趣的朋友可以分享下经验给我。这里为了排除页眉的校验错误,关闭后测...
阅读全文