Prepared Statment Cache#4
Open
amattn wants to merge 2 commits into
Open
Conversation
current benchmarks seeing approx 2x performance improvement with load.
Contributor
Author
|
More bencharks: The environment is a bit suspect (running on an ubuntu VM inside of Mac OS X rMBP) but the general trends seem to hold up across all three DBs:
|
Owner
|
I do want to include statement caching, but there are a few things I want to work out first. So I'm not ignoring you, but I'm not quite ready to merge anything yet. |
Contributor
Author
|
@russross No worries! Looking forward to it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
current benchmarks seeing approx 85% performance improvement with load, ~60% with save.
Most of what I learned about database/sql came from here:
https://github.com/VividCortex/go-database-sql-tutorial
A great read and one of the key takeaways was that you should pretty much always be using prepared statements.
This particular implementation of a statement cache includes lightweight wrappers around Exec, Query and QueryRows so that the cache can be a drop in replacement. Compare benchmark examples to see the two line code changes.
A more through implementation would possibly be integrated into Save/Load directly. Also a future enhancement could be the use of an LRU or adaptive replacement cache, rather than the naive, permanent cache in this pull request.