牛骨文教育服务平台(让学习变的简单)
博文笔记

mysql - 内存表使用总结

创建时间:2016-04-22 投稿人: 浏览次数:410

部分转自:  

1、http://my.oschina.net/lanzp/blog/369179


内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制
定义:
create table (...)  engine = memory/heap ;  (一般使用memory,heap用得少了)
用法: 
①、内存表的数据是使用hash的方式存储在内存上,故其查询的时候只支持 <> 和 = 这两种比较方式;
②、内存表的数据可以对所有用户的连接可见,但是其不能跨服务器重启; 服务器重启后,内存表中的所有数据都将丢失,但是表结构还在,因为表结构是存储在磁盘中;
③、内存表的数据在max_heap_table_size这里设定,若单张表行数超过了这个长度,则报数据满错误 ; 我电脑里的mysql本参数默认值是16777216 ;
④、内存表不支持事务,而且是表锁,当修改频繁时,性能会下降
⑤、内存表使用一个固定的记录长度格式,一般来说不要用varchar类型,如果使用了它会以varchar的最大长度来申请内存。内存表不支持BLOB或TEXT类型
⑥、内存表不支持auto_increment <我的新版的mysql测试时支持 自增列的>;只允许对非空数据列进行索引(not null)
⑦、如果heap是复制的某数据表,则复制之后所有主键、索引、自增等格式将不复存在,需要重新添加主键和索引,如果需要的话。


首先,我们来说一下什么是内存表,所谓内存表,是指整个数据库表都常驻在内存中的表,相对于普通表而言,内存表存储数据在内存中,而普通表存储在硬盘中。那么内存表到底有什么特点呢?下面我们来详细地分析一下。

1.MySQL内存表要怎样创建呢?

 首先,我们先来学习一下到底要怎样创建一个内存表呢?方法很简单,就跟普通表差不多,唯一的差异是,内存表所使用的数据库引擎是内存。如下:

?
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。