Restaurant WordPress Server Load: MariaDB vs SQLite rc3
Local macOS production-methodology request-load run for the same small restaurant WordPress site, comparing MariaDB/InnoDB with SQLite Database Integration v3.0.0-rc.3. This page focuses on CPU, memory, disk, network, WAL, and operational failure signals.
Run date: 2026-06-11 15:10:33 UTC. Workloads were read-heavy, balanced, and write-heavy at 4, 16, 32, and 64 concurrent requests. Each measured window ran for 20 seconds after a 5 second warm-up. Resource samples were collected roughly once per second during the measured window.
Bottom Line
- SQLite used more process CPU per unit of completed work in every workload and concurrency cell: +22.7% to +48.7% CPU core-seconds per 1k successful flows.
- SQLite PHP-FPM memory was also consistently higher: +85 MiB to +886 MiB above MariaDB depending on workload and concurrency.
- Read-heavy throughput was consistently lower for SQLite: -19.6% to -17.5%.
- Balanced and write-heavy p95 latency often improved with SQLite despite the higher CPU load: balanced p95 deltas were -31.8% to -13.3%, and write-heavy p95 deltas were -27.0% to -3.0%.
- SQLite WAL growth remained small for read-heavy cases and peaked at 26.9 MiB in the write-heavy c64 cell. Post-case passive checkpoints reported no remaining checkpoint backlog in the benchmark logs.
Interpret total RSS carefully: the MariaDB daemon was present on the host even during SQLite cases, so total RSS includes idle MariaDB memory in SQLite measurements. PHP-FPM RSS and CPU core-seconds per 1k flows are the cleaner cross-variant signals in this local run.
SQLite vs MariaDB Delta Summary
Positive throughput and writes/sec are better for SQLite. Negative p95 latency, CPU per 1k flows, and memory deltas are better for SQLite.
| Workload | Concurrent requests | Throughput | p95 latency | CPU core-s / 1k flows | PHP-FPM RSS | Writes/sec |
|---|---|---|---|---|---|---|
| read-heavy | 4 | -19.6% | +25.7% | +30.3% | +85 MiB | n/a |
| read-heavy | 16 | -17.8% | +16.0% | +22.7% | +330 MiB | n/a |
| read-heavy | 32 | -18.6% | +11.7% | +28.2% | +378 MiB | n/a |
| read-heavy | 64 | -17.5% | +15.5% | +36.3% | +525 MiB | n/a |
| balanced | 4 | +38.9% | -31.8% | +23.4% | +119 MiB | +42.0% |
| balanced | 16 | -7.1% | -23.2% | +24.0% | +336 MiB | -6.8% |
| balanced | 32 | -15.6% | -26.2% | +40.9% | +377 MiB | -16.5% |
| balanced | 64 | -14.9% | -13.3% | +36.4% | +726 MiB | -15.3% |
| write-heavy | 4 | +47.9% | -27.0% | +36.7% | +126 MiB | +51.2% |
| write-heavy | 16 | +1.8% | -12.7% | +42.1% | +336 MiB | +1.1% |
| write-heavy | 32 | -4.2% | -16.1% | +39.1% | +468 MiB | -4.9% |
| write-heavy | 64 | -15.8% | -3.0% | +48.7% | +886 MiB | -15.3% |
CPU Cost Delta
SQLite CPU core-seconds per 1k successful flows compared with MariaDB. Lower is better.
| Workload | c4 | c16 | c32 | c64 |
|---|---|---|---|---|
| read-heavy | +30.3% | +22.7% | +28.2% | +36.3% |
| balanced | +23.4% | +24.0% | +40.9% | +36.4% |
| write-heavy | +36.7% | +42.1% | +39.1% | +48.7% |
PHP-FPM Memory Delta
SQLite max PHP-FPM RSS minus MariaDB max PHP-FPM RSS. Lower is better.
| Workload | c4 | c16 | c32 | c64 |
|---|---|---|---|---|
| read-heavy | +85 MiB | +330 MiB | +378 MiB | +525 MiB |
| balanced | +119 MiB | +336 MiB | +377 MiB | +726 MiB |
| write-heavy | +126 MiB | +336 MiB | +468 MiB | +886 MiB |
Throughput Delta
SQLite completed flows per second compared with MariaDB. Higher is better.
| Workload | c4 | c16 | c32 | c64 |
|---|---|---|---|---|
| read-heavy | -19.6% | -17.8% | -18.6% | -17.5% |
| balanced | +38.9% | -7.1% | -15.6% | -14.9% |
| write-heavy | +47.9% | +1.8% | -4.2% | -15.8% |
p95 Latency Delta
SQLite full-flow p95 latency compared with MariaDB. Lower is better.
| Workload | c4 | c16 | c32 | c64 |
|---|---|---|---|---|
| read-heavy | +25.7% | +16.0% | +11.7% | +15.5% |
| balanced | -31.8% | -23.2% | -26.2% | -13.3% |
| write-heavy | -27.0% | -12.7% | -16.1% | -3.0% |
Resource Metrics By Cell
CPU is approximate process core-seconds per 1k successful flows, derived by integrating sampled process CPU percentages across the measured window. Max process CPU can exceed 100% because the VM had multiple CPUs.
| Variant | Workload | Concurrent requests | Flows/sec | p95 | CPU core-s / 1k | Max process CPU | Max PHP RSS | Max DB RSS | Max total RSS | Max disk MB/sample | Loopback MB/s |
|---|---|---|---|---|---|---|---|---|---|---|---|
| MariaDB | balanced | 4 | 69.38 | 147ms | 31.00 | 319% | 646 MiB | 149 MiB | 818 MiB | 11.79 | 28.66 |
| MariaDB | balanced | 16 | 102.17 | 575ms | 31.10 | 355% | 957 MiB | 149 MiB | 1,123 MiB | 13.66 | 41.25 |
| MariaDB | balanced | 32 | 106.17 | 1.22s | 29.02 | 359% | 1,603 MiB | 149 MiB | 1,754 MiB | 13.66 | 43.83 |
| MariaDB | balanced | 64 | 108.04 | 2.14s | 29.06 | 357% | 2,727 MiB | 150 MiB | 2,896 MiB | 23.35 | 42.51 |
| MariaDB | read-heavy | 4 | 116.18 | 76ms | 29.96 | 366% | 643 MiB | 149 MiB | 813 MiB | 13.23 | 42.34 |
| MariaDB | read-heavy | 16 | 108.78 | 346ms | 32.72 | 372% | 942 MiB | 149 MiB | 1,114 MiB | 29.55 | 40.56 |
| MariaDB | read-heavy | 32 | 113.48 | 696ms | 30.69 | 368% | 1,522 MiB | 149 MiB | 1,690 MiB | 18.53 | 40.84 |
| MariaDB | read-heavy | 64 | 110.72 | 1.40s | 31.14 | 363% | 2,707 MiB | 149 MiB | 2,879 MiB | 12.71 | 42.00 |
| MariaDB | write-heavy | 4 | 65.18 | 146ms | 28.02 | 295% | 657 MiB | 150 MiB | 827 MiB | 27.46 | 28.60 |
| MariaDB | write-heavy | 16 | 94.01 | 561ms | 26.63 | 332% | 971 MiB | 150 MiB | 1,140 MiB | 14.54 | 43.28 |
| MariaDB | write-heavy | 32 | 103.53 | 1.09s | 26.52 | 334% | 1,583 MiB | 150 MiB | 1,746 MiB | 15.86 | 47.45 |
| MariaDB | write-heavy | 64 | 111.82 | 2.01s | 26.38 | 349% | 2,758 MiB | 151 MiB | 2,934 MiB | 13.91 | 51.87 |
| SQLite rc3 | balanced | 4 | 96.39 | 100ms | 38.26 | 384% | 765 MiB | 149 MiB | 936 MiB | 12.72 | 40.44 |
| SQLite rc3 | balanced | 16 | 94.87 | 442ms | 38.55 | 380% | 1,293 MiB | 149 MiB | 1,466 MiB | 16.58 | 37.47 |
| SQLite rc3 | balanced | 32 | 89.65 | 903ms | 40.90 | 378% | 1,981 MiB | 149 MiB | 2,156 MiB | 15.75 | 37.12 |
| SQLite rc3 | balanced | 64 | 91.97 | 1.85s | 39.63 | 380% | 3,453 MiB | 149 MiB | 3,623 MiB | 15.04 | 37.06 |
| SQLite rc3 | read-heavy | 4 | 93.45 | 95ms | 39.05 | 383% | 728 MiB | 149 MiB | 893 MiB | 10.54 | 33.98 |
| SQLite rc3 | read-heavy | 16 | 89.43 | 402ms | 40.15 | 380% | 1,273 MiB | 149 MiB | 1,410 MiB | 8.44 | 33.76 |
| SQLite rc3 | read-heavy | 32 | 92.39 | 778ms | 39.33 | 379% | 1,900 MiB | 149 MiB | 2,038 MiB | 11.64 | 33.54 |
| SQLite rc3 | read-heavy | 64 | 91.29 | 1.62s | 42.45 | 378% | 3,232 MiB | 149 MiB | 3,408 MiB | 12.38 | 33.31 |
| SQLite rc3 | write-heavy | 4 | 96.43 | 106ms | 38.29 | 380% | 783 MiB | 150 MiB | 956 MiB | 20.75 | 44.02 |
| SQLite rc3 | write-heavy | 16 | 95.71 | 490ms | 37.85 | 377% | 1,307 MiB | 150 MiB | 1,465 MiB | 17.50 | 45.09 |
| SQLite rc3 | write-heavy | 32 | 99.18 | 915ms | 36.88 | 382% | 2,051 MiB | 150 MiB | 2,214 MiB | 16.22 | 45.47 |
| SQLite rc3 | write-heavy | 64 | 94.18 | 1.95s | 39.23 | 377% | 3,643 MiB | 151 MiB | 3,818 MiB | 19.65 | 43.15 |
Correctness And Error Signals
Artifacts
- Aggregate CSV with median performance and resource metrics per variant/workload/concurrency cell.
- Per-case CSV with all 72 measured cases.
- Per-case JSON with detailed counters and resource summaries.
- Resource samples index linking each case to raw JSONL samples under
resource-samples/. - Generated Markdown summary from the benchmark runner.
- Performance visual report from the same run.