iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

PostgreSQL 效能優化 30 天挑戰:從 Index 到 Transaction 的深入探索 系列

這 30 天我將會跟著 PostgreSQL 官方文件,了解 PostgreSQL 中的各種 Index (B-Tree, GIN, Gist ...)、Isolation Levels 以及 Lock 機制。文章內會有各種小測試,來理解它們的使用時機和原理,歡迎對 PostgreSQL 有興趣的朋友們一起來學習~

參賽天數 22 天 | 共 22 篇文章 | 17 人訂閱 訂閱系列文 RSS系列文 團隊籠中鳥
DAY 11

Day 11 - Visibility Map 與 Index-Only Scan 的關係

昨天我們了解到 Index-Only Scan 可以省去 Heap Fetch 的步驟,減少 I/O 讓查詢速度變快。不過當中還有一個很重要的概念沒有提到,就...

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

Day 12 - VACUUM 資料回收機制

既然講到 Visibility Map,就要提到 PostgreSQL 中的資料回收機制了,如果沒有定期將資料庫清理乾淨的話,可能會影響到 Visibilit...

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

Day 13 - 提升 JSONB 查詢效能:使用 GIN 與 jsonb_path_ops

終於要進入第二種 Index 了!認識完 B-Tree 之後,我們要來看看 GIN Index。目前 PostgreSQL 可以支援儲存 jsonb 格式的資...

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

Day 14 - Full Text Search:選擇 GIN 還是 GiST?

在看完 jsonb 的 Index 之後,今天要來看的是 Full Text Search 了。全文搜尋也是實務上可能會碰到的問題,假如要搜尋的資料很多的話,...

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

Day 15 - pg_trgm:PostgreSQL 也可以模糊搜尋

在全文搜尋或是模糊搜尋的時候,常常會聯想到使用 ElasticSearch 加快速度,但其實 PostgreSQL 本身也有提供模糊搜尋的功能。今天這篇文章,...

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

Day 16 - GiST / SP-GiST:加速空間範圍查詢

在 Day 13 我們介紹了 GIN 與 GiST 兩種適合全文搜尋的 Index,而 GiST 事實上也能幫忙加快搜尋空間範圍的查詢。前一陣子在讀 Syst...

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

Day 17 - BRIN:最佳化有序資料的 Index

剩下最後來看看 BRIN Index 了。根據官方文件的敘述,BRIN 的全名為 Block Range Index,字面上來說是「區塊範圍」的 Index...

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

Day 18 - CREATE INDEX CONCURRENTLY:不影響業務的情況下建立 Index

終於在學完各種不同的 Index 之後,來到最後一篇關於 Index 的章節了!在了解不同 Index 的特性之後,是不是急著想要將資料庫加上 Index?...

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

Day 19 - Isolation Levels:交易同時進行時,怎麼避免資料錯亂?

在高併發(High Concurrency)的場景下,我們除了關心速度之外,更重要的是「資料會不會錯」。想像你正在操作一筆銀行轉帳交易,當你從帳戶扣款的同時,...

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

Day 20 - 觀察 PostgreSQL 隔離層級:Read Committed、Repeatable Read

經過前一天的文章,我們發現併發的 request 可能造成的現象,以及調整資料庫的 Isolation Level 可能影響資料庫的一致性。接下來我們就來實驗...

2025-09-20 ‧ 由 claudiateng 分享