MySQL Memory(Heap)引擎

本文介绍MEMORY存储引擎的特点及使用方式,包括与HEAP的区别、如何创建MEMORY表、表的限制条件,以及支持的索引类型等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MEMORY存储引擎用存在内存中的内容来创建表。这些在以前被认识为HEAP表。MEMORY是一个首选的术语,虽然为向下兼容,HEAP依旧被 支持。
每个MEMORY表和一个磁盘文件关联起来。文件名由表的名字开始,并且由一个.frm的扩展名来指明它存储的表定义。
要明确指出你想要一个MEMORY表,可使用ENGINE选项来指定:
CREATE TABLE t (i INT) ENGINE = MEMORY;

1.表受限于mysqld变量max_heap_table_size(默认16M);
2.HEAP数据表从MySQL4.1开始才允许使用自增列;
3.ENGINE =Heap;从MySQL4.1后,首选 ENGINE =MEMORY;
4.From MySQL 4.1 on, hash indexes are still the default, but you can specify explicitly that a MEMORY table index should be a HASH or BTREE;
5.与许多其他散列表不同,Heap表允许非惟一的键;
6.Memory表使用固定长度行的格式存储
7.不支持BLOB或TEXT列;
8.除了max_heap_table_size限制和计算机的内存限制以外,可以在有些安装上达到每个表4GB的限制,
因为这个限制是由32位计算机的地址空间强加的。
9.如果你正使用复制,当主服务器被关闭且重启动之时,主服务器的MEMORY表变空。可是从服务器意识不到这些表已经变空,所以如果你从它们选择数据, 它就返回过时的内容。自从服务器启动后,当一个MEMORY表在主服务器上第一次被使用之时,一个DELETE FROM语句被自动写进主服务器的二进制日志,因此再次让从服务器与主服务器同步。注意,即使使用这个策略,在主服务器的重启和它第一次使用该表之间的间 隔中,从服务器仍旧在表中有过时数据。可是,如果你使用--init-file选项于主服务器启动之时在其上推行MEMORY表。它确保这个时间间隔为 零。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值