[英]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。
我們不斷進行輪詢,因為我們希望將更新盡快發送給用戶,以模擬“推送”行為。
我的問題:
(假設這里只有一個消費者,因此消費者之間不需要協調)
如果itemId是主鍵(在itemId列上使用“主鍵”約束創建的表),則Sybase在該列上隱式創建唯一的聚集索引。
因此,您的“ top 5000”命令應使用聚集索引來掃描表。 我假設一旦使用者獲得了一批行,它將停止輪詢/掃描,直到完成處理並刪除已處理的itemId。
因此,您實際上是在談論當表為空時經常運行“ SELECT TOP 5000 itemId FROM Items”查詢(輪詢),對吧?
假設是這種情況(在一個空表上運行select),它將很快運行,但是如果連續運行,則可能以每秒數千次空輪詢的方式耗盡所有Sybase CPU。 也許您正在談論每秒輪詢一次? 那應該沒問題。
更多想法:
如果您開始談論將鍵值提升到聚集索引時瘋狂的高插入率,那么您可能會遇到諸如優化聚集索引的頁面拆分之類的事情。 請參閱“上升插入的效果”,網址為:
我猜這不是您的位置。
本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.