Mysql MEMORY表与InnoDB表(很多插入,很少读取)

时间:2012-01-16 13:02:48

标签: mysql optimization innodb

我在InnoDB表上运行我的网站,到目前为止工作得非常好。现在我想知道我的网站上实时发生了什么,所以我将每个网页浏览(页面,引用,IP,主机名等)存储在InnoDB表中。每秒大约有100个插入,当我浏览日志时,这个表只会被读取一次。

我每分钟用一个去除旧物品的cron清理掉桌子。这平均在该表中留下大约35.000行,大小约为5MB。

如果我将InnoDB表转移到MEMORY表,在服务器上会更容易吗?据我所知,这会节省很多磁盘IO吗?重新启动Mysql会导致数据丢失,但这在我的情况下并不重要。

问题:在我的情况下,你会推荐InnoDB表上的Memory表吗?

2 个答案:

答案 0 :(得分:2)

是的,我愿意。您提到的条件(大量写入,定期清除数据,不需要数据持久性)使其成为MEMORY的理想候选者。

答案 1 :(得分:0)

请优化您的innodb设置:

只要您已将InnoDB配置为使用足够的内存来保存整个表(使用innodb_buffer_pool_size),并且同一服务器上的其他InnoDB表没有过大的压力,数据将保留在内存中。如果您关注写入性能(并再次禁止使用同一系统),可以通过设置innodb_flush_log_at_trx_commit = 0并禁用二进制日志记录来降低持久性,从而大幅提高写入性能。

使用临时表的任何类型的触发器都将是一个混乱的维护,并且不会在临时表上给你任何事务性的好处。

您可以在此处找到更多详细信息: http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit