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

Khóa hàng, bảng và advisory trong PostgreSQL: ai chặn ai, đo bằng đồng hồ

PostgreSQL có ba tầng khóa: khóa hàng (FOR UPDATE) chỉ chặn cùng hàng, khóa bảng 8 mức mà ACCESS EXCLUSIVE của DDL chặn cả SELECT, và advisory lock do ứng dụng tự định nghĩa. Đo thật bằng hai session đồng thời: cùng đối tượng chờ 3 giây, đối tượng khác chạy ngay. Vì sao một ALTER TABLE có thể treo cả ứng dụng. PostgreSQL 16.

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

Bảng rất lớn trong PostgreSQL: các đòn bẩy lưu trữ để bảng tỉ dòng vẫn chạy được

Bảng cực lớn cần kết hợp nhiều đòn bẩy lưu trữ. Đo thật: fillfactor=90 cho 43% HOT update (48 MB so với 59 MB), giảm bloat cho bảng ghi nặng; TOAST nén text lặp lại 42 lần và chuyển giá trị khó nén ra ngoài dòng (main chỉ 1 MB, TOAST 195 MB) để heap chính luôn hẹp. Cùng phân vùng và tablespace phân tầng. PostgreSQL 16.

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

Generics vs interface trong Go: chi phí thật nằm ở stencil và dictionary

Generics của Go dùng GC shape stenciling: kiểu giá trị sinh mã riêng, mọi con trỏ chung một stencil và phân biệt bằng dictionary lúc chạy. Đo thật trong Go 1.23 bằng benchmark bốn đường thực thi và soi bảng ký hiệu — 4 kiểu chỉ sinh 3 bản mã, generic method nhanh gần gấp đôi interface.

Công cụ 22/09/2026 6 phút

sed thực chiến: thay thế, địa chỉ, nhóm bắt — và bẫy sed -i giết script khi đổi máy

sed là con dao đa năng để biến đổi văn bản theo dòng, nhưng cú pháp cô đọng khiến nhiều người chỉ dùng mỗi s/a/b/. Bài này chạy sed thật: cờ g/N/I, chọn dòng theo địa chỉ và mẫu, xoá dòng, nhóm bắt \1 \2, in chọn lọc thay grep — và cái bẫy sed -i khác nhau giữa Linux (GNU) và macOS (BSD) khiến script hỏng khi chuyển máy.