· duckdb / sqlite / database

DuckDB vs SQLite: analytics trên máy tính cá nhân 2026

Với query nào chạm đến hơn vài nghìn dòng, DuckDB thắng cách biệt. SQLite vẫn làm chủ persistence và indexed lookup. Đây là thời điểm nên dùng cái nào.

Bởi · Cập nhật 25 tháng 5, 2026

1.103 từ · 6 phút đọc

Với query nào chạm đến hơn vài nghìn dòng, DuckDB là câu trả lời đúng. SQLite chỉ thắng khi bạn đã dùng nó cho app persistence và không muốn thêm dependency.

Bài này dành cho ai

Data engineer, analyst, và Python developer đang chọn local database cho analytical workload trong năm 2026. Nếu bạn đang xây ứng dụng với các lookup nhỏ, nhanh — mobile, browser, embedded — dừng ở đây: SQLite là câu trả lời và bài này sẽ không thay đổi quyết định của bạn.

Phiên bản sử dụng

Tất cả kết quả dưới đây dựa trên:

DatabasePhiên bảnPhát hành
DuckDB1.5.320 tháng 5, 2026
SQLite3.53.15 tháng 5, 2026

Benchmark trích dẫn từ bộ benchmark SQLite vs DuckDB của Lukas Barth (DuckDB v0.9.1 tại thời điểm đo — DuckDB hiện tại nhanh hơn, nên hãy coi các con số này là ngưỡng thấp nhất, không phải trần).

Hiệu năng truy vấn

Analytical query: DuckDB hơn hẳn một bậc

DuckDB là columnar engine được thiết kế cho OLAP. SQLite là row-store thiết kế cho transactional workload. Khi chạy full-table scan hoặc aggregation, khoảng cách là rất lớn.

WorkloadDuckDBSQLiteTỷ lệ
Direction ID scan (~850K dòng, bảng GTFS 35M dòng)2.90 ms2,722 msDuckDB nhanh hơn 938×
Route ID scan (~63 dòng trung bình, GTFS)7.70 ms182 msDuckDB nhanh hơn 23.6×

Transactional lookup: SQLite thắng

Khi đảo ngược workload sang indexed point lookup, câu chuyện đổi chiều hoàn toàn.

WorkloadSQLiteDuckDBTỷ lệ
Primary key lookup0.063 ms0.927 msSQLite nhanh hơn 14.7×
Composite key lookup0.078 ms9.68 msSQLite nhanh hơn 124×
Indexed join0.118 ms13.3 msSQLite nhanh hơn 112.7×

DuckDB không được xây dựng cho low-latency point query. Chi phí khởi động mỗi query của nó cao hơn vì nó compile query plan, song song hóa execution, và phải chịu setup cost mỗi lần. Điều đó xứng đáng với aggregation; không xứng đáng khi bạn đã biết địa chỉ row cần lấy.

Hệ sinh thái Python

Tích hợp Python của DuckDB là lý do hầu hết data engineer chọn nó ngày nay.

import duckdb
import pandas as pd

df = pd.read_csv("events.csv")
# query trực tiếp trên dataframe — không cần import trước
result = duckdb.sql("SELECT user_id, COUNT(*) FROM df GROUP BY user_id").df()

Bạn cũng có thể trả về Polars hoặc Arrow mà không cần copy dữ liệu:

# trả về Polars DataFrame qua Arrow
polars_df = duckdb.sql("SELECT * FROM df WHERE amount > 100").pl()

SQLite cần đi qua pd.to_sql() trước. Không có hỗ trợ Arrow gốc. Với ad-hoc analytics trên DataFrame, DuckDB là lựa chọn mặc định rõ ràng.

Hỗ trợ định dạng file

DuckDB đọc Parquet, CSV, JSON, Arrow, Delta, và Iceberg gốc — không cần import trước, không cần bảng trung gian.

# query file Parquet trên disk mà không cần load trước
duckdb.sql("SELECT * FROM 'events.parquet' WHERE ts > '2026-01-01'").show()

SQLite dùng định dạng độc quyền của riêng nó. Mọi định dạng khác đều cần import thủ công. Nếu dữ liệu của bạn nằm trong Parquet hoặc đến từ Arrow pipeline, DuckDB giảm đáng kể ma sát.

Mở rộng lên cloud

DuckDB là engine đứng sau MotherDuck, cho phép chạy cùng query DuckDB trên cloud storage mà không cần viết lại bất cứ thứ gì.

GóiGiá
Free10 GB storage + 10 compute-hours/tháng
Business$250/tháng

Nguồn: MotherDuck pricing

SQLite không có dịch vụ cloud chính thức. Các lựa chọn bên thứ ba — Turso, LiteFS, SQLite Cloud — tồn tại nhưng là những sản phẩm riêng biệt với API riêng và đánh đổi riêng. Không cái nào cung cấp con đường “cùng code, chạy trên cloud” như MotherDuck.

Không có chương trình affiliate nào với DuckDB, SQLite, hay MotherDuck.

Mức độ phổ biến của DuckDB và SQLite

DuckDB: 30K GitHub stars (tháng 6/2025), ~41M lượt tải PyPI mỗi tháng (tháng 5/2026), 3.3% người dùng trong Stack Overflow Developer Survey 2025, DB-Engines hạng #42.

SQLite: hàng tỷ lần triển khai trong mọi smartphone, browser, và hệ điều hành. Không có đối thủ thực sự trong embedded storage.

Trên thực tế, hai cái không cạnh tranh cùng phân khúc — tăng trưởng của DuckDB đang diễn ra ở analytics layer, không phải trên phần embedded mà SQLite đang nắm giữ.

Nếu analytical workload của bạn vượt ra ngoài khả năng một máy đơn, ClickHouse vs Postgres cho analytics so sánh các columnar database được thiết kế cho dataset 100M+ dòng.

Kết luận

Chọn DuckDB nếu:

  • Bạn chạy analytics, aggregation, hoặc join trên hơn 10K dòng
  • Bạn làm việc trong Python với pandas, Polars, hoặc Arrow
  • Dữ liệu của bạn nằm trong Parquet, CSV, hoặc JSON và bạn muốn query trực tiếp không cần import
  • Bạn muốn có lộ trình mở rộng lên cloud qua MotherDuck

Chọn SQLite nếu:

  • Bạn đang xây app persistence, mobile backend, hoặc browser storage
  • Bạn cần indexed lookup nhanh trên dataset nhỏ đến vừa
  • Bạn đã dùng SQLite và không muốn thêm dependency
  • Kích thước binary nhỏ là yêu cầu (~600 KB so với ~5 MB)

Nếu bạn đang outgrow SQLite và cần đánh giá các database quan hệ truyền thống, Postgres vs MySQL 2026 so sánh hai lựa chọn phổ biến nhất cho app persistence.

Lưu ý

Các con số benchmark ở trên dùng DuckDB v0.9.1 (Lukas Barth, 2024). DuckDB đã ra nhiều major version kể từ đó. DuckDB 1.5.3 hiện tại nhanh hơn trên analytical workload; lợi thế point-lookup của SQLite trên indexed query là do cấu trúc và khó có thể thay đổi. Hãy coi tất cả tỷ lệ là đúng về xu hướng nhưng có thể đang thấp hơn lợi thế analytical thực tế của DuckDB hiện tại.

Tài liệu tham khảo