SQL Server擴充事件(Extended Events)-- 效能注意事項

來源:互聯網
上載者:User

標籤:監控   影響   

SQL Server擴充事件(Extended Events)-- 效能注意事項

 

使用 CREATE EVENT SESSION 將擴充事件會話放置在一起時,需要認真正確配置一些設定,因為它們可能會在無意中對效能產生影響。首先需要決定是以同步還是非同步方式消耗事件。正如您所料,同步目標對所監控代碼的效能產生的影響要大過非同步目標。

 

如前所述,同步消耗某個事件時,觸發該事件的代碼必須一直等待,直到該事件被消耗為止。顯然,如果事件消耗是一個複雜的過程,則這可能會降低代碼的效能。

 

例如,在一個每秒處理數千個小事務的繁忙系統中,同步消耗 sql_statement_completed 事件及捕獲查詢計劃動作很可能會對效能產生負面影響。另外還要記住,謂詞始終是同步執行的,因此應注意不要為效能關鍵代碼觸發的事件建立過於複雜的謂詞。

 

另一方面,您可能會被強制同步消耗事件。要計算某個特定事件的出現次數,最簡單的方法很可能是使用 synchronous_event_counter 目標。

 

您必須考慮的第二件事情是如果決定使用非同步目標,那麼該如何配置事件緩衝。事件緩衝的預設可用記憶體數為 4MB。事件被觸發,隨後被目標消耗,期間的預設調度延遲為 30 秒。這意味著如果您希望每 10 秒產生一些事件統計資料,則必須對延遲時間進行調整。

 

對用於緩衝事件的記憶體進行分區的方法是將其綁定到事件緩衝設定。預設情況下是為整個執行個體建立一組緩衝區。在 SMP(對稱式多處理器)和 NUMA(非統一記憶體訪問)電腦中,這可能會使處理器不得不等待訪問記憶體,從而導致出現效能問題。

 

第三個注意事項是如何處理事件丟失。在定義擴充事件會話時,可指定事件是否可以“丟失”。這意味著如果沒有足夠的記憶體來緩衝某個事件,則可將其直接丟棄。預設設定是允許丟棄單個事件,但也可以允許整個事件緩衝區都丟失(適用於事件緩衝區很快就被填滿的會話),甚至還可以指定任何事件都不得丟失。

 

使用最後一個選項時應格外注意,因為它會強制觸發事件的代碼一直等待,直到有足夠的緩衝區記憶體來儲存該事件為止。設定此選項幾乎肯定會對效能產生不利影響。請注意,如果無意間啟用了此選項,伺服器仍會擁有足夠的響應能力讓您能夠禁用此設定。

 

通常,您需要通盤考慮這些選項。實際上我並沒有辦法為您提供通用的最佳方法,我能做的只是向您強調深入領會它們,否則您可能會遇到效能問題。



本文出自 “SQL Server Deep Dives” 部落格,請務必保留此出處http://ultrasql.blog.51cto.com/9591438/1599381

SQL Server擴充事件(Extended Events)-- 效能注意事項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.