欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL Memory(Heap)引擎

程序员文章站 2024-01-02 15:14:10
...

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

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表。它确保这个时间间隔为 零。

上一篇:

下一篇: