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.

Cơ sở dữ liệu 28/08/2026 12 phút

Chỉ mục nhỏ hơn B-tree 6.850 lần — nhưng xáo trộn thứ tự dòng một cái là nó chậm hơn cả không có chỉ mục

Đo B-tree, BRIN và GiST trên bảng sự kiện 10 triệu dòng trong PostgreSQL: BRIN chỉ 32 kB, gần như miễn phí lúc ghi, nhưng nó đánh chỉ mục bố cục vật lý chứ không phải dữ liệu — xáo trộn thứ tự dòng là nó chậm 234 lần, và chết hoàn toàn trong im lặng.

Cơ sở dữ liệu 28/08/2026 12 phút

Chỉ mục HASH nhỏ hơn B-tree 8,8 lần với khoá dài — nhưng chỉ cần một câu ORDER BY là nó thành đồ bỏ

Đo HASH, SP-GiST và bloom trên PostgreSQL 16: HASH nhỏ hơn B-tree 8,8 lần với khoá dài vì nó chỉ lưu vân tay 4 byte thay vì cả khoá, nhưng nó chỉ biết dấu bằng — mất thứ tự, mất ràng buộc duy nhất. Và vì sao B-tree vẫn là mặc định đúng sau mười tám phần đo.

Cơ sở dữ liệu 28/08/2026 13 phút

Cập nhật một cột không nằm trong chỉ mục nào — vẫn chậm gấp 5 lần vì sáu chỉ mục khác

Đo chi phí thật của chỉ mục thừa trong PostgreSQL: chèn chậm 4,6 lần, cập nhật chậm 5 lần dù cột được sửa chẳng nằm trong chỉ mục nào. Và ba lý do khiến idx_scan = 0 không đủ để kết luận nên xoá — kèm cách xoá an toàn bằng giao dịch thử.

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

Thêm một điều kiện WHERE đúng, ước lượng tệ đi 66 lần — bộ lập lịch nhân hai xác suất như thể chúng không liên quan

Đo bộ lập lịch PostgreSQL làm việc với số liệu cũ: ước lượng 1 dòng trong khi thực tế 500.000, và một lớp bảo vệ bí mật thường cứu nó. Rồi tới kiểu sai mà ANALYZE không bao giờ chữa được — giả định các cột độc lập — và một câu lệnh sửa từ sai 66,7 lần xuống đúng.