2009-11-07 3 views
1

Я бегу сервер MySQL на сервере, который имеет следующие технические характеристики -процесс MySQL использует более чем на 100% использование процессора, и нужно около 1 ГБ памяти

Dual Xeon Quad Core 2.0, 2048 Мб оперативной памяти, 1x 160 Гб SATA Fedora Core + SSH

Но процесс MySQL для вставки 10000 записей занимает более 100% от ЦП и до 1 ГБ ОЗУ. Это простая вставка.

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

+1

Не достаточно информации, чтобы ответить, и, вероятно, принадлежит на serverfault.com – jitter

+2

более чем на 100%? :) – NDM

+0

Пожалуйста, разместите свою схему и инструкцию insert. –

ответ

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 'xyz%') простой индекс может значительно повысить производительность.

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

Попробуйте usign объединение вместо:.

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' 

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

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