如何使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