2017-01-10 2 views

ответ

2

Наиболее вероятным объяснением является то, что вы используете много запросов, которые используют временное пространство. Но это всего лишь предположение, потому что вы не предоставили никакой информации о том, что работает на вашем сервере MySQL.

Обычно для запросов MySQL используются GROUP BY или ORDER BY или DISTINCT для использования временного пространства. Иногда много временного пространства, или иногда небольшого пространства, но у вас много запросов в секунду. Это может объяснить скорость ввода-вывода диска.

Вы можете уменьшить это, оптимизировав свои запросы, чтобы они использовали индексы вместо сортировки или группировки во временном пространстве на диске. Тема оптимизации запросов велика и слишком много для покрытия в столбце «Переполнение стека».

Если вам нужна помощь в оптимизации конкретного запроса, вы должны задать вопрос с этим запросом вместе с выводами SHOW CREATE TABLE и SHOW TABLE STATUS для каждой таблицы запроса.

Существуют и другие применения дискового ввода-вывода, которые могут произойти быстро.

Например, если ваш буферный пул слишком мал, и ваши запросы повторно просматривают полные 200 МБ данных, то сервер MySQL вынужден снова и снова заменять страницы в пуле буферов, считывая одни и те же данные с диска каждый раз. Если вы можете выделить больше ОЗУ для пула буферов, вы можете уменьшить этот уровень перераспределения страниц и, вероятно, значительно увеличить свою общую производительность.

Другой пример: если вы используете UPDATE для изменения данных снова и снова, вы можете написать много ввода-вывода в журнал транзакций и двоичный журнал, даже если общий размер ваших данных не будет расти.

Настройка сервера базы данных - сложный процесс. Если вам нужна помощь в настройке параметров MySQL, лучше спросить на dba.stackexchange.com. Включите вашу версию MySQL и ваши текущие параметры в mysql.ini.

+0

Спасибо за ответ sir. Почти все мои запросы используют GROUP BY и ORDER BY. Я использую DataTables для загрузки (всего 8 таблиц), и у меня есть много функций класса UPDATE (необходимо, чтобы клиенты редактировали свою информацию). спасибо за то, что вы дали хорошее объяснение этому. действительно оценили. –

+0

Решил его, настроив «innodb_buffer_pool_size = 1G». –

+0

Это много. Учитывая, что ваша база данных составляет всего 200 МБ, это, вероятно, избыток. Данные данных с диска не должны занимать более одной страницы в пуле буферов. Но если вы можете избавиться от ОЗУ (то есть, другим приложениям это не нужно), это не наносит вреда дополнительному, и он будет поддерживать достаточный буферный пул в течение длительного времени, по мере роста ваших данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^