perf: Speedup empty db.{commit|rollback}
by ~2x
#28885
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ref:
Both Postgres and MariaDB support re-creating a new transaction using single command, so, no need to send 2 separate commands 😄
Note: 2x obviously won't hold when there's something to flush to disk because it will require an
fsync
. This should still help in the vast majority of read-only requests.Side effects:
1. No more "logging" of these queries, can be solved by just fake logging.2. Things that don't start transaction will now also won't rollback.
So
ping
might not even connect to DB.Note: previous impl used
conn.commit()
feature of DB-API 2.0 but they don't allow chaining so in the end they are less efficient than a single query that can do both.closes frappe/caffeine#28