[英]mysql engine for chat table (heap/memory vs innodb)
在为聊天消息创建半临时表时(即表中不会有任何超过 60 秒的消息,因为它们每分钟被预定事件删除一次) ,使用 HEAP/ 是否有任何值得注意的性能提升?内存而不是 InnoDB?
试试这个:使用 MySQL 客户端会话打开两个 windows。
在第一个 session 中,使用 MEMORY 引擎创建一个测试表并给它几行。
mysql> use test;
mysql> create table chat (
id serial primary key,
msg text,
likes int default 0,
created_at datetime default current_timestamp
) ENGINE=MEMORY;
mysql> insert into chat set msg = 'sup';
mysql> insert into chat set msg = 'sup';
mysql> insert into chat set msg = 'sup';
在第二个 window 中,尝试更新一行。 我使用 sleep 加入另一个表达式来模拟花费一些时间。
mysql> use test;
mysql> update chat set likes = likes + sleep(60) where id = 1;
再次在第一个 window 中,而第二个 window 仍在休眠,尝试读取数据:
mysql> select * from chat;
注意它挂起!
Memory 表仅支持表级锁定。 您的选择、插入、更新和定期删除都将相互排队,即使它们在不同的行上工作。
这可能会使您看起来性能不佳,因为对表的所有查询都必须连续完成。 你没有并发。
表没有性能; 查询有性能。 您没有在问题中描述任何查询。 您必须考虑要针对数据运行哪些查询、查询速率和并发性等,以评估哪种存储引擎最适合您的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.