Cơ sở dữ liệu 29/08/2026 9 phút

Một lần mất điện xoá sạch mọi bộ đếm pg_stat — và vì sao con số tuyệt đối của chúng gần như vô nghĩa

pg_stat_statements trả lời 'truy vấn nào tốn nhất'. Các khung nhìn pg_stat_* trả lời câu khác: bảng nào, chỉ mục nào, bộ đệm đang làm gì. Tôi đo chúng nói gì, ba chỗ chúng im lặng — gồm một sự cố xoá sạch mọi bộ đếm — và một dự đoán của tôi bị bác bỏ.

Cơ sở dữ liệu 29/08/2026 8 phút

Chỉ mục tôi đinh ninh sẽ thắng lại về gần bét — quy trình 5 bước đưa truy vấn từ 684 ms xuống 208 ms

Năm mươi lăm phần trước đo từng cơ chế riêng lẻ; phần này ghép lại thành một quy trình gỡ truy vấn chậm và chạy trên một sự cố dựng sẵn từ đầu tới cuối. Bất ngờ lớn nhất: chỉ mục bao phủ mà ai cũng nghĩ là nhanh nhất lại tệ thứ nhì, còn chỉ mục nhanh nhất cũng là chỉ mục nhỏ nhất.

Cơ sở dữ liệu 29/08/2026 9 phút

pg_upgrade xong trong 2,4 giây — rồi bộ lập lịch ước sai 66 lần, vì nó cố tình bỏ lại một thứ

Nâng cấp phiên bản lớn là việc mỗi năm làm một lần nên chẳng ai thuộc. Tôi chạy pg_upgrade thật từ PostgreSQL 16 lên 17, đo từng bước — và tìm ra thứ nó mang theo đầy đủ lẫn thứ nó lặng lẽ để lại, đủ khiến máy chủ vừa nâng xong chậm bất thường vài giờ đầu.

Cơ sở dữ liệu 29/08/2026 9 phút

RLS giấu sạch dòng của phòng khác — nhưng một lỗi trùng khoá tố cáo đúng dòng đang bị giấu

Phân quyền PostgreSQL có bốn lớp, mỗi lớp chặn được một thứ khác nhau. Tôi đo từng lớp trên bảng nhân viên bốn dòng và tìm ra ba chỗ chúng không chặn — chỗ đáng nhớ nhất là một thông báo lỗi khẳng định sự tồn tại của đúng dòng mà chính sách đang cố giấu.

Cơ sở dữ liệu 29/08/2026 9 phút

Image PostgreSQL chính thức cho ai vào cũng khỏi cần mật khẩu — và đổi POSTGRES_PASSWORD rồi up lại chẳng thay đổi gì

Image postgres chính thức dùng mặc định gốc cho mọi tham số và 'trust' cho mọi kết nối cục bộ — tiện cho việc học, nguy hiểm cho máy chủ thật. Đây là danh sách phải đổi, kèm số đo, và một cái bẫy: nhiều thiết lập chỉ có tác dụng đúng một lần lúc khởi tạo.

Cơ sở dữ liệu 29/08/2026 11 phút

Một câu SQL chấm điểm máy chủ PostgreSQL của bạn — trên cấu hình Docker mặc định nó báo 10/13 mục cần sửa

Sáu mươi phần, mỗi phần một phép đo, gom lại thành một câu SQL chạy được và một bản tổng kết. Cả năm con số ấn tượng nhất, bốn lời khuyên phổ biến mà phép đo bác bỏ, và ba bài học về cách đo rút ra từ chính những lần tôi đo sai.