Mysql "إسقاط قاعدة البيانات" يستغرق وقتًا - لماذا؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

mysql5.0 مع زوج من قواعد البيانات "A" و"B"، وكلاهما يحتوي على جداول innodb كبيرة."إسقاط قاعدة البيانات أ ؛" تجميد قاعدة البيانات "B" لبضع دقائق.لا يوجد شيء يستخدم "A" في تلك المرحلة، فلماذا هذه العملية المكثفة؟

نقاط المكافأة:نظرًا لأننا نستخدم "أ"، ونرفع البيانات إلى "ب"، ثم ننتقل إلى استخدام "ب"، فكيف يمكننا القيام بذلك بشكل أسرع؟إن إسقاط قواعد البيانات ليس من الأشياء التي يتعين على المرء القيام بها طوال الوقت، لذا فإن هذا يعد خارج المخططات قليلاً.

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

المحلول

لذلك لست متأكدا إجابة مات روجيش سوف يساعد 100٪.

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

هذا ما وصفه أحد زملائي هنا:http://www.mysqlperformanceblog.com/2009/06/16/slow-drop-table/

إحدى الإستراتيجيات الممتازة لتقليل التأثير هي استخدام نظام ملفات مثل XFS.

الحل البديل قبيح.يجب عليك بشكل أساسي أن تتخلص من جميع البيانات الموجودة في الجداول قبل إسقاطها (انظر التعليق رقم 11 على الرابط أعلاه).

نصائح أخرى

متابعة سكافمان:

قم بتغيير my.cnf (وأعد تشغيل MySQL) ليشمل:

innodb_file_per_table = 1

(http://mysqldba.blogspot.com/2006/12/innodbfilepertable.html)

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

لاحظ أن هذا لا يغير الجداول الموجودة؛سيتعين عليك القيام بالعمل للحصول عليها في ملفهم الخاص (http://capttofu.livejournal.com/11791.html).

افتراضيًا، تستخدم جميع قواعد بيانات innodb في تثبيت خادم mysql نفس المجموعة الفعلية من ملفات البيانات، لذلك من الممكن أن يؤثر "إسقاط قاعدة البيانات A" على قاعدة البيانات B.نظرًا لأن "إسقاط قاعدة البيانات" من المحتمل أن يتضمن إعادة تنظيم كبيرة لملفات بيانات innodb، فمن الممكن أن تكون عملية حظر، إما بسبب شدة العملية، أو حسب التصميم.

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

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