سؤال

لدي قاعدة بيانات mysql innodb بسرعة 1.9 جيجابايت ، أظهرها الأمر التالي.

SELECT table_schema "Data Base Name"
     , sum( data_length + index_length ) / 1 048 576 
       as "Data Base Size in MB"
     , sum( data_free )/ 1 048 576  
       as "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema ; 

+--------------------+----------------------+------------------+
| Data Base Name     | Data Base Size in MB | Free Space in MB |
+--------------------+----------------------+------------------+
| database_name      |        1959.73437500 |   31080.00000000 | 

أسئلتي هي:

  1. هل يعني ذلك أنه إذا قمت بتعيين innodb_buffer_pool_size على 2 جيجابايت أو أكبر ، يمكن تحميل قاعدة البيانات بأكملها في الذاكرة لأن هناك حاجة إلى عدد أقل من طلبات القرص؟

  2. ماذا يعني المساحة الحرة البالغة 31 جيجابايت؟

  3. إذا كان من الممكن تخصيص الحد الأقصى من ذاكرة الوصول العشوائي لـ Innodb_buffer_pool_size هو 1 جيجابايت ، فهل من الممكن تحديد الجداول التي يتم تحميلها في الذاكرة مع إبقاء الآخرين يقرؤون دائمًا من القرص؟

شكرا لك مقدما.

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

المحلول

  1. ليس تماما. يتم استخدام Pool Buffer InnoDB للقراءات العازلة والكتابة. إذا تتم قراءة معظم وصولك ، فإذا تم تخزينه مؤقتًا وسيكون هناك حاجة إلى عدد أقل من الأقراص.
  2. يمكن أن يكون هذا خلل برمجي, ، لم يتم توثيقه جيدًا ، لكنني أعتقد أن data_free هي المساحة المتاحة داخل ملفات InnoDB (إذا كتبت أكثر من هذا innodb سيتعين على ملف (ملفات) البيانات).
  3. لا ، لكن InnoDB سوف يقوم بتخزين البيانات التي يمكنك الوصول إليها تلقائيًا ، لذلك يجب أن يكون لها تأثير مثالي على أي حال.

فكر في استخدام memcached كطبقة ذاكرة التخزين المؤقت للتخلص من الوصول إلى قاعدة البيانات تمامًا إذا كنت بحاجة إلى أداء أفضل.

نصائح أخرى

  1. من الأفضل أن تقلق بشأن وجود ذاكرة كافية لتخزين الفهارس في ذاكرة الوصول العشوائي ، وترك البيانات على القرص. يعاني أداء قاعدة البيانات بشكل كبير إذا كان لا بد من قراءة الفهارس من القرص في كل مرة - أكثر بكثير من النفقات العامة لاسترداد البيانات المطلوبة لاحقًا من القرص.
  2. يتم إنشاء ملفات بيانات InnoDB بحجم ثابت ، مع خيار التلقائي تلقائيًا (إنشاء ملفات إضافية) إذا كانت ممتلئة. يمكنك أن ترى ما هو حجم الملف show variables like 'innodb_data_file_path'. المساحة الحرة المبلغ عنها هي مقدار ملفات البيانات الحالية غير المستخدمة. في حالتك ، حصلت على 2Gigs من البيانات المخزنة في (على الأرجح) 32GIGs من ملفات بيانات InnoDB ، تاركين 30 جيجا متاحة.
  3. هل هناك أي سبب ترغب في تجاوز منطق تخزين التزليات الخاص بـ Innodb لعلان الجداول المحددة في ذاكرة الوصول العشوائي؟ ستميل ذاكرة التخزين المؤقت بشكل طبيعي إلى الحفاظ على البيانات الأكثر تكرارًا في ذاكرة الوصول العشوائي بالفعل ، وسيعاني الأداء بلا شك إذا أجبرتها على الاحتفاظ بالبيانات الأقل استخدامًا بدلاً من الأكثر شعبية.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top