Hai biểu đồ cột chi phí đọc ở độ sâu chuỗi 60. Bên trái, gạch chéo đỏ: điều lời giải thích của tôi dự báo, cột oldest cao hơn hẳn newest. Bên phải: điều bảng số đã nói sẵn, newest 1450 ns và oldest 1480 ns bằng nhau, tỉ số 1,02 được đóng khung.

Tôi giải thích một chỗ chậm, ghi lời giải thích vào nhật ký, trong khi tỉ số bác bỏ nó đã nằm sẵn trong bảng

Bạn có một benchmark nói rằng chỗ này chậm. Bạn cũng có sẵn lời giải thích vì sao, và nó nghe rất hợp lý. Nếu bạn đã kịp viết lời giải thích đó vào tài liệu thiết kế hay vào ticket, thì bài này kể về một bước kiểm tra tôi đã bỏ qua ngay trước khi làm y như vậy, và cái giá của nó. Hệ thống trong bài là minidb, một database quan hệ nhỏ tôi tự viết bằng Go để học về tầng lưu trữ. Sai lầm trong bài xảy ra được với bất kỳ benchmark nào có hai dòng số. ...

5 tháng 10, 2026 · 10 phút · Hoang Nguyen Thai
Biểu đồ log-log: đường ngoại suy chấm chấm kết thúc gần 10 ms, hai đường đo thật không index bỏ xa nó (MariaDB 10.11 ở 968 ms và 13.0 ở 148 ms tại 1M dòng), vạch gạch 300 ms, và một đường phẳng dưới 1 ms cho trường hợp có index

Tôi viết ngưỡng thêm index thành con số, rồi tự đo lại và thấy nó lệch 15 đến 100 lần

Bạn đã từng ký duyệt một tài liệu thiết kế. Trong đó thế nào cũng có một câu kiểu “khi vượt X thì làm Y”. Có ai từng sinh thử đúng X dòng để xem con số đó có đúng như nó nói không? Cuối tháng trước, tôi duyệt một thiết kế cho phép tra cứu trên một cột không có index. Bảng chứa cột đó không thuộc team tôi. Tôi viết điều kiện để sửa lại thành một câu có hai con số: “khi bảng vượt khoảng 1.000.000 dòng, hoặc p95 của truy vấn lọc theo voucher vượt 300 ms, thì gửi yêu cầu thêm index non-unique cho team sở hữu.” Câu đó có đúng một nhiệm vụ: đưa phương án “ship mà không thêm index” qua vòng review thiết kế. Nó biến lời hứa “sẽ thêm sau” thành một điều kiện mà người review có thể ký. Và nó đã hoàn thành nhiệm vụ đó. ...

28 tháng 9, 2026 · 12 phút · Hoang Nguyen Thai
UUIDv7 Structure and B-Tree Performance Analysis

UUIDv7: Phân tích Kiến trúc Định danh và Hiệu suất Index trong Hệ thống Hiện đại

Trong quá trình thiết kế hệ thống có quy mô lớn (Scale-up), việc lựa chọn Khóa chính (Primary Key) thường là một trong những quyết định kỹ thuật quan trọng nhất nhưng lại ít được thảo luận chuyên sâu. Một lựa chọn sai lầm ở bước này có thể dẫn đến rủi ro bảo mật (Insecure Direct Object Reference) hoặc suy giảm hiệu suất ghi nghiêm trọng khi dữ liệu đạt ngưỡng hàng triệu bản ghi. ...

9 tháng 3, 2026 · 4 phút · Hoang Nguyen Thai