Як збільшити використання пам'яті в MySQL Server для підвищення швидкості?


28

У мене є сервер Windows 2008 з 8 ГБ оперативної пам’яті під керуванням IIS7 та MySQL. Я відслідковував об'єм пам'яті, процесора та диска на сервері, і виявив, що MySQL використовує лише 250 Мб оперативної пам’яті, зберігаючи диски дуже зайнятими, хоча у мене є багато вільного оперативної пам’яті.

У SQL Server я можу легко встановити об'єм пам'яті, яку я хочу використовувати, я шукаю те саме налаштування в MySQL.

Як я можу налаштувати MySQL на використання більшої кількості пам'яті та зменшення використання процесора та диска?

Відповіді:


20

table_cacheє найбільш корисною конфігураційною директивою для зміни. Кожен раз, коли MySQL звертається до таблиці, вона завантажує таблицю в кеш. Якщо у вас велика кількість таблиць, то швидше кешувати їх.

Погляньте на змінні вашого сервера, запустивши:

show status;

і шукати змінну open_tables. Якщо це збігається з вашим table_cacheзначенням і opened_tablesпродовжує зростати, вам потрібно збільшити table_cacheзначення у вашому файлі конфігурації. Ви знайдете баланс, експериментуючи з цими змінними в пікові часи. Ви хочете налаштувати його так, щоб у пікові часи opened_tablesнавіть після того, як сервер тривалий час працював , спостерігається низька кількість .

key_buffer_sizeтакож є хорошою змінною, з якою можна експериментувати. Ця змінна впливає на розмір буфера індексу, а збільшення цієї змінної збільшує швидкість обробки індексу MySQL. Ви можете подивитися на змінні з show variables;командою ще раз, і порівняти key_read_requestsз key_reads. В ідеалі ви хочете, щоб співвідношення між цими двома змінними було якомога меншим, і ви можете це зробити, збільшивши розмір key_buffer_size. Якщо встановити цю змінну вище, у вас буде менше записів і читання безпосередньо на диск і з нього, що було вашим головним питанням.


11
Насправді команда полягає show status; у перегляді змінних статусу, таких як Open_tablesі Opened_tables. table_cacheСхоже, видалено в останніх версіях MySQL.
Метт Фенвік

5

Вам потрібно змінити значення у my.cnfфайлі та перезапустити MySQL, хоча ви також можете змінити багато з них під час запуску MySQL ('SET GLOBAL VARIABLE = value ').

Ви, ймовірно , хочете подивитися на підвищення key_buffer_size, sort_buffer, read_bufferі table_cacheдля початку і , можливо innodb_buffer_pool_size, якщо у вас є якісь - або таблиці InnoDB. Деякі з цих значень ви можете збільшити в довгий шлях (навіть на два порядки), особливо враховуючи обладнання. Значення за замовчуванням MySQL надзвичайно консервативні і, здається, спрямовані на загальні настільні комп’ютери зі змішаним використанням близько десяти років тому. О, і попередити, що у 32-розрядної версії будуть проблеми з використанням більше 2 Гб оперативної пам’яті.

Подивіться в в MySQL Manual для отримання більш детальної інформації та рекомендацій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.