对SQLServer错误使用聚集索引的优化案例(千万级数据量)

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了对SQLServer错误使用聚集索引的优化案例(千万级数据量)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言:

半个月前发了文章 SQLServer聚集索引导致的插入性能低

终于等到生产环境休整半天,这篇文章是对前文的实际操作。 

以下正文开始:


异常:近期发现偶尔有新数据插入超时。                                                       

分析:插入条码有多种规则,导致数据表页面重排,造成性能剧烈下降。                                                       

解决方案:

将基于Barcode的聚集索引更改到ID聚集索引(使新数据始终在尾部添加,避免数据页面重排),

以损失微量Barcode查询性能,换取大幅度提升新数据插入性能。     

                                                                                            

为避免缓存干扰,进行了4次测试:

1,优化前(Barcode聚集), ID查询。

2,重启,Barcode查询。

3,优化后(ID聚集),重启,ID查询。

4,重启,Barcode查询。

 

以下是基于随机10条数据的测试用例:    

                                                       

----使用ID索引查询:                                                   

SELECT *    FROM  [MESDATANow].[dbo].[BarcodeMain]  where ID in

(38126797,37116727,39113797,39116797,37116297

,37116397,37112797,37114797,37113797,37119797)                                                      

Go    

  SELECT *        FROM [MESDATANow].[dbo].BarcodeRecord                                                   

  where ID in (116522700,116527024,116528753,113409209

,113410162,112678638,112679077  ,112942761,112943627,112942850                                               

       ,112943727,116530104,116531318,114035125,114036196)                                                      

                                                      

----使用Barcode索引查询:                                                 

  SELECT *        FROM [MESDATANow].[dbo].[BarcodeMain]                                                    

  where Barcode in ('LS-21351005000408748','CH2LCHBM13523153AU'

,'CH2LCHKM1351210AEM','CH2LCHKM1351210APG', 'CH2LCHKM1351210AR0','CH2LCHKM13512107FU'

,'LS-21351005000406516','LASLCHWM13721104XF',  'BROLCHBM1391110258','CH2LCHKM1386210DV3')                     

go                                                  

SELECT *  FROM [MESDATANow].[dbo].BarcodeRecord          Where Barcode in ('LS-21351005000408748'

,'CH2LCHBM13523153AU','CH2LCHKM1351210AEM','CH2LCHKM1351210APG'

, 'CH2LCHKM1351210AR0','CH2LCHKM13512107FU','LS-21351005000406516','LASLCHWM13721104XF',                          

         'BROLCHBM1391110258','CH2LCHKM1386210DV3')          

 

数据表

数据量

聚集索引

用Barcode查询

用ID查询

读取次数

耗时(ms)

读取次数

耗时(ms)

BarcodeMain

7165446行

Barcode

438

36

468

42

ID

488

32

412

27

BarcodeRecord

15752004行

Barcode

176

28

444

35

ID

296

31

236

19

结论: 达到预期目的,耗时增加在可接受范围。

(应用主要基于Barcode查询,基于ID的查询性能大幅提升无实际意义)                                    

脚本宝典总结

以上是脚本宝典为你收集整理的对SQLServer错误使用聚集索引的优化案例(千万级数据量)全部内容,希望文章能够帮你解决对SQLServer错误使用聚集索引的优化案例(千万级数据量)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

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