Как установить глобальный innodb_buffer_pool_size?

Как установить глобальную переменную my2QL innodb_buffer_pool_size? Когда я устанавливаю его на system display, я получаю эту ошибку:

ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable

Ответ 1

В более ранних версиях MySQL (< 5.7.5) единственный способ установить

'innodb_buffer_pool_size'

была записана в my.cnf(для linux) и my.ini(для Windows) в разделе [mysqld]:

[mysqld]

innodb_buffer_pool_size = 2147483648

Вам необходимо перезапустить сервер mysql, чтобы он работал в действии.

ОБНОВЛЕНИЕ:

В соответствии с MySQL 5.7.5 параметр конфигурации innodb_buffer_pool_size может быть задано динамически с помощью инструкции SET, позволяющей изменять размер пул буферов без перезапуска сервера. Например:

mysql> SET GLOBAL innodb_buffer_pool_size=402653184;

Ссылка: http://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-online-resize.html

Ответ 2

innodb_buffer_pool_size

Вы должны установить это значение переменной в разделе [mysqld] как:

innodb_buffer_pool_size=2G

и перезапустите службу MySQL, чтобы иметь эффект.

Пул буферов InnoDB кэширует как страницы данных, так и индексы. Вы можете установить это значение на 70-80% доступной памяти для установок Innodb только

Ответ 3

Посмотрите файл innodb_buffer_pool_size

В нем говорится, что эту переменную можно установить в файле-опции (my.cnf) или в командной строке при запуске сервера.

Кроме того. Я не думаю, что вы сможете присвоить значение "системный дисплей" этой переменной, поскольку она является числовой. См. Документы.

Ответ 4

Я столкнулся с той же проблемой:

ОШИБКА 1238 (HY000): переменная 'innodb_buffer_pool_size' является переменной только для чтения

Тогда я заметил, что неправильно написал [mysqly] наверху, и почему my.cnf работал неправильно. Я меняю его на [mysqld] и перезагружаю MySQL, тогда все работает отлично.