mysql内存表优化_mysql优化: 内存表和临时表

可以看出来临时表和内存表的ENGINE 不同,临时表默认的是MyISAM,而内存表是MEMORY .去数据库目录查看,发现tmp2.frm而没有tmp1表的任何文件。看来实际情况是符合官方解释的。那么速度方面呢(即MyISAM和MEMORY之间的区别)?实验开始:实现手段:对基于2张千万级别的表做一些OLAP切分操作,中间表的建立使用2种不同的方式。最后把中间表的数据按照要求取出,插入到结果表中实验目的;测试临时内存表和临时表的速度1.中间表的建立使用Create temporary table type = heap 即 把中间表建立成临时内存表2.中间表直接使用Create temporary table建立实验结果:临时内存表: 1小时1 2008-09-25 11:03:481 2008-09-25 12:03:39临时表:1小时17分钟2 2008-09-25 12:25:282 2008-09-25 13:42:37由此发现MEMORY比MyISAM快大概20%。接着查找官方手册: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;内存表的建立还有一些限制条件:MEMORY tables cannot contain        BLOB or TEXT columns.HEAP不支持BLOB/TEXT列。The server needs sufficient memory to maintain all   MEMORY tables that are in use at the same time.在同一时间需要足够的内存.To free memory used by a MEMORY table when   you no longer require its contents, you should execute DELETE or TRUNCATE TABLE, or remove the table altogether using DROPTABLE.为了释放内存,你应该执行DELETE FROM heap_table或DROP TABLE heap_table。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值