سؤال

نحن تشغيل متوسطة الحجم (350GB) قاعدة البيانات مع بعض إلى حد كبير الجداول (بضع مئات من ملايين الصفوف ، 50GB) على كبيرة بدرجة معقولة الخادم (2 x quad-core Xeons, 24GB RAM, 2.5" 10k الأقراص في RAID10), و يتم الحصول على بعض بطيئة جدا إدراج (مثلا ، بسيطة إدراج صف واحد أخذ 90 ثانية!).

لدينا innodb_buffer_pool_size هو 400MB ، والتي عادة ما تكون منخفضة جدا لهذا النوع من الإعداد.ومع ذلك ، فإن موفر استضافة تنصح هذا لا يهم عند تشغيل ZFS.هل هو صحيح ؟

(أعتذر عن المنصب المزدوج على https://dba.stackexchange.com/questions/1975/is-tuning-the-innodb-buffer-pool-size-important-on-solaris-zfs, ولكن أنا لست متأكدا كم كبير من الجمهور هناك!)

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

المحلول

وأود أن لا تزال تعيين innodb_buffer_pool_size أعلى بكثير من أن 400 متر.السبب ؟ ك InnoDB تجمع المخزن المؤقت لا تزال ذاكرة التخزين المؤقت البيانات وصفحات الفهرس تحتاج الجداول الوصول إليها بشكل متكرر.

تشغيل هذا الاستعلام للحصول على الموصى innodb_buffer_pool_size في ميجا بايت:

SELECT CONCAT(الجولة(KBS/السلطة(1024 ، إذا(pw<0,0,إذا(pw>3,0,pw)))+0.49999),SUBSTR(' KMG' ، إذا(pw<0,0,إذا(pw>3,0,pw))+1,1)) recommended_innodb_buffer_pool_size من (SELECT SUM(data_length+index_length) KBS من information_schema.الجداول حيث المحرك='ك InnoDB') أ(اختر 2 pw) ب ؛

ببساطة استخدام إما نتيجة هذا الاستعلام أو 80% من ذاكرة الوصول العشوائي المثبتة (في حالة 19660M) أيهما أصغر.

وأود أيضا تعيين innodb_log_file_size إلى 25% من ك InnoDB تجمع المخزن المؤقت الحجم.للأسف القيمة القصوى من innodb_log_file_size هو 2047M.(1M قصيرة من 2G) وهكذا ، مجموعة innodb_log_file_size إلى 2047M منذ 25% من innodb_buffer_pool_size من recommendated الإعداد 4915M.

آخر recommedation هو تعطيل حمض الامتثال.استخدام إما 0 أو 2 innodb_flush_log_at_trx_commit (الافتراضي هو 1 التي تدعم حمض الامتثال) هذا وسوف تنتج أسرع ك InnoDB يكتب في خطر من فقدان ما يصل إلى 1 ثانية بقيمة المعاملات في حالة وقوع حادث.

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