如何使mysql MEMORY ENGINE存储更多数据?

我想将表格从INNODB更改为MEMORY ENGINE。

所以我输入了以下命令:

alter table sns ENGINE=MEMORY;

然后MySQL显示

ERROR 1114 (HY000): The table '#sql-738_19' is full

该表的数据大小为1GB,我有8GB内存。

我检查了my.cnf,但找不到在哪里更改max_size设置。我不应该能够存储更多数据吗?

回答:

您应该调整制作和加载桌子的方式

CREATE TABLE sns_memory SELECT * FROM sns WHERE 1=2;

ALTER TABLE sns_memory ENGINE=MEMORY;

INSERT INTO sns_memory SELECT * FROM sns;

DROP TABLE sns;

ALTER TABLE sns_memory RENAME sns;

这将绕过 和

施加的任何限制。

同样,您需要做两件事:

将此添加到/etc/my.cnf

[mysqld]

tmp_table_size=2G

max_heap_table_size=2G

这将涵盖mysql重新启动。要立即在mysqld中设置这些值而不重新启动,请运行以下命令:

SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;

SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;

如果您正在检查上述变量

SELECT @@max_heap_table_size;

要么

SHOW VARIABLES LIKE 'max_heap_table_size';

您可能会注意到,声明后它们似乎没有变化SET

GLOBAL...。这是因为设置仅适用于与服务器的新连接。建立新连接,您将看到值更新,或者可以通过运行以下命令在会话中更改它:

SET tmp_table_size = 1024 * 1024 * 1024 * 2;

SET max_heap_table_size = 1024 * 1024 * 1024 * 2;

以上是 如何使mysql MEMORY ENGINE存储更多数据? 的全部内容, 来源链接: utcz.com/qa/402605.html

回到顶部