T086学习网 | 站长学院 | 技术文档 | 成语 | 歇后语 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论 | 欣欣百宝箱

mysql如何使用临时表,内存表来加快速度?

【 更新时间:2013-11-07 | 字体:
[导读]黄新颖1.我结合武侠这个游戏来说一说我的使用心得:武侠中所有玩家当前所在场景信息存在内存表中,比如A场景有a,b,c玩家, B场景中有e,f,g玩家,都存在一个叫做tbl_player_scene的内存表中。当时并不知道redis, 后来想...

黄新颖

1.我结合武侠这个游戏来说一说我的使用心得:
武侠中所有玩家当前所在场景信息存在内存表中,比如A场景有a,b,c玩家, B场景中有e,f,g玩家,都存在一个叫做tbl_player_scene的内存表中。当时并不知道redis, 后来想想其实可以用redis的set来替代。
2.内存表的特点:
a. 支持索引。(这个是对比起redis等nosql的杀手锏)
b. 支持自增长字段。
c. 查询缓存
etc
从内存表的特性来看,他的适合场景有:
a. 在开发初期,内存表在和nosql数据库对比的时候,看查询的复杂程度,数据的复杂程度来进行权衡。
b. 在后期维护中,可以在非常小的改变原先的代码结构,比如dao层的代码,移植成内存表类型。

linux_ubuntu

临时表将在你连接MySQL期间存在。当你断开时,MySQL将自动删除表并释放所用的空间。当然你可以在仍然连接的时候删除表并释放空间。
重起数据库以后,内存中的数据全部丢失。
1.临时表:表建在内存里,数据在内存里
2.内存表:表建在磁盘里,数据在内存里
其中包括2个重要的参数
[mysqld]
内存表容量
max_heap_table_size=1024M
临时表容量
tmp_table_size=1024M

临时表主要是为了放一些中间大结果集的一些子集,内存表可以放一些经常频繁使用的数据。

自由者:

以下是对内存表和临时表之间区别的总结:

内存表:
1. 通过参数控制:max_heap_table_size大小来设定内存表大小
2. 到达max_heap_table_size所设置的内存上限后报错。
3. 表定义保存在磁盘上,数据和索引保存在内存里面。
4. 不能包含TEXT、BLOB等字段。
临时表:
1. 通过参数控制:tmp_table_size大小来设定临时表大小。
2. 到达tmp_table_size上限后会在磁盘上创建临时文件。
3. 表定义和数据都在内存里。
4. 可以包含TEXT, BLOB等字段。

临时表一般都很少用,而且要用也一般是在程序中动态创建或者由MySQL内部根据SQL执行计划需要自己创建。

内存表则大多数是当Cache用,在早期一台机器没有装Memcache等第三方cache时,h内存表无疑是cache的最好的选择了。而如今随着memcache、NoSQL的流行,内存表就越来越少人使用了

原文:http://www.dewen.org/q/255/mysql+什么样情况使用临时表,内存表来加快速度?

  • 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
更多
留言建议ASP探针PHP探针站长Enjoy的Blog
© 2017 T086学习网 - T086.com(原itlearner.com)
RunTime:7.80ms QueryTime:7