Sharding Cơ Sở Dữ Liệu Trong Go — TiDB, PostgreSQL & Bể Kết Nối (Connection Pools)

Điều kiện tiên quyết: Đây là Phần 4 của Khóa Học System Design. Lội lại Phần 3: Chiến Lược Caching để ngấm mớ luật lệ tầng cache trước khi mò xuống vũng lầy lưu trữ (storage). Answer-first: Đập vụn DB (Database sharding) là màn phân phát dữ liệu dạt sang hai bên sườn (horizontally) rải đều ra mấy cái mảnh vỡ độc lập (independent partitions/shards) bám theo một cái chìa khóa dẫn đường (shard key), cốt để xoa dịu cái màn dẫm đạp chửi bới nhau lúc ghi dữ liệu (reducing write contention) và mở đường cho dung lượng phình to tỷ lệ thuận đâm lủng trần nhà (linear storage growth). Chấm mút chọn sai cái shard key là đẻ ra ngay mấy cái ổ kiến lửa (hot spots) lòi le, hậu quả còn bết bát thảm khốc hơn cả việc chẳng thèm sharding. ...

18 tháng 6, 2026 · 18 phút · Tanh

Chương 5: Tối Ưu Connection Pools Của Database Trong Golang Để Ngăn Chặn Thắt Cổ Chai

← Bài trước | Series hub | Tiếp theo → Chương 5: Mở Khóa Hiệu Suất Database Thông Qua Connection Pooling Nếu hệ thống Golang của bạn nghiền ngẫm business logic (logic nghiệp vụ) nhanh như chớp nhưng lại sặc nước nghẹn ứ ngay ở tầng Database, thì 90% nguyên nhân bắt nguồn từ một chiếc cấu hình *sql.DB lệch pha. 1. Thấu Hiểu *sql.DB Answer-first: Trong thế giới Golang, hàm sql.Open() KHÔNG HỀ khởi tạo một đường truyền kết nối chọc thẳng xuống database. Nó đóng vai trò khởi chạy một cỗ máy quản đốc Connection Pool (hồ chứa kết nối) an toàn luồng (thread-safe). Điều kiện bắt buộc là bạn chỉ được phép khởi tạo cái biến db này đúng một lần duy nhất trong suốt chu kỳ khởi động app. ...

9 tháng 6, 2026 · 5 phút · Tuan Anh