YSQL与YCQL之间的性能差异

时间:2019-12-26 14:53:23

标签: yugabyte-db

基于文档“对分布式SQL数据库进行基准测试”,可以看到与YSQL相比,YCQL的吞吐量更高。

如果我们使用相同的表结构并且要插入的工具是相同的,而我没有使用任何类似SQL的功能,那么为什么与YSQL相比YCQL的性能更好?

1 个答案:

答案 0 :(得分:0)

这可能是由于YCQL和YSQL之间的一些差异。请注意,尽管这些差异不是体系结构的基础,但它们之所以明显,是因为YSQL从数据库上半部分的PostgreSQL代码开始。其中许多功能都得到了增强。

单跳优化 YCQL具有 shard-ware 的功能,并且知道基础DB(称为DocDB)如何分片并在节点之间分配数据。这意味着在使用PREPARE-BIND语句时,它可以直接“跳到”包含数据的节点。今天的YSQL无法做到这一点,因为这需要更改JDBC级别的协议,这项工作正在jdbc-yugabytedb项目中完成。

线程而不是进程。YCQL使用线程来处理传入的客户端查询/语句,而YSQL(和PostgreSQL代码)使用进程。这些过程的重量较重,这可能会影响某些情况下的吞吐量(以及某些其他情况下的连接可伸缩性)。这是计划中的另一项改进。

Upsert与插入在YCQL中,默认情况下,每个插入都被视为 upsert (更新或插入,而不必检查现有值),并且需要特殊语法来执行纯插入。在YSQL中,每个插入操作都需要在执行插入操作之前读取数据,因为如果密钥已经存在,则将其视为失败。

有关YCQL性能的更多工作目前(到2019年底),重点仅放在YSQL的正确性和功能上,而YCQL性能已经做了很多工作。请注意,虽然有关性能的工作才刚刚开始,但由于具有基础架构,因此可以相对快速地提高性能。