MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SqlServer 碎片与填充因子大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_696_1@

在sql Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节

在sql Server中,比页更大的单位是区(Extent).一个区可以容纳8个页.区作为磁盘分配的物理单元.所以当页分割如果跨区后,需要多次切区。

需要更多的扫描.因为读取连续数据时会不能预读,从而造成额外的物理读,增加磁盘IO.

碎片:是指对表的插入、修改和删除等物理操作 物理 索引页被分成多块就形成了索引碎片

内部碎片受页面填充度的影响,如果碎片过多使表所占的实际页面数比无碎片时多出很多。因此在表扫描时会发生更多的I/O操作,但是索引查找时不会受到很大影响。

如表一行 最大存储字节 1000byte 大致 一页就存储8行

如果更新了 这个表的每一行 导致新数据原来的行不够存储  就需重新 更新页索引


外部碎片是因为页面的逻辑顺序和硬盘上的物理顺序不一致或是分区的不连续所造成的。这时,如果使用索引进行范围查找的话,因为要按照记录的逻辑顺序进行记取,会引起磁头来回移动。

而当分页时如果新的页和当前页物理上不连续,则还会造成外部碎片


DBCC   SHOWCONTIG 扫描信息


DBCC   dbreindex ()--碎片整理

SELECT * FROM sys.dm_db_index_physical_stats('库ID','对象ID','索引ID',NULL,'模式')

了解索引状态



填充因子:每个索引页的填满程度 如将填充因子设为 80% 20% 空余 将其余部分留作将来扩充之用,以便在向基础表中添加数据时为索引扩展提供空间

主要是减少叶级页拆分的可能 也就从而减少碎片的产生


如何设置填充因子的值并没有一个公式或者理念可以准确的设置。使用填充因子然可以减少更新或者插入时的分页,但同时因为需要更多的页,所以降低了查询的性能和占用更多的磁盘空间.如何设置这个值进行Trade-off需要根据具体的情况来看.

  具体情况要根据对于表的读写比例来看,我这里给出我认为比较合适的值:

  1.当读写比例大于100:1时,不要设置填充因子,100%填充

  2.当写的次数大于读的次数时,设置50%-70%填充

  3.当读写比例位于两者之间时80%-90%填充

大佬总结

以上是大佬教程为你收集整理的SqlServer 碎片与填充因子全部内容,希望文章能够帮你解决SqlServer 碎片与填充因子所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: