sql-server – 在日志表上不断增加的datetime列集群索引?
我不是DBA(“好!”,你会在一会儿想.)
我有一个具有这些特征和使用模式的日志记录表: >一个datetime列,用于存储日志时间戳,其值越来越大,但主要(但是大部分)是唯一的 此外,目前还有一个日常维护窗口,在此期间我可以进行表优化. 我坦白的是,不要指望这个表来挑战服务器,即使我错误地索引了它,但是似乎是一个很好的机会,要求在SQL Server集群索引上提供一些输入. 我知道聚簇索引确定实际表数据的存储(数据存储在索引本身的叶节点中),而非聚集索引是数据中的独立指针.所以在查询方面,聚集索引要比非聚集索引更快 – 一旦我们找到索引值,数据就在那里.插入和删除有成本(当然,更改聚簇索引列的值的更新将会特别昂贵). 但是我读了in this answer,删除留下的空白,除非重建索引,否则不会被清理. 所有这些都表明我应该: >将带有100%填充因子的聚簇索引放在时间戳列上 我在那里疯狂地离开了吗?我需要经常重建索引,以避免大量浪费空间吗?我应该做的事情还有其他明显的(对DBA)吗? 提前致谢. 解决方法我同意将聚簇索引放在时间戳列上.我的查询将在fillfactor上 – 100%以牺牲写入性能为代价给出最佳的读取性能.你可能会受到分页的伤害.选择较低的填充因子将延迟页面分割,牺牲读取性能,因此它可以很好地平衡您的情况.批量删除后,重新建立索引并更新统计信息.这不仅使性能保持不变,而且将索引重置为指定的fillfactor. 最后,是将非聚集索引放在其他适当的列上,但只有非常选择的列,例如不是位字段.但是请记住索引越多,影响写入性能的影响越大 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |