mysql临时表和内存表_mysql 临时表和内存表

查看内存表的最大值: show variables like '%heap%';

mysql> show variables like '%heap%';

+---------------------+----------+

| Variable_name       | Value    |

+---------------------+----------+

| max_heap_table_size | 16777216 |

+---------------------+----------+

1 row in set (0.01 sec)

修改方法:

1)启动选项中修改启动mysql的时候加参数 -O max_heap_table_size=32M

2)修改MySQL的配置文件,在[mysqld]的段中增加 max_heap_table_size=32M ,

3)MySQL客户端工具中执行命令 set global max_heap_table_size=32777216;

注意内存表对于变长数据的处理,例如:varchar(50)这样的字段,对于MyISAM的表结构而言,会按照字段中实际存储的内容计算空间,

而内存表则按照char(50)的方式计算空间,这样就会使内存表占据的空间大幅度上升

内存表不支持like操作,性能是非常的差。

内存表:

1. 参数控制:max_heap_table_size

2. 到达上线后报错。

3. 表定义保存在磁盘上,数据和索引保存在内存里面。

4. 不能包含TEXT,BLOB等字段。

临时表:

1. 参数控制:tmp_table_size。

2. 到达上线后创建文件在磁盘上。

3. 表定义和数据都在内存里。

4. 可以包含TEXT, BLOB等字段。

创建临时表: CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL)

如果你声明临时表是一个HEAP表,MySQL也允许你指定在内存中创建它:

CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL) TYPE = HEAP

接着查找官方手册:

As indicated by the name, MEMORY tables are stored in memory. They use hash indexes by default,

which makes them very fast, and very useful for creating temporary tables. However,

when the server shuts down, all rows stored in MEMORY tables are lost.

The tables themselves continue to exist because their definitions are stored in .frm files on disk,

but they are empty when the server restarts.

可以看出来MEMORY确实是very fast,and very useful for creating temporary tables .

把临时表和内存表放在一起使用确实会快不少:create table tmp2(id int not null) engine memory;

链接:

http://hi.baidu.com/allense7en/item/7f7c9d34014d74f1e7bb7ab7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值