Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment faire en sorte que mysql MEMORY ENGINE stocke plus de données ?

Vous devez ajuster la façon dont vous faites et chargez la table

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;

Cela contournera toutes les limites imposées par tmp_table_size et max_heap_table_size .

De même, vous devez faire deux choses :

Ajoutez ceci à /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

cela couvrira les redémarrages de mysql. Pour définir ces valeurs dans mysqld maintenant sans redémarrer, exécutez ceci :

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

Si vous vérifiez les variables ci-dessus avec

SELECT @@max_heap_table_size;

ou

SHOW VARIABLES LIKE 'max_heap_table_size';

vous remarquerez peut-être qu'ils ne semblent pas changer après le SET GLOBAL... déclarations. En effet, les paramètres ne s'appliquent qu'aux nouvelles connexions au serveur. Établissez une nouvelle connexion et vous verrez les valeurs mises à jour ou vous pourrez les modifier au cours de votre session en exécutant :

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