适合sql server 2005以后的版本,监控语句,你可以先看看数据库中的这个表的insert、update、delte的情况,然后再做出决定,是否要调整fillfactor到小于100 use 你的数据库 go SELECT db_name(database_id), object_name(object_id),
我用的是SQL Server 2000,我是有挺多页分裂,但我想不通的是,我的个聚集索引数字是持续增长,为什么在这个表的insert、update、delete 还会出现页分裂?
我用的是SQL Server 2000,我是有挺多页分裂,但我想不通的是,我的个聚集索引数字是持续增长,为什么在这个表的insert、update、delete 还会出现页分裂?当当前的页放不下,你要插入的这条记录,那么当前的也就会分裂,这个时候要申请一个新的页,把一部分的记录放到新的页中,这个就是页分裂。同样的,如果你update了,而update的字段的值比原来的大,那么导致这个页放不下,update之后的这条记录,也会导致页分裂。
use 你的数据库
go
SELECT db_name(database_id),
object_name(object_id),
leaf_insert_count, --插入次数(在叶子级别的页中的)
leaf_delete_count, --删除次数(在叶子级别的页中的)
leaf_update_count, --更新次数(在叶子级别的页中的)
leaf_allocation_count, --页的分裂次数(在叶子级别的页中的)
leaf_page_merge_count, --页的合并次数(在叶子级别的页中的) --每多少次插入和更新操作,会导致页的分裂,
--如果这个比例很大,那就应该考虑把填充因子fillfactor设置小于100%
leaf_allocation_count * 1.0 /(leaf_insert_count+leaf_update_count)
FROM sys.dm_db_index_operational_stats
(db_id(), object_id('数据库名.dbo.表名'), NULL, NULL)
我用的是SQL Server 2000,我是有挺多页分裂,但我想不通的是,我的个聚集索引数字是持续增长,为什么在这个表的insert、update、delete 还会出现页分裂?
我用的是SQL Server 2000,我是有挺多页分裂,但我想不通的是,我的个聚集索引数字是持续增长,为什么在这个表的insert、update、delete 还会出现页分裂?当当前的页放不下,你要插入的这条记录,那么当前的也就会分裂,这个时候要申请一个新的页,把一部分的记录放到新的页中,这个就是页分裂。同样的,如果你update了,而update的字段的值比原来的大,那么导致这个页放不下,update之后的这条记录,也会导致页分裂。