كيف كبيرة يمكن أن قاعدة بيانات MySQL على الأداء يبدأ في التدهور

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

سؤال

في نقطة ما لا قاعدة بيانات MySQL البدء في إنقاص الأداء ؟

  • لا البدني حجم قاعدة البيانات هذه المسألة ؟
  • هل عدد السجلات المسألة ؟
  • أي تدهور الأداء الخطي أو مؤازرة ؟

علي ما أعتقد أن تكون قاعدة بيانات كبيرة مع ما يقرب من 15 مليون السجلات التي يستغرق تقريبا 2GB.استنادا إلى هذه الأرقام ، هل هناك أي حافز بالنسبة لي لتنظيف البيانات ، أو أنا آمنة لتمكينها من مواصلة التوسع لبضع سنوات ؟

هل كانت مفيدة؟

المحلول

المادية قاعدة بيانات الحجم لا يهم.عدد السجلات لا يهم.

في تجربتي المشكلة الأكبر التي أنت ذاهب لتشغيل ليس الحجم ولكن عدد من الاستفسارات يمكنك التعامل معها في وقت واحد.على الأرجح أنك سوف تضطر إلى الانتقال إلى ماجستير/الرقيق التكوين بحيث قراءة يمكن تشغيل الاستعلامات ضد العبيد و كتابة الاستفسارات تشغيل ضد السيد.ومع ذلك إذا كنت غير مستعدة لهذا بعد ، يمكنك دائما تعديل فهارس الاستعلامات كنت تستخدم لتسريع أوقات الاستجابة.أيضا هناك الكثير من التغيير والتبديل يمكنك القيام به على شبكة كومة نواة لينكس التي من شأنها أن تساعد.

لقد كان لي الحصول على ما يصل إلى 10 جيجابايت فقط عدد معتدل من اتصالات و التعامل مع الطلبات على ما يرام.

أود أن تركز أولا على الفهارس ، ثم يكون مسؤول ملقم نظرة على نظام التشغيل الخاص بك, وإذا كان كل ذلك لا يساعد قد يكون الوقت قد حان لتنفيذ ماجستير/الرقيق التكوين.

نصائح أخرى

بشكل عام هذا هو دقيق جدا المسألة ليست تافهة على الإطلاق.أنا أشجعكم على قراءة mysqlperformanceblog.com و عالية الأداء MySQL.أنا حقا أعتقد أن هناك أي إجابة عن هذا.

أنا أعمل على مشروع الذي يحتوي على قاعدة بيانات MySQL مع ما يقرب من 1 تيرابايت من البيانات.أهم قابلية عامل ذاكرة الوصول العشوائي.إذا الفهارس من الجداول الخاصة بك صالح في الذاكرة و الاستفسارات الخاصة بك هي الأمثل للغاية ، يمكن أن تخدم كمية معقولة من الطلبات مع متوسط آلة.

عدد السجلات في المسألة ، اعتمادا على كيفية الجداول الخاصة بك تبدو وكأنها.فمن فرق لدينا الكثير من varchar الحقول أو زوجين فقط من رجات أو يتوق.

حجم قاعدة البيانات المسائل أيضا:أعتقد من النسخ الاحتياطية ، على سبيل المثال.اعتمادا على المحرك الخاص بك المادية db الملفات على النمو ، ولكن لا يتقلص ، على سبيل المثال مع ك innodb.لذلك حذف الكثير من الصفوف لا تساعد في تقليص البدني الخاص بك الملفات.

هناك الكثير من هذه القضايا كما هو الحال في الكثير من الحالات الشيطان يكمن في التفاصيل.

حجم قاعدة البيانات لا يهم.إذا كان لديك أكثر من جدول واحد مع أكثر من مليون سجل ، ثم يبدأ الأداء في الواقع أن تتحلل.عدد السجلات لا بالطبع يؤثر على الأداء: الخلية يمكن أن تكون بطيئة مع جداول كبيرة.إذا كنت ضرب مليون السجلات سوف تحصل مشاكل في الأداء إذا كانت المؤشرات لم يتم تعيين الحق (على سبيل المثال لا مؤشرات الميادين "حيث البيانات" أو "الشروط" في ينضم).إذا كنت ضرب 10 مليون سجل, سوف تبدأ في الحصول على مشاكل الأداء حتى لو كان لديك كل ما تبذلونه من المؤشرات الحق.ترقيات الأجهزة - إضافة المزيد من الذاكرة أكثر من طاقة المعالج ، وخاصة الذاكرة - في كثير من الأحيان يساعد على الحد من أشد المشاكل عن طريق زيادة الأداء مرة أخرى ، على الأقل إلى درجة معينة.على سبيل المثال 37 إشارات ذهب من 32 غيغابايت من ذاكرة الوصول العشوائي إلى 128 جيجابايت من ذاكرة الوصول العشوائي عن القاعده خادم قاعدة البيانات.

أود أن تركز أولا على الفهارس ، من أن يكون خادم المشرف ننظر في نظام التشغيل الخاص بك, وإذا كان كل ذلك لا يساعد قد يكون الوقت قد حان للحصول على درجة الماجستير/عبد التكوين.

هذا صحيح.شيء آخر أن يعمل عادة هو مجرد تقليل كمية البيانات التي عملت مرارا وتكرارا مع.إذا كان لديك "البيانات القديمة" و "معطيات جديدة" و 99% من الاستفسارات الخاصة بك العمل مع البيانات الجديدة فقط نقل كافة البيانات إلى جدول آخر - و لا ننظر في الأمر ;)

-> نظرة التقسيم.

2GB و عن 15M سجلات صغير جدا قاعدة البيانات - لقد تشغيل أكبر بكثير منها على بنتيوم الثالث(!) و كل شيء لا يزال تشغيل سريع جدا..إذا كان لك بطيئة بل هو قاعدة بيانات/طلب تصميم المشكلة وليس الخلية واحدة.

انها نوع من العبث أن نتحدث عن "أداء قاعدة البيانات", "أداء الاستعلام" هو مصطلح أفضل هنا.و الجواب هو:ذلك يعتمد على الاستعلام البيانات التي تعمل على فهارس, الأجهزة, الخ.يمكنك الحصول على فكرة عن كيفية العديد من الصفوف سوف يتم مسحها ضوئيا وما المؤشرات تسير ليتم استخدامها مع شرح الجملة.

2GB لا تعول حقا بأنها "كبيرة" قاعدة البيانات هو أكثر من الحجم المتوسط.

أيضا احترس من مجمع ينضم.الصفقة التعقيد يمكن أن يكون عاملا كبيرا بالإضافة إلى حجم المعاملات.

إعادة بيع ديون ثقيلة الاستفسارات في بعض الأحيان تقدم كبير في تعزيز الأداء.

أنا مرة دعيت إلى إلقاء نظرة على الخلية التي قد "توقفت عن العمل".اكتشفت أن DB الملفات الموجودة على شبكة الأجهزة المدون شنت مع NFS2 مع الحد الأقصى لحجم الملف من 2GB.و من المؤكد الطاولة التي كانت قد توقفت عن قبول المعاملات بالضبط 2 غيغابايت على القرص.ولكن فيما يتعلق منحنى الأداء قيل لي أنه كان يعمل مثل بطل حتى أنه لم ينجح على الإطلاق!هذه التجربة يقدم دائما بالنسبة لي بمثابة تذكير جميل أن هناك دائما الأبعاد فوق وتحت واحد وكنت بطبيعة الحال المشتبه به.

وجهة النظر هو أيضا الغرض من النظام والبيانات في يوم إلى يوم.

على سبيل المثال نظام تحديد المواقع رصد السيارات ليست ذات الصلة الاستعلام عن البيانات من مواقف السيارات في الأشهر السابقة.

وبالتالي فإن البيانات التي يمكن تمريرها إلى أخرى التاريخية الجداول ممكن التشاور و الحد من تنفيذ الأوقات من اليوم إلى يوم الاستعلامات.

أنا حاليا إدارة قاعدة بيانات MySQL على الأمازون البنية التحتية السحابية التي نمت إلى 160 جيجابايت.أداء الاستعلام على ما يرام.ما أصبح كابوسا هو النسخ الاحتياطي واستعادة إضافة العبيد ، أو أي شيء آخر أن يتعامل مع مجموعة البيانات بأكملها أو حتى DDL على جداول كبيرة.الحصول على بيئة نظيفة استيراد من ملف تفريغ أصبح مشكلة.من أجل جعل عملية مستقرة بما فيه الكفاية في أتمتة مختلف الخيارات في حاجة إلى الاستقرار في الأولوية على الأداء.إذا كنا من أي وقت مضى إلى التعافي من الكوارث باستخدام SQL النسخ الاحتياطي كنا منذ أيام

أفقيا زيادة SQL أيضا مؤلمة جدا و في معظم الحالات يؤدي إلى استخدامه بطرق ربما لم يقصد عندما اخترت وضع البيانات في SQL في المقام الأول.شظايا, قراءة العبيد, multi-master, et al, هم كل سيئة الحلول التي تضيف مزيدا من التعقيد إلى كل شيء كنت تفعل مع DB و لا واحد منهم يحل المشكلة ؛ فقط يخفف ذلك في بعض الطرق.أود أن أقترح بقوة تبحث في نقل بعض البيانات الخاصة بك من الخلية (أو حقا أي SQL) عند بدء التعامل مع البيانات من حيث حجم هذه الأنواع من الأشياء تصبح قضية.

الأداء يمكن أن تتحلل في غضون بضعة آلاف من الصفوف إذا كانت قاعدة البيانات غير مصممة بشكل صحيح.

إذا كان لديك السليم فهارس الاستخدام السليم محركات (لا تستخدم MyISAM متعددة حيث DMLs ومن المتوقع), استخدام التقسيم وتخصيص الصحيح الذاكرة اعتمادا على استخدام وبالطبع جيدة تكوين الخادم MySQL يمكن التعامل مع البيانات حتى في تيرابايت!

هناك دائما طرق لتحسين أداء قاعدة البيانات.

ذلك يعتمد على الاستعلام الخاص بك والتحقق من الصحة.

على سبيل المثال ، عملت مع طاولة 100 000 الأدوية التي لها عمود الاسم حيث فقد أكثر من 15 حرفا لكل دواء في هذا الجدول .انا وضعت استفسار مقارنة اسم عام من المخدرات بين الجدولين.الاستعلام يأخذ أكثر من دقيقة إلى تشغيل.نفس,إذا قارنت المخدرات باستخدام مؤشر المخدرات باستخدام عمود معرف (كما ذكر أعلاه) ، فإنه يأخذ فقط بضع ثوان.

قاعدة بيانات الحجم لا يهم حيث بايت الجدول عدد الصفوف.ستلاحظ أداء ضخمة الفرق بين ضوء قاعدة البيانات blob شغل واحد.بمجرد طلبي علقت لأني وضعت الثنائية الصور داخل الحقول بدلا من حفظ الصور في ملفات على القرص ووضع أسماء الملفات فقط في قاعدة البيانات الخاصة بنا.بالتكرار عدد كبير من الصفوف من ناحية أخرى هو ليس مجانا.

أي أنه لا يهم حقا.الخلية السرعة حوالي 7 مليون الصفوف في الثانية.حتى تتمكن من توسيع نطاق ذلك قليلا جدا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top