Small Restaurant Site SQLite Benchmark
Local macOS production-methodology request-load comparison for a small restaurant WordPress site: 10 pages, 6 blog posts, comments, reservation-request writes, and wp-admin editor/admin paths. Negative latency deltas mean SQLite was faster; positive throughput deltas mean SQLite completed more work.
3repetitions per workload/concurrent-request cell
4, 16, 32, 64concurrent requests tested
0SQLite WAL PR #405 failed benchmark flows
0SQLite WAL PR #405 lock/busy log events
This is a local diagnostic, not the blocked dedicated-Linux full matrix. The measured window starts after fixture restore, server startup, login setup, and warm-up.
How The Test Was Conducted
- Create the same small restaurant WordPress fixture for MariaDB and SQLite: homepage, menu, reservations, contact, about, event/catering/gallery/location/journal pages, six posts, seed comments, seed reservations, and benchmark users.
- Before every measured cell, restore that variant's clean database snapshot so previous writes do not affect the next run.
- Start local nginx and PHP-FPM for the case, log in worker admin sessions outside the measured timing window, and run a warm-up for 5.0 seconds.
- Measure for 20.0 seconds with the configured concurrent-request count.
- Read-heavy flow mix: public page/menu/search/REST reads plus a small amount of logged-in wp-admin reads.
- Balanced and write-heavy mixes add verified comment writes, public reservation-request writes, and authenticated editor-save simulations.
- Record full-flow latency, average request completion time, throughput, write throughput, failures, write verification, SQLite WAL size, and SQLite lock/busy logs.
SQLite WAL PR #405 vs MariaDB Delta Heatmaps
Throughput And Tail Latency
Aggregate Table
| Variant | Workload | Concurrent requests | Reps | Median flows/s | Avg request completion | p95 flow latency | Verified writes/s | Failed flows | Write verify failures | SQLite lock/busy | Max WAL bytes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| mariadb-innodb-baseline | balanced | 4 | 3 | 76.18 | 33ms | 131ms | 15.55 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | balanced | 16 | 3 | 103.94 | 98ms | 549ms | 21.01 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | balanced | 32 | 3 | 105.26 | 183ms | 1.16s | 20.98 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | balanced | 64 | 3 | 109.55 | 363ms | 2.17s | 23.63 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | read-heavy | 4 | 3 | 120.50 | 20ms | 72ms | 0.00 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | read-heavy | 16 | 3 | 119.87 | 79ms | 322ms | 0.00 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | read-heavy | 32 | 3 | 119.55 | 166ms | 668ms | 0.00 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | read-heavy | 64 | 3 | 106.94 | 362ms | 1.42s | 0.00 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | write-heavy | 4 | 3 | 64.55 | 44ms | 144ms | 18.94 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | write-heavy | 16 | 3 | 94.30 | 121ms | 567ms | 28.06 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | write-heavy | 32 | 3 | 106.12 | 217ms | 1.07s | 33.02 | 0 | 0 | 0 | 0 |
| mariadb-innodb-baseline | write-heavy | 64 | 3 | 118.70 | 403ms | 1.88s | 36.52 | 0 | 0 | 0 | 0 |
| sqlite-wal-pr405 | balanced | 4 | 3 | 98.26 | 26ms | 99ms | 19.89 | 0 | 0 | 0 | 4148872 |
| sqlite-wal-pr405 | balanced | 16 | 3 | 98.98 | 102ms | 412ms | 19.93 | 0 | 0 | 0 | 4466112 |
| sqlite-wal-pr405 | balanced | 32 | 3 | 93.32 | 206ms | 814ms | 18.63 | 0 | 0 | 0 | 5224192 |
| sqlite-wal-pr405 | balanced | 64 | 3 | 99.37 | 400ms | 1.58s | 21.13 | 0 | 0 | 0 | 6052312 |
| sqlite-wal-pr405 | read-heavy | 4 | 3 | 100.09 | 25ms | 89ms | 0.00 | 0 | 0 | 0 | 82432 |
| sqlite-wal-pr405 | read-heavy | 16 | 3 | 95.81 | 98ms | 375ms | 0.00 | 0 | 0 | 0 | 74192 |
| sqlite-wal-pr405 | read-heavy | 32 | 3 | 96.96 | 203ms | 731ms | 0.00 | 0 | 0 | 0 | 78312 |
| sqlite-wal-pr405 | read-heavy | 64 | 3 | 94.83 | 404ms | 1.48s | 0.00 | 0 | 0 | 0 | 86552 |
| sqlite-wal-pr405 | write-heavy | 4 | 3 | 102.92 | 27ms | 99ms | 30.31 | 0 | 0 | 0 | 4264232 |
| sqlite-wal-pr405 | write-heavy | 16 | 3 | 102.77 | 111ms | 442ms | 29.84 | 0 | 0 | 0 | 4997592 |
| sqlite-wal-pr405 | write-heavy | 32 | 3 | 101.52 | 228ms | 848ms | 31.36 | 0 | 0 | 0 | 6373672 |
| sqlite-wal-pr405 | write-heavy | 64 | 3 | 104.63 | 444ms | 1.65s | 31.31 | 0 | 0 | 0 | 18581232 |