sql >> Database >  >> RDS >> Mysql

Hoe kan ik de mysql MEMORY ENGINE meer gegevens laten opslaan?

U moet de manier aanpassen waarop u de tabel maakt en laadt

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;

Dit zal alle opgelegde limieten omzeilen door tmp_table_size en max_heap_table_size .

Toch moet je twee dingen doen:

Voeg dit toe aan /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

dit dekt het opnieuw opstarten van mysql. Om deze waarden nu in mysqld in te stellen zonder opnieuw te starten, voer je dit uit:

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

Als u de bovenstaande variabelen controleert met

SELECT @@max_heap_table_size;

of

SHOW VARIABLES LIKE 'max_heap_table_size';

je zult misschien merken dat ze niet lijken te veranderen na de SET GLOBAL... verklaringen. De instellingen gelden namelijk alleen voor nieuwe verbindingen met de server. Maak een nieuwe verbinding en u zult zien dat de waarden worden bijgewerkt of u kunt deze binnen uw sessie wijzigen door het volgende uit te voeren:

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


  1. C#:Object kan niet van DbNull naar andere typen worden gecast

  2. Gegroepeerde aaneenschakeling in SQL Server

  3. Mijn favoriete PostgreSQL-query's en waarom ze ertoe doen

  4. Hoe werkt het PAAS Servicemodel?