Bun:sqlite & Node.js better-sqlite3: Bí Quyết Đạt 25.000 RPS Nhờ Truy Vấn Đồng Bộ
Giải bài toán thuế mạng N+1: cách thư viện C/Zig đồng bộ thực thi 15 câu lệnh SQL nhanh hơn 1 vòng khứ hồi TCP tới Postgres — kèm mô hình gom lô (Micro-Batching).
- MỤC TIÊU THÔNG LƯỢNG MÔ HÌNH
- 24,800 TPS
- ĐẶC TÍNH ĐỌC / RPO
- 0.09 ms
- PHÂN KHÚC MÁY CHỦ THAM CHIẾU
- $24–$48 HF NVMe
Lập trình viên JS thường mặc định mọi tác vụ DB phải bất đồng bộ (async), nhưng bọc async quanh SQLite như node-sqlite3 lại gây nghẽn hàng đợi luồng libuv. Ngược lại, `better-sqlite3` trên Node.js và `bun:sqlite` chạy đồng bộ ngay trong tiến trình chỉ mất ~8–25 micro-giây mỗi truy vấn, triệt tiêu hoàn toàn độ trễ N+1 và vượt mốc 25.000 RPS.
Trong bản vẽ lưu trữ BP-05 trên SQLiteEdge, mọi tham số dưới đây bám sát tài liệu SQLite 3.46 và biểu phí nhà cung cấp đối chiếu ngày 2026-11-12.
Nguyên Tắc Thiết Kế SQLiteEdge Cho Bun:sqlite & Node.js better-sqlite3: Bí Quyết Đạt 25.000 RPS Nhờ Truy Vấn Đồng Bộ
- Biên dịch sẵn câu lệnh (`const stmt = db.prepare(...)`) ngay lúc khởi động ứng dụng — tuyệt đối không biên dịch lại chuỗi SQL bên trong hàm xử lý từng request.
- Gom các lượt ghi dồn dập (webhook, log, analytics) trong chu kỳ 4ms của Event Loop vào một giao dịch `db.transaction(batch)()` duy nhất để gộp hàng trăm lệnh INSERT trong 1 lần fsync.
- Để tận dụng hết 8 nhân vCPU cho tải đọc, chạy 1 tiến trình Ghi chính + N tiến trình HTTP Chỉ Đọc (`readonly: true`) chia tải qua cờ nhân SO_REUSEPORT.
- Đặt lịch chạy `PRAGMA optimize;` mỗi 4 giờ để SQLite tự động cập nhật thống kê chỉ mục (`sqlite_stat1`) giữ tốc độ tìm kiếm ổn định.
Mẫu Cấu Hình SQLiteEdge: Bộ Gom Lô Ghi Siêu Tốc (Node better-sqlite3 / Bun)
import Database from 'better-sqlite3';
const db = new Database('/var/lib/app/saas.db');
db.pragma('journal_mode = WAL');
db.pragma('synchronous = NORMAL');
db.pragma('busy_timeout = 5000');
db.pragma('mmap_size = 8589934592');
const insertEvent = db.prepare(
'INSERT INTO events (tenant_id, kind, payload, created_at) VALUES (?, ?, ?, ?)'
);
const commitBatch = db.transaction((rows) => {
for (const r of rows) insertEvent.run(r.tenantId, r.kind, r.payload, r.ts);
});
// Gom các lượt ghi lẻ tẻ mỗi 4ms -> 1 lần flush NVMe = 40.000+ dòng/giây!
let queue = [];
setInterval(() => {
if (queue.length === 0) return;
const batch = queue;
queue = [];
commitBatch(batch);
}, 4);
Bảng Mô Hình Thông Số & Chi Phí SQLiteEdge (BP-05)
Các mức giá tham khảo cập nhật ngày 2026-11-12 từ trang công khai của hãng (giá có thể thay đổi khi thanh toán); thông số thông lượng là ước tính mô hình lý thuyết, hãy tự xác thực bằng fio trên máy chủ của bạn.
| Kiến Trúc DB JavaScript | Độ Trễ Trang 12 Truy Vấn | RPS Tối Đa 1 Node | Chi Phí CPU |
|---|---|---|---|
| Cloud Postgres từ xa (1.4ms RTT x 12) | 18.6 ms | 3,400 RPS | Tốn mã hóa TLS & tuần tự hóa gói |
| Async node-sqlite3 (luồng libuv) | 2.9 ms | 6,800 RPS | Nghẽn khóa Mutex chuyển ngữ cảnh |
| Node.js 22 + better-sqlite3 (WAL + mmap) | 0.21 ms | 24,500 RPS | C++ Zero-Copy siêu nhẹ |
| Bun + bun:sqlite + SO_REUSEPORT Workers | 0.14 ms | 38,000+ RPS | Tối ưu cực đại Zig/JSC |
Cấu Hình Máy Chủ NVMe & Kho S3 Khớp Bản Vẽ BP-05 Trên SQLiteEdge
-
Vultr High Frequency 3.5GHz+ Ổ NVMe Cục Bộ (Độ Trễ fsync Cực Thấp)Xem Gói Vultr Cho BP-05 Trên SQLiteEdge →
Xung đơn nhân 3.7GHz+ & NVMe trực tiếp • fsync ~0.045ms đẩy kịch trần TPS ghi đơn luồng SQLite WAL (https://www.vultr.com/pricing/) -
InterServer Storage $6 Khóa Giá Trọn Đời (Đích Lưu Trữ S3 / MinIO Cho Litestream)Xem Kho S3 InterServer Cho BP-05 Trên SQLiteEdge →
Chỉ $6/tháng khóa giá trọn đời cho 1TB • $0 phí lệnh PUT S3 khi stream WAL mỗi giây bằng Litestream (https://www.interserver.net/vps/)
Câu Hỏi Kỹ Thuật SQLiteEdge Cho Bản Vẽ BP-05
-
Chạy đồng bộ better-sqlite3 có làm treo Event Loop của Node.js không?
Một câu SELECT có đánh index trên vùng nhớ mmap chỉ tốn ~10 micro-giây (0.01ms) — nghĩa là thực thi 100 truy vấn mới hết 1ms, không hề gây nghẽn Event Loop. Chỉ các báo cáo quét hàng triệu dòng (>10ms) mới cần đẩy sang Worker Thread phụ.
-
Tại sao xung nhịp CPU 3.5GHz+ lại quan trọng đặc biệt với bun:sqlite và better-sqlite3?
Vì không còn thời gian chờ mạng, toàn bộ tốc độ truy vấn phụ thuộc 100% vào hiệu năng đơn nhân (IPC) và băng thông RAM — giúp dòng Vultr High Frequency 3.7GHz+ phát huy sức mạnh vượt trội.