Skip to content
Draft · Trang này mới là dàn ý, chưa viết đầy đủ. Xem mọi trang nháp

PostgreSQL ​

Dàn ý dưới đây tập trung vào những điểm PostgreSQL khác MySQL/InnoDB, vì đó là chỗ phỏng vấn hay hỏi khi bạn đã biết một trong hai.

Dàn ý dự kiến ​

  1. Kiến trúc tiến trình: mỗi connection một process (không phải thread), vì sao PgBouncer gần như bắt buộc.
  2. Lưu trữ và MVCC: heap table (không có clustered index), tuple chứa xmin/xmax, UPDATE tạo bản mới ngay trong bảng; khác với undo log của InnoDB.
  3. VACUUM và autovacuum: dọn tuple chết, bloat, transaction ID wraparound, HOT update.
  4. Index: B-tree, Hash, GIN (JSONB, full-text, mảng), GiST, BRIN (bảng rất lớn theo thời gian), partial index, expression index, INCLUDE cho covering index.
  5. Isolation: mặc định READ COMMITTED; REPEATABLE READ là snapshot isolation; SERIALIZABLE dùng SSI (không khoá như MySQL).
  6. Planner và EXPLAIN: EXPLAIN (ANALYZE, BUFFERS), statistics, pg_stat_statements.
  7. Replication: streaming replication (WAL), logical replication, replication slot.
  8. Partitioning: declarative partitioning; khác MySQL ở ràng buộc khoá.
  9. So sánh nhanh MySQL và PostgreSQL cho câu hỏi “chọn cái nào”.