|
|
|
|
|
by AdamProut
1519 days ago
|
|
For scan heavy apps columnstores will be much much faster. For simple CRUD apps that just want to read/write a few rows at a time (with high concurrency) they have a number of inefficiencies vs a rowstore. - Columnstore often don't support indexing at all (or have
weak support for it). This means a scan is needed to find
any row (with min/max or segment elimination to avoid
opening up files with no matching rows at all). Even if
this scan is very fast, its still going to use up more CPU
then an index seek.
- Most columnstores don't use compression schemes that are
incremental. To grab a single row the columnstore likely
decompresses many adjacent rows (could be millions of rows
- depends on the particular columnstore).
- Most columnstores don't support fine grained locking
(row level locking). They often lock the entire table or
an entire segment (millions?) of rows whenever a single
row is written to. This damages concurrency.
- The row reconstruction costs are high (gluing the
columns back together)
We have a SingleStoreDB paper in this years SIGMOD that goes into these implementation details (not publicly published just yet). The columnstore in SinglestoreDB is reasonably good at OLTP without sacrificing its OLAP performance (see some benchmarking results here: https://www.singlestore.com/blog/tpc-benchmarking-results/). |
|
Have you considered re-benchmarking with TPC-E? It's the updated version of the OLTP test that more accurately represents these sorts of apps:
It's a difference between a 10/1 read/write ratio, and a 2/1 read/write ratio. I've never worked on a line-of-business/SaaS app with a ratio lower than 80% reads FWIW.https://www.tpc.org/tpce/default5.asp
http://www.cs.cmu.edu/~chensm/papers/TPCE-sigmod-record10.pd...