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

2023-10-26数据库问题
0

本文介绍了如何让mysql MEMORY ENGINE存储更多数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想将一个表从 INNODB 更改为 MEMORY ENGINE.

I want to alter a table from INNODB to MEMORY ENGINE.

所以我输入了这个命令:

So I typed this command:

alter table sns ENGINE=MEMORY;

然后MySQL显示

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

表的数据大小是 1GB,我有 8GB 内存.

The data size for the table is 1GB, and I have 8GB Memory.

我查看了 my.cnf,但没有找到更改 max_size 设置的位置.难道我不能存储更多数据吗?

I checked my.cnf, and I didn't find where to change the max_size setting. Shouldn't I be able to store more data?

推荐答案

你应该调整你制作和加载表格的方式

You should adjust the way you make and load the table

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;

这将绕过 tmp_table_sizemax_heap_table_size.

同样的,你需要做两件事:

Just the same, you need to do two things:

将此添加到/etc/my.cnf

Add this to /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

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

this will cover mysql restarts. To set these values in mysqld right now without restarting run this:

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... 语句之后,它们似乎没有改变.这是因为这些设置仅适用于到服务器的新连接.建立新连接,您将看到值更新,或者您可以通过运行以下命令在会话中更改它:

you may notice that they don't seem to change following the SET GLOBAL... statements. This is because the settings only apply to new connections to the server. Make a new connection, and you'll see the values update or you could change it within your session by running:

SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;

这篇关于如何让mysql MEMORY ENGINE存储更多数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同
Why Mysql#39;s Group By and Oracle#39;s Group by behaviours are different(为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同)...
2024-04-16 数据库问题
13

MySQL GROUP BY DateTime +/- 3 秒
MySQL GROUP BY DateTime +/- 3 seconds(MySQL GROUP BY DateTime +/- 3 秒)...
2024-04-16 数据库问题
14