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
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;