Tag: postgresql Cơ bản
Nội dung này là bản nháp và sẽ không được đưa vào các phiên bản thật.
58 bài viết được gắn tag postgresql:
- ACID trong PostgreSQL: điều gì được bảo đảm, điều gì không?
- Advisory lock: khoá theo key nghiệp vụ khi không có row để khoá
- B-tree index trong PostgreSQL hoạt động thế nào
- Các anomaly khi nhiều transaction cùng đọc và ghi, và cách chữa từng loại
- Composite index trong PostgreSQL: chọn thứ tự cột
- Connection pooling và PgBouncer: 400 client, PostgreSQL nhận 100
- Consumer idempotent: nhận trùng message mà không ghi hai lần (Kafka, RabbitMQ)
- CQRS và event sourcing: thêm read model trước, chỉ lưu event khi lịch sử chính là sản phẩm
- Deadlock trong PostgreSQL: nguyên nhân, đọc log, khắc phục
- Debug theo giả thuyết với bộ công cụ Node.js và PostgreSQL
- Đặt tên trong backend: code, database, API và event
- Đặt tên trong PostgreSQL: snake_case, 63 byte và tên constraint
- Đọc EXPLAIN và EXPLAIN ANALYZE trong PostgreSQL
- Expand–contract: đổi schema khi nhiều phiên bản app cùng chạy
- Ghép cặp: chọn loại index cho từng query
- Ghép cặp: chọn lock hay isolation cho từng tình huống
- GIN, GiST và BRIN trong PostgreSQL: chọn index nào?
- Idempotency-Key: retry POST /orders mà không tạo đơn thứ hai
- Integration test với Testcontainers: Postgres, Redis, Kafka thật cho mỗi lần chạy mà CI không chậm như rùa
- Isolation levels trong PostgreSQL: chọn mức nào cho transaction?
- Kiểu dữ liệu dễ dùng sai: vì sao đơn 23:30 rơi sang hôm sau và tổng tiền lệch 1 đồng
- Lock queue: vì sao một ALTER TABLE đang chờ làm mọi SELECT phải xếp hàng
- Lỗi đặt tên hay gặp: từ code, database tới API và event
- Lỗi hay gặp khi code backend Node.js, NestJS và PostgreSQL
- Lỗi hay gặp khi log, debug, ứng cứu sự cố và viết postmortem
- Lỗi hay gặp với database và transaction (PostgreSQL, ORM)
- Lỗi hay gặp với số, ngày giờ và chuỗi trong Node.js + PostgreSQL
- Lỗi hiệu năng và rò rỉ tài nguyên hay gặp trong Node.js
- MVCC trong PostgreSQL: xmin, xmax và snapshot
- Nested loop, hash join và merge join trong PostgreSQL
- NOWAIT và SKIP LOCKED: chia job cho nhiều worker
- Optimistic hay pessimistic locking: chọn theo xung đột và think time
- Pagination trong PostgreSQL: OFFSET và keyset
- Partial, expression và covering index trong PostgreSQL
- Partitioning trong PostgreSQL: lợi ích thật nằm ở vận hành
- PostgreSQL lưu dữ liệu thế nào: page, heap, tuple và TOAST
- Replication và read replica: vì sao vừa ghi xong đọc lại vẫn thấy dữ liệu cũ
- Row-level locks trong PostgreSQL: FOR UPDATE, FOR NO KEY UPDATE và cách tránh đặt trùng
- Row-level security cho multi-tenancy: chung một schema, không đọc chéo tenant
- Sắp xếp: đổi tên cột không downtime
- Sắp xếp: tạo index online trên bảng lớn
- Secure coding cho backend: lỗ hổng nằm ngay trong code bạn viết
- Statistics, ANALYZE và cách PostgreSQL ước lượng query
- Table-level locks trong PostgreSQL: DDL nào chặn cả SELECT trên bảng đang chạy
- Thiết kế hệ thống thanh toán: timeout làm trừ tiền hai lần, và ledger chứng minh điều đó
- Timeout và quan sát lock: tìm session đang chặn và giới hạn thời gian chờ
- Tình huống: flash sale bán vượt kho
- Tình huống: khách thấy hoá đơn của công ty khác
- Tình huống: migration khoá bảng orders
- Tình huống: query chậm dần khi bảng lên 30 triệu dòng
- Tình huống: sự cố 3 giờ sáng, p99 checkout lên 4 giây
- Transaction ID wraparound: vì sao PostgreSQL phải freeze tuple cũ?
- Transaction xuyên service trong NestJS: giữ một connection qua nhiều service bằng CLS
- Upsert với ON CONFLICT: "chưa có thì thêm, có rồi thì sửa" mà không lỗi 23505
- UUID hay bigint làm khoá chính: cái giá trên B-tree, WAL và foreign key
- VACUUM, autovacuum và bloat: vì sao bảng vẫn lớn sau DELETE?
- Vì sao PostgreSQL không dùng index?
- Viết transaction trong code: giữ dữ liệu đúng khi nhiều request chạy cùng lúc