Cơ sở dữ liệu cho lập trình viên

Sê-ri đo đạc: cơ sở dữ liệu thật sự làm gì với truy vấn của bạn — chỉ mục, kế hoạch truy vấn, MVCC, khóa, WAL, bộ đệm — đo thật bằng EXPLAIN ANALYZE, pg_stat và \timing trong container PostgreSQL dùng một lần.

6/45 phần đã đăng Cơ sở dữ liệu
1 Quét tuần tự và quét chỉ mục Tìm một email trong bảng 1 triệu hàng: không index quét 7353 trang mất 14ms; có index đọc 4 trang mất 0.03ms — nhanh 400 lần. Nhưng đừng đọc 'cost' như thời gian. Đo thật. 03/09/2026 · 7 phút đọc 2 Chỉ mục B-tree bên trong Bảng to gấp 10.000 lần (1k lên 10 triệu hàng) mà cây chỉ mục chỉ sâu thêm một tầng (2 lên 3), tìm một hàng vẫn đọc 6-7 trang. Vì fanout lớn, tra cứu gần như phẳng. Đo thật. 03/09/2026 · 7 phút đọc 3 EXPLAIN và EXPLAIN ANALYZE Trên hai cột trùng nhau, planner đoán 99 hàng còn thực tế là 10000 — lệch 100 lần. 'rows' của EXPLAIN là ước lượng, 'actual rows' của ANALYZE mới là đo thật. Đo thật. 03/09/2026 · 7 phút đọc 4 Chi phí một truy vấn Cost của một seq scan = 5406 trang x 1.0 + 1 triệu hàng x 0.01 = 15406.00, khớp EXPLAIN đến từng số lẻ. Nhưng đổi random_page_cost là planner đổi kế hoạch dù dữ liệu y nguyên. Đo thật. 03/09/2026 · 7 phút đọc 5 Khi chỉ mục không giúp Truy vấn chọn lọc (1% hàng) dùng index nhanh 4.7 lần; nhưng trên cột boolean 50% hàng, planner bỏ index chọn seq scan. Index chỉ giúp khi truy vấn trả về ít hàng. Đo thật. 03/09/2026 · 7 phút đọc 6 Chỉ mục phủ (index-only scan) Index chỉ có cột a đọc 103 trang (phải nhảy heap lấy b); index phủ (a) INCLUDE (b) sau VACUUM chỉ đọc 4 trang, Heap Fetches=0. Nhưng chưa VACUUM thì vẫn nhảy heap. Đo thật. 03/09/2026 · 7 phút đọc

Còn 39 phần nữa sẽ lần lượt được đăng.