sql >> Database teknologi >  >> RDS >> Mysql

Hvordan får man mysql MEMORY ENGINE til at gemme flere data?

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;


  1. Oracle-skemabruger kan ikke oprette tabel i procedure

  2. Hvordan skal jeg tackle --secure-file-priv i MySQL?

  3. Automatiseret test af desktopapplikationen:overblik over hensigtsmæssighed og rammer

  4. SQL Server Standard Edition High Availability Futures