mysql内存表的大小不能超过2G

时间:2015-06-01 21:09:49

标签: mysql mysql-5.5

我已将max_heap_table_size设置为5G(5368709120),但我的内存表的大小不能超过2G。 Mysql进程是64位,因此它有足够的内存,并且还有可用的物理内存。但尽管如此,我还是收到了错误ERROR 1114 (HY000) at line 1: The table 'my_cache' is full

随着时间的推移,规模会有所增长:

data_mb index_mb total
2048.00 1178.28 3226.28
2048.00 984.57  3032.57
2048.00 792.84  2840.84
1795.40 599.13  2394.53
1218.23 407.41  1625.64
665.04  221.68  886.71

有什么问题?

UPD 我将max_heap_table_size增加到10G并且它有效并且没有错误!

增长统计数据:

2048.00 1563.72 3611.72
2048.00 1370.00 3418.00
2048.00 1178.28 3226.28
2048.00 984.57  3032.57
2048.00 792.84  2840.84
1795.40 599.13  2394.53

发生了什么事?

2 个答案:

答案 0 :(得分:0)

  
      
  • MEMORY表永远不会转换为磁盘表。为了确保你不小心做任何愚蠢的事,你可以设置   max_heap_table_size系统变量在MEMORY上施加最大大小   表。对于单个表,您还可以指定MAX_ROWS表   CREATE TABLE语句中的选项
  •   

What says percona
Here is an example

答案 1 :(得分:0)

  1. 运行show variables like 'max_heap_table_size'以检查大小限制。
  2. 然后set max_heap_table_size=xxxxxxx;
  3. 截断表并在其上发出Alter表,以使该值对此表有效。truncate table table_name;alter table table_name ENGINE=MEMORY;
  4. 最好更改mysql配置文件中的max_heap_table_size值,避免在mysql服务重启后解除更改。