频繁大数据量删除插入对索引的影响

xibmg 2017-06-17 08:59:43
由于之前系统设计的问题,会对一个表进行频繁的删除和插入操作,导致索引碎片增加很快,而且这个表数据量很大,索引除了聚集索引外还有四五个非聚集索引,检索效率是越来越差。除了定期rebuild index (会花费很长时间,而且对磁盘损耗大)之外,还有没有其他好的优化解决办法?
...全文
4084 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2018-03-27
  • 打赏
  • 举报
回复
经常删除,修改是不适合太多索引
吉普赛的歌 2018-03-27
  • 打赏
  • 举报
回复
如果只是苦恼于碎片整理,那么 #7 版主的建议是对的。 原因是, 如果分区了, 则每个分区的索引其实是相对独立的, 在整理碎片时, 整理热数据所在的分区索引就可以了。 另外, 频繁的增、删、改, 对大表来说是不适合的, 死锁、堵塞的可能性会大许多。 必须分一个当天表或当月表出来专用于增、删、改。效率高, 整理碎片也快许多。
OwenZeng_DBA 2018-03-27
  • 打赏
  • 举报
回复
引用 5 楼 xibmg 的回复:
[quote=引用 3 楼 z10843087 的回复:] [quote=引用 楼主 xibmg 的回复:] 由于之前系统设计的问题,会对一个表进行频繁的删除和插入操作,导致索引碎片增加很快,而且这个表数据量很大,索引除了聚集索引外还有四五个非聚集索引,检索效率是越来越差。除了定期rebuild index (会花费很长时间,而且对磁盘损耗大)之外,还有没有其他好的优化解决办法?
1.重建索引的时候选择填充因子,可以减少重建索引的频率 2.索引碎片特别多,是不是聚集索引选择的不合理。你们的聚集索引是随机的吗,比如GUID。 3.数据归档,把不要的历史数据做好归档[/quote] 聚集索引是一个日期字段。表的数据量级在千万,而且是不断增加。[/quote] 如果是日期字段是聚集索引,可以考虑使用分区表。比如 每个月一个分区
xibmg 2018-03-20
  • 打赏
  • 举报
回复
引用 2 楼 AcHerat 的回复:
不知道楼主所说的数据流量大致在多少数量级,参考方案: 1、表数据不做删除,记标志位,记录数据是否使用; 2、当日业务完全空闲时间,将有用的数据放入一张bak表存放,原表备份删除 3、将bak表的表名更改为原表名,创建索引
表的数据量级在千万以上,很大,每天导入新表DROP旧表这个方案不太可行。
xibmg 2018-03-20
  • 打赏
  • 举报
回复
引用 3 楼 z10843087 的回复:
[quote=引用 楼主 xibmg 的回复:] 由于之前系统设计的问题,会对一个表进行频繁的删除和插入操作,导致索引碎片增加很快,而且这个表数据量很大,索引除了聚集索引外还有四五个非聚集索引,检索效率是越来越差。除了定期rebuild index (会花费很长时间,而且对磁盘损耗大)之外,还有没有其他好的优化解决办法?
1.重建索引的时候选择填充因子,可以减少重建索引的频率 2.索引碎片特别多,是不是聚集索引选择的不合理。你们的聚集索引是随机的吗,比如GUID。 3.数据归档,把不要的历史数据做好归档[/quote] 聚集索引是一个日期字段。表的数据量级在千万,而且是不断增加。
吉普赛的歌 2017-07-13
  • 打赏
  • 举报
回复
怀疑你的主键(聚集索引)是 GUID , 建议你先贴出 建表SQL和相关的索引脚本。
OwenZeng_DBA 2017-07-13
  • 打赏
  • 举报
回复
引用 楼主 xibmg 的回复:
由于之前系统设计的问题,会对一个表进行频繁的删除和插入操作,导致索引碎片增加很快,而且这个表数据量很大,索引除了聚集索引外还有四五个非聚集索引,检索效率是越来越差。除了定期rebuild index (会花费很长时间,而且对磁盘损耗大)之外,还有没有其他好的优化解决办法?
1.重建索引的时候选择填充因子,可以减少重建索引的频率 2.索引碎片特别多,是不是聚集索引选择的不合理。你们的聚集索引是随机的吗,比如GUID。 3.数据归档,把不要的历史数据做好归档
AcHerat 2017-07-13
  • 打赏
  • 举报
回复
不知道楼主所说的数据流量大致在多少数量级,参考方案: 1、表数据不做删除,记标志位,记录数据是否使用; 2、当日业务完全空闲时间,将有用的数据放入一张bak表存放,原表备份删除 3、将bak表的表名更改为原表名,创建索引
湘_老胡 2017-07-13
  • 打赏
  • 举报
回复
可以试试置删除标志,然后定期做批量删除操作。但这样需动到业务。

22,299

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧