這系列已 MySQL 為主,其他資料庫為輔介紹資料庫設計原理,雖是 MySQL 為主,但很多概念是通用的,例如 Page & B+Tree & WAL & MVCC & Lock 等。
這個系列會分成七大段落:
1. MySQL 儲存結構介紹
2. MySQL 查詢效能優化方式
3. MySQL Transaction ACID 原理
4. MySQL Master-Slave 架構
5. 分散式資料庫設計
6. PostgreSQL 架構與 MySQL 的比較
7. 其他資料庫用途以及儲存結構介紹
使用 Lock 最大的風險就是 DeadLock,最常見案例是「互相持有並等待」: ## transaction A: BEGIN SELECT * FROM...
Transaction ACID 中 Durability 要求資料不可遺失,因此一旦 Transaction Commit 後,資料就要寫進硬碟,不能只放在記...
MySQL 寫入流程是: 將資料從硬碟載入 Buffer Pool (記憶體) 在記憶體中更新資料,並寫入異動內容 Log Buffer (Redo Log...
Transaction ACID 中的 Consistency 要求資料更新前後要符合資料規則,確保資料正確,而資料規則主要是透過 Schema 來制定的,例如...
當資料表到千萬筆資料即便有 Index 查詢速度仍可能不理想,就像 O(LogN) 的演算法,當 N 很大時程式仍會執行很慢,若要程式執行變快,其中一個方式是把...
隨著系統業務量增加,即便將查詢優化到極致,系統仍會負荷不了瞬間大量查詢,此時只剩垂直與水平擴充兩個選項,垂直擴充相對簡單,提升硬體 CPU 和記憶體,但缺點是升...
架設高可用的 MySQL Cluster 不只要讓多台 Slave 去接收 Master 的 Binlog 同步資料,還要做到當 Master Crush 時,...
在 Cluster 架構中,除了 Master Slave 架構外,還有多 Master 架構,該架構主要解決: 資料量大到單台資料庫無法負荷,例如記憶體或...
分散式資料庫(e.g Cassandra、MongoDB)中的資料庫數量是可控的,Sharding Metadata 可儲存在外部資料庫 (e.g ZooKee...
分散式資料庫除了 Data Sharding 關鍵技術外,跨 Server Transaction 實作 ACID 功能也很重要,然而當資料分散在不同資料庫後,...