索引内部碎片外部碎片说明 大侠,能否告诉索引内部碎片和外部碎片的区别。内部碎片好理解,可是外部碎片实在是无法理解。外部碎片也说是分页产生的,还是针对物理上的页和逻辑上的页不一致造成的。这个怎么理解呢。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考http://www.cnblogs.com/BlogNetSpace/archive/2008/12/03/1346743.html 内部碎片是指本来page可以放100个key,但是事实才放了80个,比如fillfactor会引起内部碎片。外部碎片是当table存有聚集索引时,当插入row时发现原page放不下,会进行page split,把page内一半的row放到一个新的page上,造成外部碎片。 内部碎片,就好比2居室就住了一个人,空余一间屋子。外部碎片,就好比我有2间居室,但不在一个屋子里。要是获取我使用的屋子平米数(提取有用的数据),第一种,得到2居大小,再除去空余屋子的大小。第二种,需要我从第一个屋子量量,再到第二个屋子量量,再加和面积。所以,最好的状态就是尽量在一个屋子,而且不浪费面积。可问题是,屋子的大小得是1024*8(1个页)的整数倍,所以,多多少少会有浪费的。 只能尽量贴近最佳状态。 大概是这样,LZ可以参考msdn看看。 创建index的时候设置fillfactor(e.g. 80),这时候的index是有内部碎片的(因为一个page只有80%的空间储存了数据),但是没有外部碎片因为page顺序和逻辑顺序一致。另一个例子,每一个page都放满了数据,这时候是没有内部碎片。但是由于反复的insert造成很多的page split,于是有外部碎片。 回2楼的:page顺序和逻辑顺序一致这句话怎么理解啊?在聚集索引中插入的时候造成的page split怎么会造成page顺序和逻辑顺序不一致的情况呢。在插入的时候对于聚集索引的关键字不是会进行重排使他们一致吗。能否给个例子说明。谢谢啦 两个表组合查询数据,该怎样查询 select语句的优化问题 在SQL中如何求出比例 企业管理器无法启动 急救.数学高手请进 有人知道.gdb的数据库文件怎么能转化成sql server的数据库文件吗,急,急,急!!!!!!!! 急:SQLSERVER的数据备份!!!!!!!! 高手看过来,跨库数据数据插入,答完再给分 链接服务器和远程服务器的区别 如何修改字段名? sql server 2008连接mysql问题 如何能以只读方式查询数据库
外部碎片是当table存有聚集索引时,当插入row时发现原page放不下,会进行page split,把page内一半的row放到一个新的page上,造成外部碎片。
外部碎片,就好比我有2间居室,但不在一个屋子里。要是获取我使用的屋子平米数(提取有用的数据),
第一种,得到2居大小,再除去空余屋子的大小。
第二种,需要我从第一个屋子量量,再到第二个屋子量量,再加和面积。所以,最好的状态就是尽量在一个屋子,而且不浪费面积。
可问题是,屋子的大小得是1024*8(1个页)的整数倍,所以,多多少少会有浪费的。 只能尽量贴近最佳状态。 大概是这样,LZ可以参考msdn看看。
另一个例子,每一个page都放满了数据,这时候是没有内部碎片。但是由于反复的insert造成很多的page split,于是有外部碎片。