2014-12-10 41 views
0

我必須在服務器上多次運行帶有不同參數(10 000+)的存儲過程。我想從腳本中並行啓動查詢。在開始新查詢之前,我想確定Sybase服務器的負載,以自動並動態地決定可以並行啓動多少個查詢。如何從腳本中確定Sybase服務器的負載

現在我計算查詢的平均響應時間,如果它增長太高,那麼我停止開始新的查詢,如果它低於預定義的值,那麼我可以開始更多的查詢。但它非常依賴於存儲過程,有時甚至依賴於傳遞給它的參數,所以我想獲得一些更爲客觀的度量,類似於由cat /proc/loadavguptime,top)返回的Linux負載平均值。 Gmake具有類似的功能可以並行運行,並且只有當加載平均值小於指定值時纔會啓動新過程(請參閱-j-l選項)。

有沒有辦法獲得一些與服務器實際負載相關的指標?

我不是管理員,我正在遠程啓動查詢。

回答

0

經過一番搜索,我找到了一個存儲過程,它可以提供有關特定服務器的系統負載的大量詳細信息。它被稱爲sp_sysmon

它提供了很多信息。其中一些可能是有用的。唯一的問題是我可以發現用戶需要SA角色來運行此存儲過程。

一個例子(在此打印幾乎所有的統計):

sp_sysmon "00:01:00", noclear, @applmon = appl_and_login 

它提供了有關所有的「引擎」的信息屬於Sybase服務器,網絡流量,磁盤I/O(甚至每個設備),工作進程,並行查詢,任務上下文切換,任務,緩衝區,事務,索引,鎖,數據緩存,內存等。

輸出可以減少,並向其中添加不同的參數。我必須玩一點,但它似乎是一個非常酷的工具。

看來'sa_role'問題也可以解決(說明Granting SA rights to non-SA users,來源:grant_sa.sql)。

但當然有一個缺點。 Documentation狀態:

的sp_sysmon有助於5至7%的開銷,同時它運行一個 單CPU的服務器上,並且更多處理器服務器上。 開銷的數量隨着CPU數量的增加而增加。