一千萬個為什麽

搜索

使用數據庫序列的策略?

我有一個高端架構,每秒接收許多請求(事實上,它可以每毫秒接收許多請求)。該體系結構的設計使得某些控件依賴於分配給每個請求的特定唯一ID。

要創建這樣的UID,我們使用DB2 Sequence。現在我已經明白這種方法是有缺陷的,因為使用數據庫代價很高,但這樣做是有意義的,因為這個值也將用於記錄數據庫上的信息。

我的團隊剛剛發現每筆交易的經過時間增加了近1000%,我們假設這是因為序列的原因。現在我想知道,使用序列會序列化對我的應用程序的訪問嗎?由於他們必須保證增量按照他們應該的方式工作,他們必須,對吧?

那麽,使用序列時有更好的策略嗎?請假設除了依賴數據庫之外,我沒有其他方法可以獲得唯一的ID。

最佳答案

使用序列必然會序列化您的應用程序。但是,這些東西經過優化可以產生最小的影響。當然,我們總是可以通過以無益的方式宣布事物來解決問題。那麽,這個序列是如何定義的?它有一個大的CACHE嗎?你有沒有指定訂單?

說了哪個....

從你的問題中跳出來的不是粗體的短語,而是它之前的句子:

“我的團隊剛剛發現了增長   幾乎1000%的經過時間   每筆交易,我們都是   假設發生了因為   序列“。

我們都知道ASSUME做了什麽(在這種情況下不是,因為我什麽也沒做)。最近是否有影響此序列的變化?如果沒有,為什麽你們都認為它導致突然1000%的性能下滑?也許最好收集一些證據,而不是假設(即猜測)。那個時間到了某個地方,你需要發現在哪裏。如果您的代碼中某處存在競爭條件,或者您正在燒CPU等待鎖定,或者您的連接錯誤會導致寫入SAN的速度變慢等等,那麽調整序列是沒有意義的。

您是否已打開任何日誌記錄或跟蹤,或者您可以打開?您是否可以在其他環境中重現這種減速,例如開發或系統測試?這可能是責任的原因。至少那時你可以對你正在解決真正問題的知識充滿信心的重新設計任務。

轉載註明原文: 使用數據庫序列的策略?