当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql tmp_table_size和max_heap_table_size大小配置

mysql tmp_table_size和max_heap_table_size大小配置

2017年12月12日  | 移动技术网IT编程  | 我要评论

乐乐动漫网,soopat专利搜索,狼子野心的意思

针对16g内存的配置

复制代码 代码如下:

tmp_table_size = 64m

先说下吧:

它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果内存临时表超出了限制,mysql就会自动地把它转化为基于磁盘的myisam表,存储在指定的tmpdir目录下,默认:

mysql> show variables like "tmpdir";
+---------------+-------+
| variable_name | value |
+---------------+-------+
| tmpdir        | /tmp/ |
+---------------+-------+

优化查询语句的时候,要避免使用临时表,如果实在避免不了的话,要保证这些临时表是存在内存中的。如果需要的话并且你有很多group by语句,并且你有很多内存,增大tmp_table_size(和max_heap_table_size)的值。这个变量不适用与用户创建的内存表(memory table).

你可以比较内部基于磁盘的临时表的总数和创建在内存中的临时表的总数(created_tmp_disk_tables和created_tmp_tables),一般的比例关系是:

created_tmp_disk_tables/created_tmp_tables<5%

这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。这个变量支持动态改变,即set @max_heap_table_size=#

,但是对于已经存在的内存表就没有什么用了,除非这个表被重新创建(create table)或者修改(alter table)或者truncate table。服务重启也会设置已经存在的内存表为全局max_heap_table_size的值。

这个变量和tmp_table_size一起限制了内部内存表的大小。

如果想知道更详细的信息,请参考“”和“”

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网