Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie bringt man die mysql MEMORY ENGINE dazu, mehr Daten zu speichern?

Sie sollten die Art und Weise, wie Sie die Tabelle erstellen und laden, anpassen

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;

Dadurch werden alle auferlegten Beschränkungen durch tmp_table_size und max_heap_table_size .

Trotzdem müssen Sie zwei Dinge tun:

Fügen Sie dies zu /etc/my.cnf

hinzu
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

Dies deckt MySQL-Neustarts ab. Um diese Werte jetzt ohne Neustart in mysqld festzulegen, führen Sie Folgendes aus:

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

Wenn Sie die obigen Variablen mit

überprüfen
SELECT @@max_heap_table_size;

oder

SHOW VARIABLES LIKE 'max_heap_table_size';

Sie werden vielleicht bemerken, dass sie sich nach SET GLOBAL... nicht zu ändern scheinen Aussagen. Dies liegt daran, dass die Einstellungen nur für neue Verbindungen zum Server gelten. Stellen Sie eine neue Verbindung her, und Sie werden sehen, dass die Werte aktualisiert werden, oder Sie können sie innerhalb Ihrer Sitzung ändern, indem Sie Folgendes ausführen:

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