SQLServer数据库索引的重构方法

SQLServer数据库索引的重构方法
一个。探究思维

1、如果要确定数据库的慢速查询,可以使用以下语句列出查询语句的平均时间、总时间、CPU时间和其他信息。
选择creation_time n'statement编译时间
last_execution_time n'last执行时间
total_physical_reads n'physics读取时间总数
total_logical_reads / execution_count n'per逻辑读取次数
total_logical_reads n'logic读取时间总数
total_logical_writes n'logic写时代的总数
execution_count n'execution时代
CPU的总时间ms'used total_worker_time / 1000 N
在total_elapsed_time / 1000 n'is MS总时间
(total_elapsed_time / / 1000 execution_count)n'average时间
子串(st.text,(QS。statement_start_offset / 2)+ 1,
(案例statement_end_offset
当数据长度(1 st.text)
其他qs.statement_end_offsetend
QS。statement_start_offset) / 2)+ 1)n'execution声明
从sys.dm_exec_query_stats QS
交叉应用sys.dm_exec_sql_text(QS。sql_handle)ST
在子(st.text,(QS。statement_start_offset / 2)+ 1,
((statement_end_offset案例
当数据长度(1 st.text)
其他qs.statement_end_offsetend
QS。statement_start_offset) / 2)+ 1)不喜欢%提取%
为了total_elapsed_time / execution_count desc;

2、列出数据库中每个表的数据量,需要运维人员对业务有足够的了解,知道哪些表是最大的查询,并在前台查看磁盘使用情况

三.要查看表片段的情况,可以使用命令

dbcc showcontig

你可以看到表扫描密度仅为33.52%(最好是100%,每个表页填充数据),远低于最好的计数,即表利用率很低,它可以扫描一页,现在可能需要扫描三页,增加查询时间;和逻辑的碎片,碎片有很多领域(一般认为超过30%需要优化,也就是说)相同的页面,数据量小,许多碎片,使用太多的资源数据库。

4、根据您对业务的理解,找出最多的查询表。通过比较数据、查询时间和碎片度,可以确定表是否需要对碎片进行分类和重建索引,从而提高数据库性能

重建指数是:

使用{数据库名称}

在{表名称}上更改索引;

改造后,同一个表nwme_company_index,再次查询表碎片的案例研究结果如下:

可以看出,密度已经改变到96.9%,逻辑碎片几乎什么也没有。

5。现在我们可以看到在完成片段之后查询性能是否优化了。一旦我们运行了第一个点上列出的命令,我们就可以看到查询语句所用的平均时间已经减少到将近一半:

现在你可以到前台实际体验优化的效果。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部