سؤال

هل هناك أي تقنيات موثقة لتسريع عمليات تفريغ واستيراد MySQL؟

سيتضمن ذلك إعدادات my.cnf، واستخدام ramdisks، وما إلى ذلك.

البحث فقط عن التقنيات الموثقة، ويفضل أن يكون ذلك مع معايير توضح مدى السرعة المحتملة.

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

المحلول

http://www.maatkit.org/ لديه mk-parallel-dump وmk-parallel-restore

إذا كنت ترغب في الحصول على mysqldump متعدد الخيوط، فلا ترغب في المزيد.تقوم هذه الأداة بتفريغ جداول MySQL بالتوازي.إنه mysqldump الأكثر ذكاءً ويمكنه إما أن يكون بمثابة غلاف لـ mysqldump (بسلوك افتراضي معقول) أو كملف حول SELECT INTO OUTFILE.وهو مصمم للتطبيقات عالية الأداء على أحجام البيانات الكبيرة جدًا، حيث تكون السرعة ذات أهمية كبيرة.إنه يستفيد من وحدات المعالجة المركزية والأقراص المتعددة لتفريغ بياناتك بشكل أسرع.

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

نصائح أخرى

  1. احصل على نسخة من عالية الأداء MySQL.الكتاب العظيم.
  2. إدراجات موسعة في مقالب
  3. تفريغ مع تنسيق -تاب حتى تتمكن من استخدام mysqlimport ، وهو أسرع من mysql <dumpfile
  4. قم بالاستيراد باستخدام عدة سلاسل رسائل، واحدة لكل جدول.
  5. استخدم محرك قاعدة بيانات مختلفًا إن أمكن.الاستيراد إلى محرك معاملات كثيفة مثل Innodb بطيئة للغاية.الإدراج في محرك غير ناتج مثل Myisam أسرع بكثير.
  6. انظر إلى الجدول مقارنة البرنامج النصي في مجموعة أدوات Maakit ومعرفة ما إذا كان يمكنك تحديث الجداول الخاصة بك بدلاً من إلقاءها واستيرادها.لكنك ربما تتحدث عن النسخ الاحتياطية/الاستعادة.

إذا كنت تقوم بالاستيراد إلى InnoDB، فإن الشيء الوحيد الأكثر فعالية الذي يمكنك القيام به هو وضع

innodb_flush_log_at_trx_commit = 2

في الخاص بك my.cnf, مؤقتًا أثناء تشغيل الاستيراد.يمكنك إعادته إلى 1 إذا كنت بحاجة إلى حمض.

أعتقد أن سؤالك يعتمد أيضًا على مكان عنق الزجاجة:

  • إذا كانت شبكتك تمثل عنق الزجاجة، فيمكنك أيضًا إلقاء نظرة على -C/--compress العلم ل mysqldump.
  • إذا نفدت ذاكرة جهاز الكمبيوتر الخاص بك (على سبيل المثال.يبدأ المبادلة) يجب عليك شراء المزيد من الذاكرة.

أيضاً، قم بإلقاء نظرة على --quick العلم ل mysqldump--disable-keys إذا كنت تستخدم MyIsam).

من المفترض أن يؤدي استخدام الإدخالات الموسعة في مقالب التفريغ إلى زيادة سرعة عمليات الاستيراد.

قم بإيقاف تشغيل عمليات فحص المفاتيح الخارجية وتشغيل الالتزام التلقائي.

mysqlhotcopy قد يكون بديلاً لك أيضًا إذا كان لديك جداول MyIsam فقط.

بديل آخر هو http://www.mydumper.org - النسخ الاحتياطي/الاستعادة متعدد الخيوط لـ mysql وهو أسرع من 3x إلى 10x مرات من mysqldump ويمكنه التعامل مع كل من MyISAM وInnoDB بالإضافة إلى Drizzle http://vbtechsupport.com/1695/

باستخدام الفهارس ولكن ليس كثيرًا، قم بتنشيط ذاكرة التخزين المؤقت للاستعلام، باستخدام أبو الهول لقاعدة البيانات الكبيرة، إليك بعض النصائح الجيدة http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (بالفرنسية)

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