我们对单个 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/