簡體   English   中英

Sybase輪詢性能影響

[英]Sybase polling performance impact

我們有一個Sybase ASE簡單表,只有一列,如下所示

Table Name: Items
+------------+
|  itemId    | 
+------------+
| ABCDEFGH1  |
| ABCDEFGH2  |
+------------+
itemId is the primary key. 

生產者將以不確定的速率在該表中填充數據。

我們有一個使用者(Java進程),它通過執行以下操作不斷地輪詢該表(使用JDBC):

SELECT TOP 5000 itemId FROM Items ORDER BY itemId desc

並且這些itemIds將在成功處理之后(例如每200毫秒)由使用者稍后刪除。 我們可以假設使用者總是比生產者快 ,這意味着表中的記錄數很少會超過5000。

我們不斷進行輪詢,因為我們希望將更新盡快發送給用戶,以模擬“推送”行為。

我的問題:

  1. 對這種方法的性能有什么影響。
  2. 為什么會對這些性能產生影響,能否在理論上進行解釋並在實踐中進行驗證(如果任何人都可以就如何創建一個環境來驗證和評估結果分享想法)

(假設這里只有一個消費者,因此消費者之間不需要協調)

如果itemId是主鍵(在itemId列上使用“主鍵”約束創建的表),則Sybase在該列上隱式創建唯一的聚集索引。

因此,您的“ top 5000”命令應使用聚集索引來掃描表。 我假設一旦使用者獲得了一批行,它將停止輪詢/掃描,直到完成處理並刪除已處理的itemId。

因此,您實際上是在談論當表為空時經常運行“ SELECT TOP 5000 itemId FROM Items”查詢(輪詢),對吧?

假設是這種情況(在一個空表上運行select),它將很快運行,但是如果連續運行,則可能以每秒數千次空輪詢的方式耗盡所有Sybase CPU。 也許您正在談論每秒輪詢一次? 那應該沒問題。

更多想法:

如果您開始談論將鍵值提升到聚集索引時瘋狂的高插入率,那么您可能會遇到諸如優化聚集索引的頁面拆分之類的事情。 請參閱“上升插入的效果”,網址為:

https://help.sap.com/viewer/21022a83c8474f31b3ac1b5ec4075dba/16.0.3.4/en-US/a9f00f15bc2b1014af52b7854bca5497.html

我猜這不是您的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM