2010-10-19 88 views
4

如果在那裏有Sybase ASE專家,我想知道是否有辦法讓Sybase跟蹤它收到的所有查詢。Sybase ASE - 跟蹤查詢/進程

我目前有一個程序運行,通常在啓動7小時後開始顯示一些奇怪的行爲。我想知道Sybase目前在做什麼,以便我可以解決這個問題。

我正在使用Sybase ASE 15.5。而且我的監控服務器無法啓動,原因很奇怪。

回答

7

是的,跟蹤有幾種方法可以收到Sybase收到的所有查詢。

然而,鑑於你問題的第二部分,據我所知,你需要(1)瞭解查詢正在進行(2)可以監視其他活躍的spid方面活動SPID和...如果這還不夠,那麼(3)監視服務器;不是跟蹤全部查詢。因此,我將深入討論並回應Sybase提供的跟蹤元素。

您與ASE的連接是服務器進程ID或spid。

  1. SET SHOWPLAN ON和SET NOEXEC ON,和 執行您的查詢。這會給你 很好的洞察,你的SQL實際上在做什麼 ,在 的掩護下。這是必不可少的 要求,開發人員應該熟悉 , 和測試前要求的東西。每當感覺你的查詢很慢時,總是檢查正在執行的I/O:SET STATISTICS IO ON。

  2. sp_who; SP_LOCK;並觀看你的spid 滴答作響,掛起,等待 鎖定,阻止,其他spids都支持它等等。這是每個開發者 應該始終使用的基本集合 。 (全部) 服務器。它可以以兩種方式使用: 作爲一個持續的監控工具,例如 搶一整小時的統計數據,這是 服務器配置的基礎 的變化;並作爲快照,例如。搶 服務器的一個5分鐘snapsot 當你的進程正在運行,並且當它不是 ,並且檢查 差異。通常這是針對 有經驗的DBA而不是開發人員,並且您需要sa_role。

這些都在手冊中,包括在線和PDF。

七 小時是很長的時間,所以你 必須使用光標或類似的, 和處理單行,而不是 套。每7小時檢查一次,每天定時進行批量作業(轉儲,更新統計數據,重組);他們中的一些人持有桌子鎖。當然,如果服務器在Windoze上運行,所有從內存泄漏向上的奇怪事情都是標準的。至少每週至少彈出一個盒子。

由於處理負擔的順序,您應該繼續關注您的事務日誌和tempdb使用情況。

+0

嗨PerformanceDBA, 感謝您的令人難以置信的詳細回覆!我沒有機會嘗試你給我的所有3種戰術,但是sp_who和sp_lock正是我所期待的。 不幸的是,它並沒有幫助我解決我的問題。但是,它確實告訴我,Sybase的spids處於recv睡眠狀態。我的程序也在等待Sybase的一些東西,導致僵局,從而導致「奇怪的行爲」。 如果沒有太多的麻煩,我還有一個問題給你:有沒有辦法跟蹤Sybase ASE客戶端? (不是數據庫)現在我要試用Ribo。 – Jdcc 2010-10-28 21:24:52

+1

如果它們僵持不下,它們正在等待可以很容易識別的資源;他們將不會「recv睡眠」,這意味着睡覺,等待從客戶端收到一個數據包。在*時候檢查AWAITING COMMAND列和sp_lock *。 Ribo是追蹤的一種方法;注意輸出量。另一個是審計。兩者都有設置人工成本,但審計是可配置的。 – PerformanceDBA 2010-10-29 13:58:05

+0

是的,我的程序絕對處於「recv sleep」和「AWAITING COMMAND」狀態。 sp_lock不顯示與我的進程相關的任何內容。我在猜測我的客戶端和服務器最終彼此等待,而不是被實際的鎖阻止。如果ASE客戶端上沒有跟蹤,那麼我將不得不監視我的程序發送給客戶端的內容,並將我的客戶端發送給服務器的SQL。我會嘗試審計,因爲它聽起來像不使用中間人的方法。我不知道它是可配置的,所以感謝那個信息:) – Jdcc 2010-10-29 21:10:59