Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como fazer o mysql MEMORY ENGINE armazenar mais dados?


Você deve ajustar a maneira como faz e carrega a mesa
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;

Isso contornará quaisquer limites impostos por tmp_table_size e max_heap_table_size .

Da mesma forma, você precisa fazer duas coisas:

Adicione isto a /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

isso cobrirá as reinicializações do mysql. Para definir esses valores no mysqld agora sem reiniciar, execute isto:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;

Se você estiver verificando as variáveis ​​acima com
SELECT @@max_heap_table_size;

ou
SHOW VARIABLES LIKE 'max_heap_table_size';

você pode notar que eles não parecem mudar seguindo o SET GLOBAL... declarações. Isso ocorre porque as configurações se aplicam apenas a novas conexões com o servidor. Faça uma nova conexão e você verá os valores atualizados ou poderá alterá-los em sua sessão executando:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;