Я использую Windows 7 (профессиональную версию) с Intel Q8400 и MySQL 5.1. Всякий раз, когда у меня возникают тяжелые запросы к MySQL (например, вставка или обновление 10 000–40 000 записей, что занимает несколько секунд), мой пользовательский интерфейс запинается и зависает. Приложения, как правило, отзывчивы (не заморожены), но мало что делают, пока не завершатся SQL-запросы.

При использовании процессора MySQL пожирает весь процессор (25% в диспетчере задач) из четырех; остальные три не используются.

Что я могу сделать, чтобы улучшить производительность? Эти запросы иногда выполняются в течение нескольких минут, так что это довольно большая неприятность.

Изменить: У меня есть один SATA HD (Samsung HD502HJ)

2 ответа2

0

Скорее всего, это связано с узким местом в I/O. Я предполагаю, что вы используете либо один жесткий диск, либо простое зеркало. В любом случае, у вас нет дисковой подсистемы, которая обеспечивала бы достаточную пропускную способность для поддержки таких больших запросов без прерывания работы других компонентов системы.

По сути, если вы не хотите вкладывать средства в еще несколько жестких дисков и хороший контроллер RAID, вам придется с этим смириться. Большие операции чтения / записи обычно всегда привязаны к диску, а не к процессору на современных машинах.

Изменить: В свете предыдущих комментариев к вашему OP, вы не можете ничего сделать с одним жестким диском. Большинство серверов, которые имеют дело с большими запросами SQL, имеют 6-8 жестких дисков. Лучшие практики требуют, чтобы у вас было как минимум три физически отдельных набора жестких дисков. Один предназначен для ОС, подкачки и приложения, второй - для баз данных, а третий - для журналов транзакций. Это предотвращает многократные записи отдельных коммитов на один и тот же том.

По сути, если вы хотите запустить MySQL на настольном компьютере вместо сервера и выполнять большие запросы, вы не сможете выполнить какие-либо настройки, которые позволят устранить это узкое место.

0

Чтобы использовать преимущества нескольких процессоров, вы должны иметь возможность создать приложение, которое разделяет операторы SQL и распределяет работу по нескольким потокам. Это позволит в основном вставлять запросы в 4 раза быстрее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .