SQL Server In-memory Database

微軟下一代SQL Server資料庫將加入In-Memory技術(http://www.ithome.com.tw/itadm/article.php?c=77167)

微軟已經花了 5 年研發,到此,Hekaton 把我知道的 SQL Server 增加了超大的新架構。參照:

http://blogs.technet.com/b/dataplatforminsider/archive/2012/11/08/breakthrough-performance-with-in-memory-technologies.aspx

http://social.technet.microsoft.com/wiki/zh-cn/contents/articles/14426.aspx

SQL Server in-memory Database 已經以 xVelocity(column stored index)形式出現在 SQL Server 2008 R2 的 PowerPivot 和 SQL Server 2012,而 SQL Server 2012 PDW v2 將提供可更新的 clustered column stored index。這是以 column 為主的儲存方式,與一般交易以 row 為主的存放方式不同,適用於 DW。

但下一版 SQL Server 的 In-memory database(代號 Hekaton,希臘語 100 倍的意思,期待效率提升 100 倍)將完全改變儲存方式,仍以 row 為主,適用於交易型資料,就初期客戶測試,其速度將提升 5~50 倍。其特點如下:

  • 以 table 為單位,將較熱的 table 放入完全獨立的記憶體區塊,與原來的資料表用不同的記憶體區塊。尚有 data type 不支援,非辦不到,是開發時間不夠。傳統與 in-memory 架構並存。也可與 xVelocity 共用。
  • 一旦將較熱的資料表設為 in-memory,將從傳統的存放方式移至專門存放 in-memory table 的區域
  • 可以選擇是否不要 transaction log,若要速度但不重視交易,可以不經過 transaction log,否則變更還是要記錄在硬碟上的 transaction log,但省掉了以往的結構變更紀錄,以及索引變更紀錄…等
  • 由於以記憶體為主,所以不再採用 page 的存放方式,將以 pointer、循序的方式存放在記憶體。資料寫回硬碟時也採用循序的 streaming,因此硬碟存取一律都是循序,而沒有隨機
  • 因為存取記憶體非常快,所以鎖定方式要完全改變,以highly scalable concurrency control mechanism 取代原來的 lock manager
  • 硬碟不放索引,而是資料載入記憶體時才動態建立索引
  • 可以選擇性將 Stored Procedure 編譯成執行快速的機械碼(非 .NET managed code),如此才能快速重複執行。但仍有語法不支援,因此 SP 可能要改寫,依然是時間的問題來實作所有的語法
  • 減少 I/O 與 Lock,並同時發揮大量 CPU 的平行運算力
  • 寫回與載入都是循序,HA 移轉時,就看硬碟循序載入的速度。因為是循序,微軟說在實驗室內 10 秒不到載入 40G
  • 尚不支援局部 partition 進入 memory

不錯的 blog
https://www.simple-talk.com/sql/database-administration/exploring-in-memory-oltp-engine-(hekaton)-in-sql-server-2014-ctp1/

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: