MYSQL 与 MYSQL 之间的性能差异

Peformance difference between YSQL vs YCQL

根据文档"Benchmarking Distributed SQL Databases" 与 YSQL 相比,YCQL 中的吞吐量更高。

如果我们使用相同的 table 结构和插入工具将是相同的并且我没有使用任何 SQL 类似的功能那么为什么 YCQL 与 Y[= 相比表现更好15=]?

这可能是因为 YCQL 和 YSQL 之间存在一些差异。请注意,虽然这些差异不是体系结构的基础,但它们是显而易见的,因为 YSQL 从数据库上半部分的 PostgreSQL 代码开始。其中许多正在得到增强。

单跳优化 YCQL 分片感知并且知道底层数据库(称为 DocDB)如何跨节点分片和分发数据。这意味着它可以在使用 PREPARE-BIND 语句时直接“跳转”到包含数据的节点。今天的 YSQL 不能这样做,因为这需要 JDBC 级别的协议更改,这项工作正在 jdbc-yugabytedb 项目中完成。

线程而不是进程 YCQL 使用线程来处理传入的客户端queries/statements,而 YSQL(和 PostgreSQL 代码)使用进程。这些进程更重,这可能会影响某些场景中的吞吐量(以及某些其他场景中的连接可扩展性)。这是计划中的另一个增强功能。

Upsert vs insert 在YCQL中,每次insert都被当做一个upsert(update或insert,无需检查已有值) 默认情况下需要特殊语法来执行纯插入。在 YSQL 中,每次插入都需要在执行插入之前读取数据,因为如果键已经存在,则将其视为失败。

更多工作进入 YCQL 性能 目前(2019 年底)重点只放在 YSQL 的正确性和功能上,而 YCQL 性能已经做了很多工作。请注意,虽然性能方面的工作刚刚开始,但由于底层架构的原因,可以相对快速地提高性能。