تستخدم عملية MySQL أكثر من 100٪ استخدام وحدة المعالجة المركزية وتحتاج إلى حوالي 1 جيجابايت من الذاكرة

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

سؤال

أقوم بتشغيل خادم MySQL على الخادم الذي لديه المواصفات التالية -

Dual Xeon رباعية النواة 2.0، 2048 ميغابايت، 1x 160 جيجابايت ساتا فيدورا كور + SSH

لكن عملية MySQL لإدراج 10000 سجل تأخذ أكثر من 100٪ من وحدة المعالجة المركزية وما يصل إلى 1 جيجابايت من ذاكرة الوصول العشوائي. إنه بيان إدراج عادي.

لماذا تأخذ 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، التي ليست حاجة على الإطلاق. يجب أن تكون مؤشر مركب (كاستد، Curname) على 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'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top