iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

資料庫大哉問 系列

這系列已 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. 其他資料庫用途以及儲存結構介紹

參賽天數 23 天 | 共 23 篇文章 | 22 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day11 - MySQL 如何避免 DeadLock?(Deadlock Analysis)

使用 Lock 最大的風險就是 DeadLock,最常見案例是「互相持有並等待」: ## transaction A: BEGIN SELECT * FROM...

2025-09-11 ‧ 由 vicxu 分享
DAY 12

Day12 - MySQL 寫入資料時如何確保 Durability?(WAL & Redo Log)

Transaction ACID 中 Durability 要求資料不可遺失,因此一旦 Transaction Commit 後,資料就要寫進硬碟,不能只放在記...

2025-09-12 ‧ 由 vicxu 分享
DAY 13

Day13 - MySQL 如何將快取資料寫入硬碟?(Flush Process)

MySQL 寫入流程是: 將資料從硬碟載入 Buffer Pool (記憶體) 在記憶體中更新資料,並寫入異動內容 Log Buffer (Redo Log...

2025-09-13 ‧ 由 vicxu 分享
DAY 14

Day14 - MySQL 如何管理 Schema?(Schema Migration Strategy)

Transaction ACID 中的 Consistency 要求資料更新前後要符合資料規則,確保資料正確,而資料規則主要是透過 Schema 來制定的,例如...

2025-09-14 ‧ 由 vicxu 分享
DAY 15

Day15 - MySQL 如何優化大表查詢?(Partition)

當資料表到千萬筆資料即便有 Index 查詢速度仍可能不理想,就像 O(LogN) 的演算法,當 N 很大時程式仍會執行很慢,若要程式執行變快,其中一個方式是把...

2025-09-15 ‧ 由 vicxu 分享
DAY 16

Day16 - MySQL 如何應付大量查詢流量?(Binlog, Slave DB)

隨著系統業務量增加,即便將查詢優化到極致,系統仍會負荷不了瞬間大量查詢,此時只剩垂直與水平擴充兩個選項,垂直擴充相對簡單,提升硬體 CPU 和記憶體,但缺點是升...

2025-09-16 ‧ 由 vicxu 分享
DAY 17

Day17 - MySQL 如何架設高可用的 Master-Slave 架構?(ProxySQL & Orchestrator)

架設高可用的 MySQL Cluster 不只要讓多台 Slave 去接收 Master 的 Binlog 同步資料,還要做到當 Master Crush 時,...

2025-09-17 ‧ 由 vicxu 分享
DAY 18

Day18 - 分散式資料庫特輯 - 什麼是 Database Sharding?(consistent hashing & re-sharding)

在 Cluster 架構中,除了 Master Slave 架構外,還有多 Master 架構,該架構主要解決: 資料量大到單台資料庫無法負荷,例如記憶體或...

2025-09-18 ‧ 由 vicxu 分享
DAY 19

Day19 - 分散式資料庫特輯 - 什麼是 DHT 技術?(Chord & Kademlia)

分散式資料庫(e.g Cassandra、MongoDB)中的資料庫數量是可控的,Sharding Metadata 可儲存在外部資料庫 (e.g ZooKee...

2025-09-19 ‧ 由 vicxu 分享
DAY 20

Day20 - 分散式資料庫特輯 - 如何實現分散式 Transaction?(2-phase commit, xa, TiDB percolator)

分散式資料庫除了 Data Sharding 關鍵技術外,跨 Server Transaction 實作 ACID 功能也很重要,然而當資料分散在不同資料庫後,...

2025-09-20 ‧ 由 vicxu 分享