SQL大資料優化上

2022-03-06 10:42:32 字數 2187 閱讀 2255

考慮到處理資料一定要結合資料庫自身實際,此篇就先從常用的輔助效能分析工具說起,sql server profiler,效能計數器,執行計畫,sql prompt等工具,也許平時都正在應用,下邊結合自身使用進行介紹。

sql server profiler

sql server提供的監控工具,在執行命令中輸入「profiler」,也可以開啟。此工具重點是監控在指定伺服器上執行的sql語句,儲存過程等一切資料庫的操作。對於分析資料庫語句執行,死鎖,效能瓶頸具有很好的作用。

開啟sql server profiler後,是乙個空框架,我們需要新增對應的跟蹤(trace),開啟檔案中的新建跟蹤,則彈出伺服器連線資訊,此監控支援本地或伺服器遠端監控,輸入對應的身份驗證資訊後,點選連線則開啟「跟蹤屬性」設定介面,此處是本節要說的重點,好多都是直接點選"執行」,發現監控的內容忽忽閃,剛選定一行,一會又出來很多看不懂得東西,其實這就是缺少跟蹤屬性的有效設定,對於乙個在伺服器上執行的trace,它監控的是好多資料庫,好多連線,如果不有效的鎖定要檢視的物件,那幾乎就是在刷屏。另外開啟trace會消耗伺服器效能,建議慎重操作。

下邊說跟蹤屬性設定的幾個點吧,個人觀點哦:

1、常規選項卡中,使用模組: starndard(預設值),選擇它就可以,無需更改

2、開啟事件選擇選項卡,一般來講我們開啟監控都是有原因的,可能是想檢視乙個儲存過程的執行,可能是t-sql等等,根據實際鎖定目標即可,不用的都可以不選取,這樣trace對這類執行直接pass,比如我們只看儲存過程,則抓圖如下:

這樣trace值跟蹤儲存過程的執行了,這還是有些不太滿足要求,此時可以考慮新增列篩選,點選「列篩選器」,進行設定,當然我一般只做如下篩選,你可以結合自己的實際進行設定篩選條件,設定loginname根據你查詢的登入名,比如sa,設定duration持續時間,大於等於2000(單位毫秒),這樣就可以把大資料量的查詢和效能較慢的給羅列出來包括cpu使用情況,read,write等引數,然後再分析對應的語句,找出問題所在,使用此工具可以快速鎖定目標進行分析。

效能計數器

監控資料庫的效能此工具也是必不可少,可以有效的監控機器的使用情況。通過sql server profiler工具中的效能監視器進行開啟,或者在執行命令中,輸入perfmon進行開啟。此工具只能檢視本機的效能情況,無法監控遠端機器。通過效能監控器可以檢視當前時間點機器的各項使用指標包括cpu,io,記憶體等等分析相關引數,找到是硬體配置過差,還是機器效能沒有得到充分的發揮,找到問題的確切原因,然後才能進行對應的優化。

在效能計數器中,預設機器上有很多計數器,此處重點需要新增如下幾個進行觀測:

1、新增計數器,在選單上,或右鍵開啟,如下圖,選擇新增計數器

2、選擇你所關注的計數器:

a、sqlserver:buffer manager計數器 ,在裡邊的引數中重點關注buffer cache hit ratio,page life expectancy選中後,點選新增,確定後就能看到實時的檢測

b、memory計數器,關注page reads/sec, pages/sec等

具體引數和對應數值代表什麼意思,可以檢視官方的解釋,很全面。

通過計數器的實時檢測,可以快捷的分析問題的所在,比如記憶體持續走高,cpu使用包含,快取無效等等。找到問題對應的優化,該新增硬體新增硬體,該優化**優化**。

執行計畫

這個很簡單了,在sql server studio中直接「查詢」選單下,選擇顯示執行計畫即可,每次的執行就可以看出來,執行計畫詳細的羅列出來每次執行的cpu使用,消耗時間,邏輯讀,物理讀等引數,分析對應的資料記錄進行優化即可,顯示執行計畫不難,難在如何對顯示結果看明白,然後找到問題所在進行優化,相關的過程需要深入檢視對應的內容。

sql prompt 4

抓個圖看看效果吧:

好了,今天就先寫這麼多,重點都是一些工具的使用,這些在日常分析問題和尋求解決方法時,很有用的,分享給大家。

非常感謝大家的溝通和交流,有問題多指正。

大資料上的流式SQL引擎 StreamCQL

華為在近期的華為開發者大會上宣布開源其流處理平台sql引擎streamcql stream continuous query language 表示歡迎更多的開發者加入社群,並將持續提供新的特性,目前在github 上已能看到其專案 和文件。在最近的一次meetup上,華為實時分析團隊高階技術專家 ...

SQL大資料量分頁效能優化

目前在進行web api唯讀介面的改造,在改造過程中,發現改在後響應時間和之前區別不是很大,通過測試結果顯示在sql的分頁功能處找到原因,並對其進行優化,優化方案如下。測試內容 此次執行時間對比採用平台資金記錄最多的使用者 user id 36062 測試次數未5次 為避免索引快取每次測試前更改 l...

mysql千萬級大資料SQL查詢優化

1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null可以在num...