Cơ sở dữ liệu 22/09/2026 5 phút

Extended statistics (CREATE STATISTICS): dạy planner biết các cột tương quan nhau

Planner giả định các cột độc lập và nhân xác suất — nên với cột tương quan, nó ước lượng sai vài lần. CREATE STATISTICS khai báo mối liên hệ. Đo thật: ước lượng từ thiếu 3 lần thành khớp, và số nhóm GROUP BY từ 18 về đúng 6. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

Vì sao planner ước lượng sai: khi PostgreSQL mất thống kê và đoán mù

Planner chỉ dùng được thống kê khi điều kiện có dạng cột-toán tử-hằng số. Bọc cột trong hàm, dùng LIKE tiền tố mở, hay so cột với cột — nó mất thống kê và rơi về đoán mặc định. Đo thật bốn nguyên nhân và cách sửa từng loại. PostgreSQL 16.

Lập trình Go 22/09/2026 10 phút

Benchmark chính xác với benchstat trong Go: một con số đơn lẻ dễ lừa

Chạy go test -bench một lần cho một con số, nhưng máy đầy nhiễu nên nó dao động mỗi lần. So hai phiên bản bằng một con số mỗi bên có thể kết luận sai. benchstat chạy nhiều lần, tính trung bình ± độ lệch, và so hai bản bằng p-value. Đo thật: cải tiến -94.84% (p=0.000) là thật, hàm không đổi báo p=1.000.

Lập trình 22/09/2026 6 phút

Statistics và planner: vì sao query 'đột nhiên chậm' — khi database đoán sai số dòng

Planner PostgreSQL không biết dữ liệu của bạn — nó ƯỚC LƯỢNG từ thống kê rồi chọn plan. Thống kê sai thì chọn plan tệ. Bài này đo thật: một bảng chèn 500.000 dòng nhưng chưa ANALYZE khiến planner ước lượng 1 dòng trong khi thực tế 5000 (chọn plan chậm 15.5ms); ANALYZE đưa về đúng, plan nhanh gấp đôi. Và cột tương quan (city suy ra country) khiến planner ước lượng thấp 4 lần — CREATE STATISTICS sửa từ ~23.000 về 99.500 sát thực tế 100.000.