日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

思考:固态硬盘的普及,是否影响到了存储引擎的设计?

發布時間:2024/2/28 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 思考:固态硬盘的普及,是否影响到了存储引擎的设计? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思考 1:固態硬盤的普及,是否影響到了存儲引擎的設計?

Reference: Let’s Talk About Storage & Recovery Methods for Non-Volatile Memory Database Systems

DBMSs have always dealt with the trade-off between volatile and non-volatile storage devices. In order to retain data after a loss of power, the DBMS must write that data to a non-volatile device, such as a SSD or HDD. Such devices only support slow, bulk data transfers as blocks. Contrast this with volatile DRAM, where a DBMS can quickly read and write a single byte from these devices, but all data is lost once power is lost.

在設計數據庫系統的時候,通常要在“易失性存儲”和“非易失性存儲”之間做權衡。為了在掉電之后仍然能夠保存數據,人們將內存數據寫入持久化存儲中,然后用 Write-ahead log 來保持內存和磁盤刷寫一致。在早期,持久化存儲通常是一些 HDD 設備,相比 DRAM,它們讀寫緩慢,且數據傳輸粒度通常比較大。

為了平衡內存和磁盤的讀寫速度差異,人們做出了很多努力。比如在磁盤上維護有序結構時采用 B-tree (將樹的高度降下來,減少磁盤 I/O 次數。3~4 層的 B-tree 已經可以適合大多數數據庫,degree 為 500 的 4 KB 頁的四級樹可以存儲高達 256 TB)。比如在寫磁盤時,為了減少直接的原地更新(In-place Updates)帶來的效率問題,采用一些“懶”方案(例如 Copy-on-Write Updates,Log-structured Updates)。另外,在 SSD 上,固件內部使用 Log-structured 算法將“隨機寫入”轉換為底層存儲芯片上的“順序寫入”,也是為了加快寫磁盤的速度。

近年來,固態硬盤的普及,一定程度上減少了內存與磁盤之間的讀寫速度差異,它是否會對原有的存儲引擎的設計產生影響?

以及,未來如果非易失性存儲普及,又會對存儲引擎的設計產生哪些影響?


思考 2:B+ tree 的選型原因

Reference: Skip Lists: A Probabilistic Alternative to Balanced Trees

完整說一下吧,無論 B/B+,RB,AVL,還是 skiplist,在最開始都實際上面臨同一個問題,在數據有序的情況下,都會成為一個鏈表。最后導致查詢復雜度 O(N), B/B+/RB/AVL 的采用的策略是 self adjust ,就是所謂的 rebalance。跳表的策略是做 randomize,他假定了一個概率 P,有一個“退化”描述,即,當 P =1/2 時,有百分之50%的數據在第一層,百分之25的數據在第二層,百分之12.5的數據在第三層 etc. 通過這樣讓數據分層明顯,避免全局退化。所以在這種情況下 skiplist 在期望復雜度上做到了查詢 O(logn)(實際上這也是一個統計上的期望計算)。skiplist 的優勢也很明顯,實現簡單,性能不錯,但是缺陷也很明顯,在內存的情況下,由于其是個 randomize 的數據結構,導致其 CPU cache的利用率并不是很明顯,所以可能要考慮這塊的場合還是需要去用 RB 這種數據結構。在磁盤 I/O 的情況下,由于其 randomize 的特性,導致你沒法去做 Sequential reading ,而 randomize reading 對于磁盤來說一直是個大問題。在這個問題上 RB 這種數據結構實際上面臨的問題也是一樣的,所以 B/B+ 樹用適當的數據聚合的方式,將樹的高度降下來,方面我們做 page read,避免 randomize reading

穩定這話實際上也沒說錯,,因為 skiplist 畢竟是個 randomize 的數據結構,他復雜度取還是概率上的描述23333(并不保障嚴格的平衡性 lol

總結

以上是生活随笔為你收集整理的思考:固态硬盘的普及,是否影响到了存储引擎的设计?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。