内存表的注意事项
时间:2010-08-30 来源:有行动才会有收获
内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制。
1、内存表对所有用户的连接是可见的,这使得它非常适合做缓存。
2、内存表不允许使用TEXT和BLOB数据类型;只允许使用=和<=>操作符来搜索记录(不允许<、>、<=或>=);不支持auto_increment;只允许对非空数据列进行索引(not null)。
注:操作符 “<=>” 说明:NULL-safe equal,这个操作符和“=”操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。
3、如果内存表是以create table like方法创建的,则复制之后所有主键、索引、自增等格式将不复存在,需要重新添加主键和索引。
4、一旦服务器重启,所有内存表数据丢失,但是表结构仍然存在,因为内存表结构是存放在实际数据库路径下的,不会删除。
5、对于重启造成的无数据,可以在my.cnf文件中设置init-file="your_sql_file"选项,在sql文件中写入对内存表的数据初始化语句。
6、内存表在并发较高的情况下容易出现死锁,所以要谨慎使用。
7、不要随便为内存表增加索引,索引过多可能会导致CPU飙升。
另,因为内存表本身就采用HASH排序存放数据,加之数据都在内存中,所以在正确使用的情况下速度应该都很快。
8、关键参数 max_heap_table_size
相关阅读 更多 +