several days ago i tested the performance of crdb，and find some critical problems for us(because our insert workload is auto increment)：
1.Although the single random insert performance is fine for us(14k qps for 5 nodes),but auto increment single insert is actually not very satisfying for us(1.3k qps for 5 nodes,and dont scale with node numbers).
I know it is mainly caused by request piled up in raft procedure,but i test tidb ,its auto increment insert is better than crdb: 5k qps for 1 node,and scale to 12k qps for 5 node.
I guess there may be two main reasons for this result:
- tidb is not strictly auto increment ,it seems each node of its cluster will ask for a range of numbers(e.g. node 1 has 1~10000, node 2 has 10001~40000),and each node auto increment in its own range.so each node will not cause much contention when auto increment insert.
- tidb seems will batch several requests and send it all together to raft,maybe this feature increased the throughput of auto increment insert for tidb.
2.crdb dont support serial increment numbers(like 1,2,3,4…),but like i said above,tidb support it.So i want to know does crdb have a plan to support it too? Actually i think it is a really useful features for mysql user.
The above feature seems not very diffcult to realize(because it is not strictly auto increment which is diffcult for distributed system to realize),but will make crdb much friendly for us and mysql (really wishes crdb could be better and better).
Besides,is there any tricks to improve the single auto increment insert performance currently?