Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak sprawić, by mysql MEMORY ENGINE przechowywał więcej danych?

Powinieneś dostosować sposób tworzenia i ładowania stołu

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;

Pozwoli to obejść wszelkie narzucone limity przez tmp_table_size i max_heap_table_size .

Tak samo musisz zrobić dwie rzeczy:

Dodaj to do /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

obejmie to ponowne uruchomienie mysql. Aby ustawić te wartości w mysqld teraz bez ponownego uruchamiania, uruchom to:

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

Jeśli sprawdzasz powyższe zmienne za pomocą

SELECT @@max_heap_table_size;

lub

SHOW VARIABLES LIKE 'max_heap_table_size';

możesz zauważyć, że nie zmieniają się po SET GLOBAL... sprawozdania. Dzieje się tak, ponieważ ustawienia dotyczą tylko nowych połączeń z serwerem. Nawiąż nowe połączenie, a zobaczysz zaktualizowane wartości lub możesz je zmienić w trakcie sesji, uruchamiając:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać dwie dodatkowe kolumny z innej tabeli na podstawie wartości w tabeli głównej?

  2. MySQL:Grupuj według i policz wiele pól

  3. Wydajność zliczania MySQL na bardzo dużych stołach

  4. podwójne wyniki w mojej tablicy ( mysql_fetch_array )

  5. 'IF' w instrukcji 'SELECT' - wybierz wartość wyjściową na podstawie wartości kolumn