mysql三大引擎:InnoDB,MyISAM,MEMORY。
InnoDB:磁盘表,支持事务,支持行级锁,B+Tree索引
MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引
MEMORY(Heap):内存表,不支持事务,表级锁,Hash索引,不支持Blob,Text大类型
mysql变量max_heap_table_size默认大小16777216 Byte (16m)
理论上说,只要你内存足够大,表就可以有多大,但是默认内存表默认的大小是64MB(如果我没有记错的话),如果我们要设置成自己想要的大小,我们需要在my.cnf文件中修改max_heap_table_size参数,修改完成后,要重启MySQL才会生效。如果我们的表满了以后,MySQL并不会把数据存储到硬盘中,而是直接报表已经满了的错误。
转:http://my.oschina.net/lanzp/blog/369179
show variables like '%table_size%';//单表最大大小为下面对应的值
result:(B)
max_heap_table_size16777216B
tmp_table_size 36700160B
1.临时表:表建在内存里,数据在内存里
2.内存表:表建在磁盘里,数据在内存里
内存表:
1. 通过参数控制:max_heap_table_size大小来设定内存表大小
2. 到达max_heap_table_size所设置的内存上限后报错。
3. 表定义保存在磁盘上,数据和索引保存在内存里面。
4. 不能包含TEXT、BLOB等字段。
临时表:
1. 通过参数控制:tmp_table_size大小来设定临时表大小。
2. 到达tmp_table_size上限后会在磁盘上创建临时文件。
3. 表定义和数据都在内存里。
4. 可以包含TEXT, BLOB等字段。