sql >> Databasteknik >  >> RDS >> Mysql

Hur får man mysql MEMORY ENGINE att lagra mer data?

Du bör justera hur du gör och laddar tabellen

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;

Detta kommer att kringgå alla pålagda gränser av strong>tmp_table_size och max_heap_table_size .

På samma sätt måste du göra två saker:

Lägg till detta i /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

detta kommer att täcka omstarter av mysql. För att ställa in dessa värden i mysqld just nu utan att starta om, kör detta:

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

Om du kontrollerar ovanstående variabler med

SELECT @@max_heap_table_size;

eller

SHOW VARIABLES LIKE 'max_heap_table_size';

du kanske märker att de inte verkar förändras efter SET GLOBAL... uttalanden. Detta beror på att inställningarna endast gäller nya anslutningar till servern. Skapa en ny anslutning så kommer du att se värdena uppdateras eller så kan du ändra det under din session genom att köra:

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


  1. Hur man får tiden från en sträng i MySQL

  2. Databasalternativ/paketanvändningsrapportering

  3. Hur man visar sekvensnummer i MySQL-frågeresultat

  4. Hur SLEEP() fungerar i MariaDB