MySQL 프로세스는 100% 이상의 CPU 사용을 사용하며 약 1GB의 메모리가 필요합니다.
문제
다음 사양이있는 서버에서 MySQL 서버를 실행 중입니다.
듀얼 Xeon Quad Core 2.0, 2048 MB RAM, 1X 160 GB SATA FEDORA CORE + SSH
그러나 10000 레코드를 삽입하기위한 MySQL 프로세스는 CPU의 100% 이상과 최대 1GB의 RAM이 필요합니다. 일반 삽입 문입니다.
MySQL이 왜 그렇게 많은 메모리를 취하고 있고 그것에 대해 무엇을 할 수 있습니까?.
해결책
쿼리에서 가장 큰 부분은 선택입니다.
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
+ 모든 선택 쿼리. '좋아요'연산자가 비 인덱스 열에 사용 된 것 같아요. 이 경우 (like 'xyz%'
) 간단한 색인은 성능을 많이 향상시킬 수 있습니다.
추가 : 또한 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'
제휴하지 않습니다 StackOverflow