mariadb 或 mysql 上插入的“正常”延迟/性能是多少?

mariadb 或 mysql 上插入的“正常”延迟/性能是多少?

多年来一直没有使用 MySQL 系列。现在需要从 OracleDB 迁移到 MariaDB 或 PostgreSQL。

因此在类似的“硬件”(,,Openstack VM: RHEL 7.3)上得到了并排。4HT cores of 2.5GHz Xeon E312xx"local" SAN & SATA storageOracle11gMariaDB10.3

创建了一组简单的 10 列表,其中有数字主键,没有索引/触发器/等。一个 Java(Hibernate+JDBC)1 线程 1 连接应用程序,循环中仅执行 6 次插入(每 100 个周期提交一次)。

我要么做错了什么,要么对 MariaDB 的性能期望过高,但在 OracleDB 上,此例程需要 348ms/周期(6*100 插入 + 提交),而在 MariaDB 上同样需要 3291ms/周期,换句话说,在相同硬件上比 OracleDB 慢 10 倍左右(我在 Java 应用程序中切换的只是休眠方言和连接 url/用户/密码)。我确实使用 tcpdumps 仔细检查了该应用程序是否具有相同的性能,只是数据库的响应时间相差很大。

就我目前所见,我应该降低对 MariaDB 性能的期望,还是应该继续深入研究 IOwait 跟踪或对 MariaDB 进行微调?只是在任何地方都找不到 MariaDB 的“正常”性能参考(在某些参考硬件上)... 5+ms/insert 感觉“太多了”...


更新:

找到了文章

显示它们PrepareStatementBatch100InsertPrepareHit.mariadb
(执行 1000 次插入批次)在 5 毫秒内完成,因此每次插入大约需要 5 微秒……
看来我们的设置比预期慢 1000 倍……


更新 2

从 Openstack VM 移至裸机等效物(所有参数相同,但 CPU 为 Xeon E5450 @3GHz 的 4HT 核心)。使用默认设置安装 OracleDB 和 MariaDB,迁移架构。

在裸机 MariaDB 上,“6*100 INSERT + 提交”花费 430ms/周期,完全可以与 OracleDB 媲美(从某种意义上说,通过普通的 jdbc/PreparedStatements 执行此操作而无需任何批处理,也完全可以接受)。“6*100 DELETE + 提交”也是如此 - 625ms/周期。现在我面临的唯一剩余问题是 SelectForUpdates/UPDATE 很慢。

以下混合(由应用程序完成,因此选为微工作台)在 MariaDB 上的性能:

  • 13 个 SELECT + 5 个 SFU + 6 个 UPDATE + 提交 = 以前的 Openstack VM 设置上耗时 252 毫秒
  • 13 个 SELECT + 5 个 SFU + 6 个 UPDATE + 提交 = 新裸机设置上耗时 133 毫秒
  • 13 个 SELECT + 0 个 SFU + 6 个 UPDATE + 提交 = 新的裸机设置上耗时 122 毫秒
  • 13 个 SELECT + 5 个 SFU + 0 个 UPDATE + 提交 = 新裸机设置上 122 毫秒

为了进行比较,在 OracleDB Openstack VM 上:

  • 13 个 SELECT + 5 个 SFU + 6 个 UPDATE + 提交 = 14ms

目前 - 用尽了明显的/记录的优化并尝试了一些违反直觉的测试,例如禁用任何分区/索引/外键/等等......

相关内容