Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2312 bài viết · Website
Lập trình Go 22/09/2026 9 phút

Bounds check elimination trong Go: đo thật và vì sao chiêu reslice có thể phản tác dụng

Mỗi truy cập slice phải kiểm biên để an toàn bộ nhớ; compiler xoá check khi chứng minh được chỉ số hợp lệ. Đo thật: vòng range và i<len(xs) đã 0 check sẵn, nhưng check biên hiện đại rất rẻ (~0,05 ns) — và chiêu reslice để gợi ý BCE ở đây còn chậm hơn. Go 1.23.

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

Khôi phục từ pg_dump đo thật: 80% thời gian là COPY, index và khoá ngoại được dựng lại chứ không được chép, -j nhanh 1,3 lần khi một bảng chiếm 73% và 1,77 lần với tám bảng đều, planner đoán sai 5 lần tới khi ANALYZE, và một role thiếu là một lỗi

Khôi phục bản dump custom 75 MB của cơ sở dữ liệu 613 MB vào CSDL trống: 2,85 giây tuần tự, 2,18 giây với -j, không nhanh hơn vì một bảng chiếm 73%; tám bảng bằng nhau thì -j4 nhanh 1,77 lần rồi chạm trần. Tách theo section: pre-data 25 ms, COPY 2,27 giây, dựng index và khoá ngoại 731 ms. Sau khôi phục planner ước lượng 5.000 dòng cho truy vấn trả 1.001 và chọn Bitmap Scan, ANALYZE 254 ms sửa thành Index Scan với 943. work_mem đặt ở mức database biến mất, sequence giữ nguyên 4000, và khôi phục vào cụm trống báo đúng một lỗi role không tồn tại, nạp pg_dumpall --globals-only trước thì 0 lỗi.

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

TTL và hết hạn: đo thật độ cũ của cache bằng TTL/2, và cơn bão miss do TTL đồng loạt

TTL không phải là 'cache bao lâu' — nó là lời hứa về mức độ cũ tối đa của dữ liệu bạn phục vụ. Bài này đo thật trên Go + Redis + PostgreSQL: cho giá đổi trong DB mỗi 200ms rồi đọc qua cache với bốn TTL khác nhau. Kết quả: TTL 10s cho độ lệch trung bình 5,0 giây dữ liệu và chỉ 1 lần chạm DB; TTL 100ms cho 0,2 giây lệch nhưng 97 lần chạm DB — tăng TTL 100 lần đổi được 97 lần ít tải DB bằng đúng 25 lần cũ hơn. Và đo thêm cái bẫy TTL đồng loạt: 1.000 key nạp cùng lúc hết hạn dồn vào đúng một giây, thêm nhiễu ±20% thì đỉnh giảm còn 266.