Процесс MySQL использует более 100% загрузки процессора и требует около 1 ГБ памяти

Я использую сервер MySQL на сервере, который имеет следующие спецификации:

Dual Xeon Quad Core 2.0, 2048 МБ ОЗУ, 1x 160 ГБ SATA Fedora Core + SSH

Но процесс MySQL для вставки 10000 записей занимает более 100% процессорного времени и до 1 ГБ оперативной памяти. Это простое утверждение вставки.

Почему MySQL занимает так много памяти и что с этим можно сделать?

1 ответ

Решение

Самая тяжелая часть в вашем запросе это SELECT:

Select FirstName, LastName, CountryID, Address, Phone
From Test2.Customer
Where UserID Between 1 and 5000
and CustomerID in (Select CustId from Cust_Details Where CustName like 'Mi%')

Вложенный запрос, вероятно, повторяется для каждой строки. Вы можете проверить это работает EXPLAIN PLAN + весь запрос SELECT. Я предполагаю, что оператор like используется против неиндексированного столбца. В этом случае (like 'xyz%'простой индекс может значительно повысить производительность.

[Добавлено: более того, SELECT CustId ... должен выводить идентификаторы, которые больше 5000, которые вообще не нужны. Составной индекс (CustId, CustName) для Cust_Details также должен быть полезен.]

Попробуйте вместо этого использовать объединение:

Select FirstName, LastName, CountryID, Address, Phone
From Test2.Customer c, Cust_Details cd
Where c.UserID Between 1 and 5000
and c.CustomerID=cd.CustId
and left(cd.CustName) = 'Mi'
Другие вопросы по тегам