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 篇文章 | 20 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day1 - 資料庫大哉問 (邁向資深工程師的第一步)

資料庫為大多軟體系統的核心基礎建設,也是軟體開發不可少的技能,身為軟體工程師,學習程式語言之後,第二個學習技術非資料庫莫屬,但除了 SQL & Tran...

2025-09-01 ‧ 由 vicxu 分享
DAY 2

Day2 - MySQL 如何儲存資料?(InnoDB & Tablespace)

MySQL 架構分為兩個部分,SQL Layer & Storage Engine: (圖來源:https://blog.devops.dev/mys...

2025-09-02 ‧ 由 vicxu 分享
DAY 3

Day3 - MySQL 用什麼結構儲存資料?為什麼?(B+Tree & Page)

Tablespace 除了管理 extent 外,也負責將抽象化結構映射到硬碟區塊,因此 extent 中的資料不能亂儲存,要有特定資料結構優化插入查詢的效能,...

2025-09-03 ‧ 由 vicxu 分享
DAY 4

Day4 - MySQL 如何高效地查詢資料?(Clustered Index, Secondary Index & Composite Index)

有了 B+Tree 查詢單筆資料只要 O(LogN),但除了單筆查詢還有範圍查詢 id between 1 AND 100 以及多條件查詢 user_id =...

2025-09-04 ‧ 由 vicxu 分享
DAY 5

Day 5 - MySQL 如何檢查查詢效能? (Optimizer & Explain)

隨著業務變得複雜,一張 Table 的 Index 也會變多,此時 MySQL 會用哪個 Index 搜尋資料就成一個謎,例如 orders Table 有 (...

2025-09-05 ‧ 由 vicxu 分享
DAY 6

Day6 - MySQL 如何優化查詢效能?(Query Optimization)

了解 Optimizer 原理跟 EXPLAIN 語法能幫助定位效能問題,但發現問題後要怎麼優化,就要有踩坑經驗了,在這分享 6 個 Query 優化案例! U...

2025-09-06 ‧ 由 vicxu 分享
DAY 7

Day7 - MySQL 快取放不下資料了,怎麼辦?(Buffer Pool)

資料除了儲存在硬碟中,MySQL 還會將讀取過資料放在記憶體,用來提升查詢效能,但記憶體空間有限,無法把所有資料都放入,因此淘汰資料的策略就很重要了。 如何有效...

2025-09-07 ‧ 由 vicxu 分享
DAY 8

Day8 - MySQL 如何優化快取命中率?(BufferPool Analysis)

雖然快取能加速查詢,但如果命中率太低幫助就不大,由於 INSERT 也會將資料放在快取,查詢剛建立的資料一定會命中快取,因此理想的快取命中率要在 98% 左右,...

2025-09-08 ‧ 由 vicxu 分享
DAY 9

Day9 - MySQL 如何實現 Atomicity & Isolation?(Undo Log & MVCC)

Transaction 的 ACID 是寫入資料的重要功能,而 Atomicity & Isolation 則是工程師最常用且最容易影響讀寫效能的兩大特...

2025-09-09 ‧ 由 vicxu 分享
DAY 10

Day10 - MySQL 怎麼 Lock 資料?(Row Lock, Gap Lock & Next-Key Lock)

Isolation Level Read Committed & Repeatable Read Level 主要是解決 Transaction 併發時...

2025-09-10 ‧ 由 vicxu 分享