一个。探究思维
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。现在我们可以看到在完成片段之后查询性能是否优化了。一旦我们
运行了第一个点上列出的命令,我们就可以看到查询语句所用的平均时间已经减少到将近一半:
现在你可以到前台实际体验优化的效果。