J'essaie d'augmenter la taille de innodb_buffer_pool_size dans MySQL 5.1, car l'erreur continue à apparaître, indiquant l'erreur de manquer d'espace pour les verrous de table.
ERROR: The total number of locks exceeds the lock table size
Error
Code: 1206
J'ai parcouru la documentation et d'après ce que j'ai compris, je dois mettre à jour innodb_buffer_pool_size dans le fichier /etc/my.cnf. Ma valeur actuelle est 8M. Cependant, même après avoir créé ce fichier et ajouté la ligne suivante pour définir la valeur, il n'est pas mis à jour dans MySQL.
set-variable=innodb_buffer_pool_size=256M
A-t-il des conseils sur la façon dont je peux ajuster cette valeur dans MySQL sur mon mac? Tout autre conseil ou suggestion?
ajoutez ceci à votre my.cnf
innodb_buffer_pool_size=1G
redémarrez votre mysql pour le rendre effectif
Je devais mettre la déclaration sous le bloc [mysqld] pour la faire fonctionner. Sinon, le changement n'a pas été reflété. J'ai une distribution REL.
Dans les versions précédentes de MySQL (<5.7.5) , le seul moyen de définir
'innodb_buffer_pool_size'
variable était en l'écrivant à my.cnf (pour linux) et my.ini (pour Windows) dans la section [mysqld]:
[mysqld]
innodb_buffer_pool_size = 2147483648
Vous devez redémarrer votre serveur mysql pour qu'il soit efficace.
Depuis MySQL 5.7.5, l'option de configuration innodb_buffer_pool_size peut être définie de manière dynamique à l'aide d'une instruction SET, vous permettant ainsi de redimensionner le pool de mémoire tampon sans redémarrer le serveur. Par exemple:
mysql> SET GLOBAL innodb_buffer_pool_size=402653184;
Référence: https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-resize.html
Pour les installations standard de MySQL sous OS X, vous trouverez my.cnf situé dans le dossier/etc /.
Étapes pour mettre à jour cette variable:
cd /etc/
.Sudo vi my.cnf
.Sudo find / -name 'my.cnf' 2>1
_ - Ceci cachera les erreurs et ne signalera que l’emplacement du fichier successfile).innodb_buffer_pool_size
, appuyez sur i
pour commencer à apporter des modifications.wq
.Comme indiqué,
innodb_buffer_pool_size=50M
En suivant la convention sur les autres variables prédéfinies, assurez-vous qu'il n'y a pas d'espace de part et d'autre du signe égal.
Puis courir
Sudo service mysqld stop
Sudo service mysqld start
Note
Parfois, par exemple sur Ubuntu, le démon MySQL est nommé mysql
par opposition à mysqld
Je trouve que courir /etc/init.d/mysqld restart
_ ne fonctionne pas toujours et vous pouvez obtenir une erreur comme
Stopping mysqld: [FAILED]
Starting mysqld: [ OK ]
Pour voir si la variable a été définie, lancez show variables
et voir si la valeur a été mise à jour.