We are using QuestDB and reading data from Python. It behaves well generally, but we get table busy
errors whenever we are launching many queries at the same time.
psycopg2.DatabaseError: [-1]: table busy [reason=unknown]
If we are querying only a few queries in parallel is all good, but when we start sending a few hundreds of concurrent queries we are getting the error.
The query shouldn't be blocking anything as it is just reading data. Also, just in case I checked the TX WAL and the table is caught up.
We are using QuestDB and reading data from Python. It behaves well generally, but we get table busy
errors whenever we are launching many queries at the same time.
psycopg2.DatabaseError: [-1]: table busy [reason=unknown]
If we are querying only a few queries in parallel is all good, but when we start sending a few hundreds of concurrent queries we are getting the error.
The query shouldn't be blocking anything as it is just reading data. Also, just in case I checked the TX WAL and the table is caught up.
Share Improve this question asked Jan 30 at 16:50 Javier RamirezJavier Ramirez 4,0321 gold badge27 silver badges36 bronze badges1 Answer
Reset to default 0This can happen when we run out of pooled readers. QuestDB uses a default of 10*16 readers. It can be increased by changing:
cairo.reader.pool.max.segments=10
Or the equivalent as an env variable
QDB_CAIRO_READER_POOL_MAX_SEGMENTS=10
Switching to some number N such as N*16 is below our expected query concurrency should help here.