-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Could we remove mtx
from prefixdb
?
#156
Comments
Queries in the SDK are routed through Tendermint which holds a global mutex across the ABCI connection, this is the main bottleneck of the SDK outside the underlying storage issues with IAVL. In the near future the SDK and Tendermint will stop using this repo and house their own db interface implementations internally. This will lend itself to better performance. We are also working on making SDK state access concurrent with the recent storage ADR. This all being the case, I'm not sure if it is worth doing this work as it is still unclear if we will do another release with this repo. |
Even though this repo might be not used in the future, I'd like to discuss why |
Quickly reading the code, the reason we would need a mutex is that we can't assume the underlying database is concurrently safe. This is an overall problem with this repo. Abstracting DBs means we can make fewer assumptions of the underlying db. |
AFAIK, the all db implementation should be concurrency safe. The description also shows it. Line 16 in 53ed3db
|
hi @jinsankim , I have the same issue now. Did you make any progress afterwards? |
Hey seems this change would be acceptable. Would you want to see about upstreaming it? |
I'm investigating how to increase concurrency in terms of cosmos-sdk app. To my understanding, almost db access paths from
cosmos store
todb backend
are serialized bymtx
. I think it's not a good idea for performance. As a bottom layer of db access path, I'd like to removemtx
fromprefixdb
. (Please note thatcosmos/iavlStore
depends on thisprefixdb
).prefixdb
wraps anothertm-db
instance and this anothertm-db
is already concurrency safe by CONTRACT. So, intuitionally, I think we could removemtx
fromprefixdb
. HDYT?The text was updated successfully, but these errors were encountered: