proceso MySQL utiliza más de 100% de uso de la CPU y necesita aproximadamente 1 GB de memoria

StackOverflow https://stackoverflow.com/questions/1692756

Pregunta

Me postulo servidor MySQL en el servidor de la cual tiene las siguientes especificaciones -

Dual Xeon Quad Core 2.0, 2048 MB RAM, 1x 160 GB SATA Fedora Core + SSH

Pero proceso de MySQL para la inserción de 10000 registros tomar más de 100% de la CPU y hasta 1 GB de RAM. Es una instrucción de inserción normal.

¿Por qué se está llevando a MySQL tanto de la memoria y qué se puede hacer al respecto?.

¿Fue útil?

Solución

La parte más pesada de la consulta es el 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%')

La consulta anidada probablemente se repite para cada fila. Esto se puede comprobar EXPLAIN PLAN corriendo + toda la consulta SELECT. Creo que el operador 'como' se usa contra una columna no indexada. En este caso (like 'xyz%') un índice simple puede mejorar mucho el rendimiento.

[Añadido: por otra parte, CustId SELECT ... Imperdibles que son mayores que 5000, que no son necesarios en absoluto Identificación de salida. Un índice compuesto (CustId, CustName) en Cust_Details también debe ser útil.]

Trate usign una unión en su lugar:

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'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top