我想在某些节点上使用流行的YCSB基准测试工具对某些NoSQL数据库进行基准测试(CRUD操作)。
但在我这样做之前,我想了解这些数据库在CRUD基准测试方面的关键机制。例如。像MVCC这样的并发控制对性能有很大影响吗?还是......
答案 0 :(得分:1)
进行良好的性能测试很难,产生可靠的测试更难。 话虽这么说,你是正确的,需要
了解此类数据库的关键机制
关键瓶颈始终是磁盘I / O.当您了解NoSQL DB的工作原理时,请查看它写入磁盘的方式和时间,并将其跟踪到真正的fsync()
调用。你可能会感到不愉快。然后看看CAP theorem。了解DB作者所做出的妥协。如果他们另有说法,请查看代码以证明他们是错的。清楚地了解这个DB是什么CAP。您无法比较CP与AP并获得任何有意义的结论。虽然可以按摩并改变您的商业案例,但它更适合特定的DB。相反的情况也是如此 - 如果你的用例确定最终的一致性,你有一个NoSQL dbs选择,如果没有 - 你有另一个。
答案 1 :(得分:1)
这取决于您要测试的特定NoSQL数据库。 如果他们在内存中具有像Redis,CouchBase,Tarantool,Aerospike这样的持久性,那么CRUD操作应该非常快,因为他们所做的只是写入文件的末尾(通常称为预写日志)并改变内存结构
当涉及到并发性时,它也取决于。例如,Tarantool是完全非阻塞的,否则Redis是单线程的,所以你应该并行发出大量的CRUD操作来测试它。