web-dev-qa-db-fra.com

Comment changer la valeur de innodb_buffer_pool_size dans MySQL sur Mac OS?

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?

47
analyticsPierce

ajoutez ceci à votre my.cnf

innodb_buffer_pool_size=1G

redémarrez votre mysql pour le rendre effectif

62
Neo

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.

28
Jorge Walters

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.

UPDATE:

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

17
1000111

Pour les installations standard de MySQL sous OS X, vous trouverez my.cnf situé dans le dossier/etc /.

Étapes pour mettre à jour cette variable:

  1. Charger le terminal.
  2. Type cd /etc/.
  3. Sudo vi my.cnf.
  4. Ce fichier devrait déjà exister (sinon, veuillez utiliser Sudo find / -name 'my.cnf' 2>1 _ - Ceci cachera les erreurs et ne signalera que l’emplacement du fichier successfile).
  5. En utilisant vi (m), trouvez la ligne innodb_buffer_pool_size, appuyez sur i pour commencer à apporter des modifications.
  6. Lorsque vous avez terminé, appuyez sur échap, Maj + colon et tapez wq.
  7. Bénéfice (fait).
3
exceed

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.

1
Luke Madhanga