设为首页收藏本站

厦门微思网络

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微思网络5月周年庆超值课程8.7折
查看: 2028|回复: 1

如何避免磁盘上的临时表

[复制链接]

该用户从未签到

发表于 2011-8-19 09:54:17 | 显示全部楼层 |阅读模式
   由于Memory引擎不支持BLOB和TEXT类型,使用了BLOB和TEXT列并且需要隐式临时表的查询将不得不使用磁盘上的MyISAM临时表,即使只有几列也会这样. 这会导致严重的性能开销. 即使把Mysql 配置为使用RAM磁盘上的临时表, 也需要很多昂贵的操作系统调用. (Maria存储引擎会把所有的东西都缓存到内存中, 有助于减轻这个问题.)
    最好的办法是尽可能的避免使用BLOG和TEXT类型. 如果不能避免, 就可以使用ORDER BY SUBSTRING(column, length)把这些值转换为字符串, 让他们使用内存中的临时表. 要保证使用的子字符串足够短, 不要让临时表变得过大, 以致超过max_heap_size或tmp_table_size的大小,否则MySQL会把表转换为磁盘上的MyISAM表.
   如果在解释器(EXPLAIN)中的Extra列显示"使用临时表(Using Temporary)", 就说明使用了隐式临时表.

该用户从未签到

发表于 2011-8-19 11:46:40 | 显示全部楼层
斌哥   谢谢你了    很好的东西
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表