Du bør justere den måde, du laver og indlæser bordet på
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;
Dette vil omgå alle pålagte grænser af strong>tmp_table_size og max_heap_table_size .
På samme måde skal du gøre to ting:
Tilføj dette til /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
dette vil dække mysql genstarter. For at indstille disse værdier i mysqld lige nu uden at genstarte skal du køre dette:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Hvis du tjekker ovenstående variabler med
SELECT @@max_heap_table_size;
eller
SHOW VARIABLES LIKE 'max_heap_table_size';
du bemærker måske, at de ikke ser ud til at ændre sig efter SET GLOBAL...
udsagn. Dette skyldes, at indstillingerne kun gælder for nye forbindelser til serveren. Opret en ny forbindelse, og du vil se værdierne opdateres, eller du kan ændre det i din session ved at køre:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;