Cơ sở dữ liệu 15/11/2026 8 phút

SQLite đo thật — kiến trúc và định dạng tệp một file: cả cơ sở dữ liệu nằm gọn trong một file, header 100 byte mở đầu bằng chuỗi SQLite format 3, và kích thước tệp luôn đúng bằng page_size nhân page_count

Bài mở đầu sê-ri SQLite đo thật: SQLite không phải tiến trình máy chủ mà là một thư viện nhúng, cả CSDL là một file duy nhất. Đo trong container sqlite 3.45.3: file rỗng 0 byte cho tới lần ghi đầu, sau một CREATE TABLE là đúng 8192 byte (2 trang 4096), 16 byte đầu là chuỗi ma thuật SQLite format 3, page_size nằm ở offset 16 (0x1000 = 4096), bật WAL đổi hai byte phiên bản từ 01/01 sang 02/02, và bảng lược đồ sqlite_master chính là một cây B-tree nằm trên trang 1.

Cơ sở dữ liệu 15/11/2026 7 phút

SQLite đo thật — cây B-tree: vì sao một triệu dòng chỉ sâu ba tầng nên tìm theo khóa chính tốn tối đa ba lần đọc trang, và index là một cây B-tree riêng nhỏ hơn nằm cạnh cây của bảng

Phần 2 sê-ri SQLite đo thật: mọi bảng và index trong SQLite đều là một cây B-tree. Đo trong container sqlite 3.45.3 bằng bảng ảo dbstat: bảng một triệu dòng dùng 7125 trang nhưng cây chỉ sâu 3 tầng vì mỗi trang trong (internal) trỏ tới trung bình 373 trang con — hệ số phân nhánh khổng lồ khiến chiều cao cây tăng theo log cơ số lớn. Trang lá chứa trọn dòng dữ liệu (trung bình 140 dòng/trang), trang trong chỉ chứa khóa và con trỏ để điều hướng. Tạo index trên một cột sinh ra một cây B-tree thứ hai riêng biệt, nhỏ hơn vì chỉ lưu cột đó cộng rowid.