将 lastactivity mysql 表从 myisam 更改为内存是个好主意吗?

将 lastactivity mysql 表从 myisam 更改为内存是个好主意吗?

我正在尝试减少对磁盘的写入,在我的社交网站中,我有一个 lastactivity 表,该表使用用户上次使用该网站的时间 () 进行更新。它目前是 MyIsam:

id int(7) PRI auto_increment
lastactivity int(10) unsigned
username varchar(25)

它目前有大约 100,000 条记录。如果重新启动 mysql,我可以从主用户表中的最后登录信息再次填充它。这台机器有很多空闲内存,但我猜想这个表经常被锁定,因为对其执行了所有更新,如果它是 MEMORY 表类型会更好吗?

答案1

从内存运行总是比从磁盘运行更快,唯一的缺点是断电时数据会丢失。但是,您声称如果发生这种情况,您可以重新生成数据。所以,我同意您应该使用内存,因为您有大量内存。

话虽如此,我还记得 Knuth 曾经说过的关于数据的话。如果你正确地构建数据,就根本不需要进行任何计算。智能数据比智能算法更好。

因此,您应该谨慎地考虑如何重新构建数据库和/或应用程序以减少所需的锁定量?

退后一步?

答案2

一定要了解内存表的限制,例如默认索引类型为 HASH 而不是 BTREE。检查使用此表的查询可能是个好主意,尤其是当其中一些查询适用于范围查询时。在后一种情况下,强制使用 BTREE 而不是默认 HASH 构建索引。

相关内容