sql >> Databáze >  >> RDS >> Mysql

Jak zajistit, aby mysql MEMORY ENGINE ukládal více dat?

Měli byste upravit způsob výroby a zatížení stolu

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;

Tím se obejdou všechna uložená omezení tmp_table_size a max_heap_table_size .

Stejně tak musíte udělat dvě věci:

Přidejte to do /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

to pokryje restarty mysql. Chcete-li nastavit tyto hodnoty v mysqld právě teď bez restartování, spusťte toto:

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

Pokud kontrolujete výše uvedené proměnné pomocí

SELECT @@max_heap_table_size;

nebo

SHOW VARIABLES LIKE 'max_heap_table_size';

můžete si všimnout, že se zdá, že se po SET GLOBAL... nemění prohlášení. Důvodem je to, že nastavení platí pouze pro nová připojení k serveru. Vytvořte nové připojení a uvidíte, že se hodnoty aktualizují, nebo je můžete změnit během relace spuštěním:

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


  1. Jaký je rozdíl mezi utf8_unicode_ci a utf8_unicode_520_ci

  2. Ekvivalent Oracle LIMIT n,m

  3. překlad mongodb pro sql INSERT...SELECT

  4. Vraťte SETOF řádky z funkce PostgreSQL