سؤال

وكنت أقرأ عن إعادة بيع ديون استعلام SQL كبير بطيئة على هنا ، والتيار أعلى الرد من ميتش القمح، الذي يريد أن يتأكد يستخدم الاستعلام مؤشرات ليختار الكبرى، ويذكر:

<اقتباس فقرة>   

وأول شيء سأفعله هو تحقق للتأكد من وجود وظيفة صيانة مؤشر النشطة التي تدار بشكل دوري. إن لم يكن، وعلى كل indexs القائمة بناؤها أو إذا تعذر ذلك على الأقل الحصول على إحصاءات تجديد.

وأنا فقط أشعر DBA الهواة، ولقد قدمت بعض البرامج لحسابهم الخاص التي هي في الأساس عملاء جافا سطح المكتب وأحيانا MySQL الخلفية. عندما أقوم بإعداد النظام، وأنا أعلم لإنشاء فهرس على الأعمدة التي سيتم الاستعلام من قبل، وهناك CaseID VARCHAR وCustName VARCHAR.

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

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

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

المحلول

وليس هناك حاجة ل "إعادة بناء" فهرس. دائما الاحتفاظ بها ما يصل إلى التاريخ. ربما كان يشير إلى إعادة بناء الجدول. اعتمادا على أنماط الاستخدام ومخطط، يمكنك الحصول على صفحات مجزأة في ك InnoDB، وأعتقد في MYISAM أيضا. يمكن إعادة بناء الجدول تحسين الأداء من خلال التخلص من تجزئة البيانات على القرص. أنا لا تستخدم الجداول MYISAM بانتظام، ولكن أعتقد فمن المستحسن لتشغيل "OPTIMIZE TABLE" مع بعض أنماط الاستخدام. اطلع على مستندات الخلية على OPTIMIZE TABLE للحصول على بعض المعلومات الجيدة على كل MYISAM وك InnoDB.

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

وحتى إذا كنت تستخدم ك InnoDB، فإن الجواب هو لا، أنت عادة لا تحتاج إلى بنشاط لا أي شيء للحفاظ على الفهارس الخاصة بك أداء جيدا. لست متأكدا كما هو الحال مع MYISAM، وأعتقد أنه أكثر شيوعا في حاجة لتحسين هذه الجداول بشكل منتظم.

نصائح أخرى

وانها عادة ما تكون فكرة جيدة لاقامة cronjob لتحسين المؤشرات والتحقق من وجود أخطاء.

mysqlcheck . ألف وظيفة كرون نموذجية تبدو شيء من هذا القبيل mysqlcheck -Aaos، والذي يتحقق جميع الجداول في جميع قواعد البيانات للأخطاء، يحسن الفهارس، والمخرجات الوحيدة على خطأ.

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

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