記一次數據庫性能優化

優化前CPU運行效果:sql

 

 

優化後CPU運行效果:性能

 

 

優化前App打開時,須要加載一段時間。優化

優化後App打開時,秒開。設計

 

主要優化項以下:blog

優化項1:索引

       在最常使用的車輛詳細頁,使用很是不合理的判斷是否存在的方法,該列表有37萬條數據。it

 

 

優化項2:io

       數據表設計不合理,AKDWeb_APPTokenLog,這個執行次數很是高,邏輯讀取總次數也很是高的表,居然沒有索引。編譯

 

 

優化項3:ast

       對AKDWeb_APPStore這個表添加索引。

 

 

附:SqlServer中抓取耗時耗性能Sql的語句。

SELECT

(total_elapsed_time / execution_count)/1000 N'平均時間ms'

,total_elapsed_time/1000 N'總花費時間ms'

,total_worker_time/1000 N'所用的CPU總時間ms'

,total_physical_reads N'物理讀取總次數'

,total_logical_reads/execution_count N'每次邏輯讀次數'

,total_logical_reads N'邏輯讀取總次數'

,total_logical_writes N'邏輯寫入總次數'

,execution_count N'執行次數'

,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(st.text)

ELSE qs.statement_end_offset END

- qs.statement_start_offset)/2) + 1) N'執行語句'

,creation_time N'語句編譯時間'

,last_execution_time N'上次執行時間'

FROM

sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st

WHERE

SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(st.text)

ELSE qs.statement_end_offset END

- qs.statement_start_offset)/2) + 1) not like '�tch%'

ORDER BY

total_elapsed_time / execution_count DESC;

相關文章
相關標籤/搜索