MySQL:一个普通的盒子每秒可以支持多少次更新?

标签 mysql sql database performance sql-update

我们对单个 MySQL 表(存储用户事件信息)进行了持续的简单更新。假设我们将这些分组为每秒批量更新。

我想要一个大概的想法,即典型的 4 核 8GB 机器上的 mysql 何时开始出现跟不上每秒更新的问题。例如。 @1 每秒可以更新多少行?

这是一个思考练习,用于决定我是否应该在我们的应用程序发布的早期开始使用 MySQL(简化开发),或者 MySQL 是否可能很快就会崩溃,以至于不值得在这条路上冒险。

最佳答案

要获得不错的数字,唯一方法是对特定用例进行基准测试。变数太多,没有办法解决。

如果您只是敲一个 bash 脚本或一个小型演示应用程序并用 jmeter 锤击它,应该不会花太长时间。 , 那么这可以给你一个好主意。

我在尝试对类似用例进行基准测试时使用了 jmeter。不同之处在于我正在寻找 INSERTS 数量的写入吞吐量。我玩的时候出来的最有用的东西是'innodb_flush_log_at_trx_commit'参数。如果您正在使用 INNODB 并且不需要您的用例符合 ACID,则将其更改为 0。这对INSERT 吞吐量,并且可能会在您的 UPDATE 用例中执行相同的操作。请注意,使用此设置时,更改每秒只会刷新到磁盘一次,因此如果您的服务器断电或其他原因,您可能会丢失几秒钟的数据。

在我的用例的四核 8GB 机器上:

  • innodb_flush_log_at_trx_commit=1 导致每秒 80 次插入
  • innodb_flush_log_at_trx_commit=0 导致每秒 2000 次插入

这些数字可能与您的用例无关 - 这就是为什么您需要自己对其进行基准测试。

关于MySQL:一个普通的盒子每秒可以支持多少次更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12838579/

相关文章:

MYSQL - 按价格+特定第一个结果排序

mysql - 内部连接为真

mysql - 条目中以逗号分隔的循环子字符串

MySQL 多个复合外键

mysql - 查询大于特定院系最小值的教授和薪资

c# - 嵌套的 TransactionScope 在测试中失败

MySQL - 连接2个表的多列

php - 将当年每个月的表中的数字相加

sql - 选择 "at least 2"XPath 表达式

sql-server - SQL Server 体系结构指南