gpt4 book ai didi

Mysql InnoDB 与 Mongodb 写入性能

转载 作者:行者123 更新时间:2023-11-28 23:58:09 26 4
gpt4 key购买 nike

我需要在每次呈现网页时递增一个计数器。

  • 当我使用 mongodb 执行此操作时,我可以在普通磁盘上的 4 核/8 线程 CPU 上每秒执行大约 16000 次写入。

  • 当我使用 Mysql InnoDB 表时,我只能...在普通磁盘上每秒写入 30 次或在 SSD 上每秒写入 200 次!!

因为每个事务我只有一次写入(基本上在为同一个 http 请求递增我的计数器后我没有其他写入要做)使用自动提交为 False 并手动提交将无济于事。

不同之处在于 Mongodb 会延迟刷新写入。

通过将这些参数设置到 my.cf 中,我尝试让 Mysql 缓冲写入,然后将它们刷新到磁盘,但它没有帮助:

innodb_buffer_pool_size = 1G
innodb_flush_method=O_DIRECT
innodb_log_file_size=100M
innodb_change_buffering=all
innodb_thread_concurrency=8

有没有办法让 mysql 写入速度更快?

最佳答案

如果您所做的只是“每次呈现网页时增加一个计数器”,那么我建议您为此完全放弃数据库。将计数器完全保存在内存中(例如通过 memcached),并使用 cronjob 每 10 分钟将其转储到磁盘以保持更永久的记录。

如果您记录的不仅仅是一个计数器并且想要使用数据库,请考虑使用 MySQL MEMORY 存储引擎 (https://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html)。

CREATE TABLE t (i INT) ENGINE = MEMORY;

该表将保存在内存中,因此比基于磁盘的表快得多。如果您需要持久性,您只需要一个脚本来不时地手动“刷新”到磁盘(例如 mysqldump)。

关于Mysql InnoDB 与 Mongodb 写入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30897504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com