2009-11-07 33 views
1

我運行在服務器上的已下列規格MySQL服務器 -MySQL進程使用超過100%的CPU使用率,需要大約1 GB的內存

雙至強四核2.0,2048 MB RAM,1個160 GB SATA Fedora Core + SSH

但是插入10000條記錄的MySQL進程佔用了100%以上的CPU和高達1 GB的RAM。 這是一個普通的插入語句。

爲什麼MySQL會佔用如此多的內存以及可以做些什麼呢?

+1

沒有足夠的信息來回答,可能屬於對serverfault.com – jitter 2009-11-07 11:33:05

+2

超過100%? :) – NDM 2009-11-07 11:41:27

+0

請張貼您的架構和插入語句。 – 2009-11-07 11:46:07

回答

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的id,根本不需要。在Cust_Details的複合指數(CUSTID,的CustName)也必須是有用]

嘗試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'