首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql InnoDB与Mongodb写性能的比较

问Mysql InnoDB与Mongodb写性能的比较
EN

Stack Overflow用户
提问于 2015-06-17 16:39:34
回答 2查看 2.2K关注 0票数 2

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

  • 当我使用mongodb这样做时,我可以在一个普通磁盘上的4个核心/8个线程CPU上每秒完成大约16000次写入。
  • 当我使用Mysql InnoDB表时,我只能.每秒30次写入普通磁盘或200次写入SSD !!

因为我每个事务只有一个写(基本上,在为同一个http请求递增我的计数器之后,我没有其他写可做),所以使用自动提交到False和手动提交不会有帮助。

不同的是,Mongodb漫不经心地写东西。

在将这些参数设置为my.cf之前,我试图让Mysql在将它们刷新到磁盘之前进行写操作,但这并没有帮助:

代码语言:javascript
复制
innodb_buffer_pool_size = 1G
innodb_flush_method=O_DIRECT
innodb_log_file_size=100M
innodb_change_buffering=all
innodb_thread_concurrency=8

有办法让mysql写得更快吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-21 09:12:51

代码语言:javascript
复制
innodb_flush_log_at_trx_commit = 2

胜利者:150倍快!在标准磁盘上(稍后将在SSD上试用)

票数 0
EN

Stack Overflow用户

发布于 2015-06-18 18:24:10

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

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

代码语言:javascript
复制
CREATE TABLE t (i INT) ENGINE = MEMORY;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30897504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档