社区
疑难问题
帖子详情
索引内部碎片外部碎片说明
clicsullivan
2012-06-25 03:48:24
大侠,能否告诉索引内部碎片和外部碎片的区别。内部碎片好理解,可是外部碎片实在是无法理解。外部碎片也说是分页产生的,还是针对物理上的页和逻辑上的页不一致造成的。这个怎么理解呢。谢谢。
...全文
322
7
打赏
收藏
索引内部碎片外部碎片说明
大侠,能否告诉索引内部碎片和外部碎片的区别。内部碎片好理解,可是外部碎片实在是无法理解。外部碎片也说是分页产生的,还是针对物理上的页和逻辑上的页不一致造成的。这个怎么理解呢。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gogodiy
2012-06-26
打赏
举报
回复
3楼解释清晰明了,学习了。
clicsullivan
2012-06-26
打赏
举报
回复
回2楼的:page顺序和逻辑顺序一致这句话怎么理解啊?在聚集索引中插入的时候造成的page split怎么会造成page顺序和逻辑顺序不一致的情况呢。在插入的时候对于聚集索引的关键字不是会进行重排使他们一致吗。能否给个例子说明。谢谢啦
mayuanf
2012-06-25
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
2楼对于外部碎片的解释我还是没有办法理解,那分页了针对原来的页不是还是内部碎片了吗?怎么就变成外部碎片了呢。和内部碎片不是一样吗。都是一个页无法全部存放数据。
[/Quote]
创建index的时候设置fillfactor(e.g. 80),这时候的index是有内部碎片的(因为一个page只有80%的空间储存了数据),但是没有外部碎片因为page顺序和逻辑顺序一致。
另一个例子,每一个page都放满了数据,这时候是没有内部碎片。但是由于反复的insert造成很多的page split,于是有外部碎片。
clicsullivan
2012-06-25
打赏
举报
回复
2楼对于外部碎片的解释我还是没有办法理解,那分页了针对原来的页不是还是内部碎片了吗?怎么就变成外部碎片了呢。和内部碎片不是一样吗。都是一个页无法全部存放数据。
Mr_Nice
2012-06-25
打赏
举报
回复
内部碎片,就好比2居室就住了一个人,空余一间屋子。
外部碎片,就好比我有2间居室,但不在一个屋子里。
要是获取我使用的屋子平米数(提取有用的数据),
第一种,得到2居大小,再除去空余屋子的大小。
第二种,需要我从第一个屋子量量,再到第二个屋子量量,再加和面积。
所以,最好的状态就是尽量在一个屋子,而且不浪费面积。
可问题是,屋子的大小得是1024*8(1个页)的整数倍,所以,多多少少会有浪费的。 只能尽量贴近最佳状态。
大概是这样,LZ可以参考msdn看看。
mayuanf
2012-06-25
打赏
举报
回复
内部碎片是指本来page可以放100个key,但是事实才放了80个,比如fillfactor会引起内部碎片。
外部碎片是当table存有聚集索引时,当插入row时发现原page放不下,会进行page split,把page内一半的row放到一个新的page上,造成外部碎片。
黄_瓜
2012-06-25
打赏
举报
回复
参考
http://www.cnblogs.com/BlogNetSpace/archive/2008/12/03/1346743.html
SQLServer
索引
碎片
和解决方法
详细讲解了外部
索引
和
内部
索引
的检测、清理方法
MSSQL自动重建出现
碎片
的
索引
的方法分享
1.
索引
碎片
的产生? 由于在表里大量的插入、修改、删除操作而使
索引
页分裂。如果
索引
有了高的
碎片
,有两种情况,一种情况是扫描
索引
需要花费很多的时间,另一种情况是在查询的时候
索引
根本不使用
索引
,都会导致性能...
外部
碎片
和
内部
碎片
的区别
显然这个时候,三个文件都是顺次占用三个簇段(这个
说明
存放文件所用的文件系统应该是类似FAT这样的文件系统,具体参看注释1)。故而三个文件不会产生
碎片
。 现在假设你删除了B文件,这个时候A和C中间就有一块空闲...
索引
外部
碎片
和
内部
碎片
索引
碎片
实际上有2种形式:
外部
碎片
和
内部
碎片
。不管哪种
碎片
基本上都会影响
索引
内页的使用。这也许是因为页的逻辑顺序错误(即
外部
碎片
)或每页存储的数据量少于数据页的容量(
内部
错误)。无论
索引
产生了哪种类型...
外部和
内部
索引
碎片
率统计
--
外部
碎片
率>10 表示
外部
碎片
率...--
内部
碎片
率 SELECT OBJECT_NAME(dt.object_id) 表名 , si.name
索引
名 ,
外部
碎片
率=CASE WHEN dt.avg_fragmentation_in_percent>10 THEN '
碎片
率高' ELSE '正常'
疑难问题
22,209
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章