mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-26 12:34:22 +01:00
Closes #2440 ## Fix 1 Do not start a read transaction when a SELECT is not going to access the database, which means we can avoid checking whether the schema has changed. ## Fix 2 Add a field `accesses_db` to `Program` and `Statement` so we can avoid even checking for `SchemaUpdated` errors when it's not possible to get one. ## Fix 3 Avoid doing any work in `commit_txn` when not in a transaction. This optimization is only enabled when `mv_store.is_none()`, because MVCC has its own logic and this doesn't work with MVCC enabled, and honestly I'm too tired to find out why. Left an inline comment about it, though. ```sql Execute `SELECT 1`/limbo_execute_select_1 time: [21.440 ns 21.513 ns 21.586 ns] change: [-60.766% -60.616% -60.453%] (p = 0.00 < 0.05) Performance has improved. ``` Effect is even more dramatic in CI where the latency is down over 80% Closes #2441