1. 管理公司一臺服務器,上面放的東西挺多的.有一天有個哥們告訴我如今程序卡的厲害.我給他說,是時候讀點優化的書了.別一天到晚沒個正形,如今寫的程序卡的跑不動.他說我本地程序員
是好好的,跑的很快.我說別扯那麼多沒用的,服務器不比你的本子強得多.待灑家上去看看.不看不知道一看嚇一跳,CPU佔用在95上下.開個程序是不卡,可整點有些時間是卡的一匹.這就使人很難受了.sql
原本服務器上也沒有什麼,就一個網站和幾個數據庫.那一個個分析吧,打開任務管理器和資源監視器,CPU佔用達到93,這個仍是普通,有時間到98 99.數據庫
2. 這不要了親命了嗎,打開資源監視器看看什麼佔用的最多吧.一看果真是數據庫佔用最多,數據服務佔用過大編程
這個爲了重現佔用太高,我把本身建的索引都刪除掉後,sqlservr.exe立馬成爲,人羣中最靚的仔.佔用獨佔大頭.看來只有試出來絕招了.做爲面向瀏覽器編程的程序員,首先搜索一下.網上還真有建設性意見.都說是索引缺失瀏覽器
還貼心的給了一段查詢索引的語句.把查出的結果作非彙集索引,就能夠了.貼上代碼.服務器
SELECT TOP 10 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = included_columns FROM sys.dm_db_missing_index_groups g INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle ORDER BY [Total Cost] DESC;
微軟名字起的也很直白,直接叫missing_index,就是sqlserver 通過分析認爲這些字段處理和查詢是最耗時的,最好在 EqualityUsage上包含的字段上加個非彙集索引.前幾個用時是後幾名的好幾個數量級.sqlserver
加了索引立馬飛起.優化
如今優化過,耗時都在一個數量級.若是沒有優化是不一樣的幾個數量級.網站