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代码>
Truncate table\u name代码>,改变表格名称引擎=内存代码>
不知道这是否相关,但设置值后是否重新启动了服务器?@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
表大小来解决这个问题,这样它就不会超过限制。