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

mysql内存表的大小不能超过2G,mysql,mysql-5.5,Mysql,Mysql 5.5,我已将max\u heap\u table\u size设置为5G(5368709120),但我的内存表的大小不能超过2G。Mysql进程是64位的,所以它有足够的内存,也有可用的物理内存。但尽管如此,我还是在第1行得到了一个错误:表'my_cache'已满 随着时间的推移,规模也在增长: 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 5

我已将
max\u heap\u table\u size
设置为5G(5368709120),但我的内存表的大小不能超过2G。Mysql进程是64位的,所以它有足够的内存,也有可用的物理内存。但尽管如此,我还是在第1行得到了一个错误:表'my_cache'已满

随着时间的推移,规模也在增长:

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\u heap\u table\u 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
发生了什么事

  • 内存表永远不会转换为磁盘表。为了确保您不会意外地做任何愚蠢的事情,您可以设置 max_heap_table_size系统变量,用于对内存施加最大大小 桌子。对于单个表,还可以指定最大行数表 CREATETABLE语句中的选项

  • 运行
    显示变量,如“max\u heap\u table\u size”
    检查大小限制
  • 然后
    set max\u heap\u table\u size=xxxxxxx
  • 截断该表并对其发出Alter table命令,使该值对该表有效。
    Truncate table\u name
    改变表格名称引擎=内存
  • 最好在mysql配置文件中更改max_heap_table_size值,避免在mysql服务重新启动后取消更改

  • 不知道这是否相关,但设置值后是否重新启动了服务器?@juergend,不,我会的try@juergend,即使在重新启动后,在
    my.ini
    中配置了
    max\u heap\u table\u size
    ,也会出现同样的问题,但是我将数量增加到了
    10G
    ,并且工作正常,表的总大小(数据+索引)增加到
    3611.72MB
    只有您可以使用MariaDB而不是MySQL(100%向后兼容)来尝试。它似乎接受row_format=compressed。那么您的数据可能符合5GB的限制。@NorbertvanNobelen,不幸的是,我不是选择使用哪个db的人,所以即使mariadb工作,也不可能切换到它。我通过减少
    my_cache
    表大小来解决这个问题,这样它就不会超过限制。