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
Cơ sở dữ liệu 22/09/2026 6 phút

VACUUM FULL trong PostgreSQL: khi nào cần và ba rủi ro phải biết

VACUUM FULL thu nhỏ file bảng thật, nhưng đo thật: nó giữ khóa ACCESS EXCLUSIVE chặn cả đọc lẫn ghi (SELECT bị hủy vì lock timeout), cần thêm gấp đôi đĩa tạm, và downtime tỉ lệ kích thước bảng. Khi nào dùng, và vì sao production 24/7 nên dùng pg_repack. PostgreSQL 16.

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

Huge pages cho PostgreSQL: vì sao shared_buffers 8GB tạo 2 triệu mục page table

Trang nhớ thường 4KB khiến shared_buffers lớn sinh hàng triệu mục page table, làm TLB của CPU quá tải. Huge pages 2MB giảm số mục đi 512 lần. Đo thật trạng thái container: huge_pages=try âm thầm fallback, THP đang bù 2MB. Vì sao nên dùng huge page rõ ràng và tắt THP. PostgreSQL 16.

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

DDD tactical patterns trong Go: value object, entity, aggregate — và cách Go thể hiện chúng

Domain-Driven Design tactical patterns — value object, entity, aggregate — có cách thể hiện riêng trong Go nhờ value semantics của struct. Đo thật trong Go 1.23: value object so theo giá trị bằng ==, entity so theo ID, aggregate root ép bất biến, và struct comparable làm map key miễn phí.

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

effective_cache_size trong PostgreSQL: gợi ý cache đổi hẳn kế hoạch mà không tốn 1 byte RAM

effective_cache_size không cấp phát bộ nhớ — nó chỉ là con số cho planner đoán chi phí Index Scan lặp lại. Đo thật: cùng một truy vấn, đặt 4MB planner quét tuần tự 5 triệu dòng mất 408 ms, đặt 32GB planner chọn Nested Loop + Index Scan 15,8 ms — nhanh gấp 26 lần. Vì sao mặc định 4GB thường quá thấp. PostgreSQL 16.