Sql-Server

讀取記憶體中的表是否比記憶體在記憶體中的表更快?

  • November 28, 2019

記憶體中(又名 Hekaton)表的讀取速度是否比已經記憶體在 SQL 伺服器記憶體中的非記憶體表更快?

我問這個是因為我有一個案例,我正在考慮將我的一個表轉換為記憶體表,但是現在載入到記憶體記憶體中非常快,但是在載入後讀取/操作它的性能進入記憶體是它很慢的地方。

通過將此表轉換為記憶體表,我還能看到潛在的性能改進嗎?

當磁碟上的表已經記憶體後讀取速度很慢時,您會遇到什麼等待類型?

記憶體優化表針對寫入而不是讀取進行了優化,因此您不太可能看到遷移到 Hekaton 帶來的任何性能優勢。

您可以看到使用需要記憶體表的本機編譯過程實現了很大的加速。當然,有很多警告。

與基於磁碟的表相比,記憶體中在 RAM 中使用不同的資料結構。它還通過MVCC而不是鎖定(預設的 READ COMMITTED 隔離級別使用)強制並發,這將消除等待其他事務的鎖被釋放的情況。這向我表明,對於多個並發事務,記憶體中的執行速度總體上將比傳統方法更快。

請注意,伺服器行為是不同的。例如,傳統上,由於寫入衝突,第二個會阻塞等待第一個完成。使用記憶體中的 MVCC 將回滾。客戶端應用程序必須考慮到這一點(以及許多其他差異)。額外的工作是否值得,在你的硬體和你的數據和你的工作負載上,只有你能說。

引用自:https://dba.stackexchange.com/questions/254286