我在服务器上运行MySQL服务器,其中包含以下规范 -
Dual Xeon Quad Core 2.0,2048 MB RAM,1x 160 GB SATA Fedora Core + SSH
但是,用于插入10000条记录的MySQL进程占用了超过100%的CPU和高达1 GB的RAM。 这是一个简单的插入声明。
为什么MySQL会占用大量内存以及可以采取哪些措施?
答案 0 :(得分: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)也必须有用。]
尝试使用联接代替:
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'