3.1.3 MEMORY
2025年09月21日
3.1.3 MEMORY
创建MySQL MEMORY存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但要记住,当mysqld守护进程崩溃时,所有的MEMORY数据都会丢失。
在版本4.1中,此存储引擎由HEAP重命名为MEMORYo但是,由于这个存储引擎一直是MySQL的一部分,所以通常还会在文档中看到引用它原来的名字。此外,HEPA一直是MEMORY的同义词。
获得速度的同时也带来了一些缺陷。例如,MEMORY表不支持VARCHAR、BLOB或TEXT数据类型,因为这种表类型按固定长度的记录格式存储。此外,如果使用版本4.1.0之前的MySQL,则不支持自动增加列(通过AUTO.INCREMENT属性)。当然,要记住MEMORY表只用于特殊的范围,不会用于长期存储数据。当数据有如下情况时,可以考虑使用MEMORY表。
➢ 可以忽略。目标数据相对较小,而且非常频繁地访问。记住,在内存中存储数据会造成内存不能用于其他目的。注意,可以通过参数max_heap_table size控制MEMORY表的大小。此参数就像资源卫兵,限制MEMORY表的最大尺寸。
➢ 暂时。目标数据只是临时需要,在其生命周期中必须立即可用。
➢ 相对无关。存储在MEMORY表中的数据如果突然丢失,不会对应用服务产生实质的负面影响,而且不会对数据完整性有长期影响。