2012年03月07日 星期三 08:50
内存表,就是放在内存中的表,所使用内存的大小可通过My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,内存表与临时表并不相同,临时表也是存放在内存中,临时表最大所需内存需要通过tmp_table_size = 128M设定。当数据超过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下降,而内存表不会,内存表满后,会提示数据满错误。
临时表和内存表都可以人工创建,但临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询,临时表在多个连接之间不能共享。这里只讨论内存表
创建表是,用engine=heap可创建(mysql5.5中已经不支持type,以后都用engine,形成习惯)。
- create table test
- (
- id int unsigned not null auto_increment primary key,
- state char(10),
- type char(20),
- date char(30)
- )ENGINE=MEMORY DEFAULT CHARSET=utf8;
内存表的特性
内存表的使用
内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制。
小记录,MyISAM与InnoDB互转
- // InnoDB转MyISAM
- ALTER TABLE `tablename` ENGINE = MYISAM
- // MyISAM转InnoDB
- alter table tablename type=innodb;
- ALTER TABLE `tablename` ENGINE = InnoDB
Zeuux © 2024
京ICP备05028076号