PmaControl logo PmaControl
  • مرحباً
  • PmaControl
    • وكلاء الذكاء الاصطناعي 13 وكلاء محليين
    • عروضنا المجتمع، السحابة، محليًا، المميز
    • التوثيق أدلة، API، الهندسة المعمارية
    • سجل التغييرات كل إصدارات 5.x المستقرة
    • السوق المكونات الإضافية للمجتمع
    • عملاء أكثر من 28 شركة
    • الأسئلة الشائعة 25 سؤالا / 7 فئات
    قواعد البيانات
    • ماريا دي بي 35 مادة
    • ماي إس كيو إل 15 articles
    • مجموعة جاليرا 6 عناصر
    • ماكس سكيل 4 عناصر
    • ProxySQL 3 عناصر
    • أمازون أورورا ماي إس كيو إل 0 العناصر
    • قاعدة بيانات أزور 0 العناصر
    • انقر البيت 0 العناصر
    • GCP CloudSQL 0 العناصر
    • بيركوناسيرفر 0 العناصر
    • متجر واحد 0 العناصر
    • تي دي بي 0 العناصر
    • سرعة 0 العناصر
    الحلول
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • Observabilité SQL المراقبة والتنبيهات والطوبولوجيا
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2
    • Migration & upgrade صفر توقف عن العمل، pt-osc، gh-ost
  • عروضنا
  • موارد
    • التوثيق الأدلة الفنية وواجهات برمجة التطبيقات
    • مركز تحسين MySQL مؤشر تخفيض السعر والمقاييس والإعدادات والحوادث
    • الأسئلة الشائعة 25 سؤالا متكررا
    • الشهادات ملاحظات العملاء وحالات الاستخدام
    • مدونة مقالات ورؤى
    • خريطة الطريق الميزات القادمة
    مجالات الخبرة
    • Observabilité SQL المراقبة والتنبيهات وطوبولوجيا Dot3
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2، ISO 27001
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Performance & optimisation ملخصات، شرح، ضبط
    • Migration & upgrade صفر توقف عن العمل، pt-osc
    روابط سريعة
    • جيثب ويكي 26 صفحة - التثبيت والمحرك والمكونات الإضافية
    • كود المصدر مستودع جيثب الرسمي
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • احجز عرضًا توضيحيًا 30 دقيقة - هندسة معمارية حقيقية
  • دعم 24 × 7
  • احجز عرضًا توضيحيًا
احجز عرضًا توضيحيًا
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
موارد › مركز تحسين MySQL › حاسبة ذاكرة InnoDB لـ MariaDB / MySQL

حاسبة ذاكرة InnoDB لـ MariaDB / MySQL

احسب سيناريو ذاكرة InnoDB والخادم باستخدام الإعدادات الفعلية. القيم المعبأة توضح خادماً بذاكرة 16 GiB وليست توصيات.

وحدات ثنائية: 1 GiB = 1024 MiB. يقبل البايت أو K/M/G/T مثل 268435456 أو 256M أو 8G. تتم الحسابات في متصفحك.

فعّل JavaScript لاستخدام الحاسبة. تبقى الشروحات والاستعلامات متاحة أدناه.

الخادم والتزامن
ذاكرة InnoDB

المجمع ومخزن السجل مشتركان. حصة 10% تقريب موثق في MySQL وليست ثابتاً في MariaDB. أضف تخصيصات القاموس والأقفال والمعاملات والفهرس التجزئي التكيفي والضغط غير المحسوبة. لا تضف قياساً يتضمن المجمع بالفعل.

الذاكرة العامة الأخرى
الذاكرة الأساسية لكل اتصال

نموذج خيط لكل اتصال: المكدس ومخزنا شبكة أوليان وملخص وحصة إضافية. عدّل الحصة لمجمع الخيوط. قد تكبر مخازن الشبكة؛ أدرج الزيادة في حصة الاتصال أو ذاكرة الاستعلام.

المخازن لكل استعلام نشط

تُخصص المخازن عند الحاجة. اضبط أعدادها حسب خطة التنفيذ واستخدم 0 للعملية غير المستخدمة. تشمل الحصة الحزم ونص SQL وBLOB وbinlog والتخصيصات غير المحسوبة. قد تحتاج عمليات الربط المعقدة إلى مخازن متعددة.

الجداول المؤقتة

في MariaDB وMEMORY ينطبق الأصغر من tmp_table_size وmax_heap_table_size لكل جدول لا لكل جلسة. تستخدم TempTable حد RAM مشتركاً دون max_heap_table_size. قبل MySQL 8.0.28 لا يحد tmp_table_size من TempTable. الكتل المحلية، غالباً 1 MiB أو أكثر، خارج الحد وقد تبقى حتى انتهاء الخيط. تحتاج mmap وجداول MEMORY التي ينشئها المستخدم حصة إضافية.

قياسات اختيارية منفصلة عن الحساب

0 يعني عدم وجود قياس. تشمل العدادات التخصيصات المتتبعة فقط؛ مجموعها ليس RSS. لا تُضاف القياسات إلى النموذج.

نتائج السيناريو

ذاكرة InnoDB
سيناريو الحمل
ضغط عند max_connections
هامش السيناريو
التخصيصات العامة والحصص
ذاكرة الاتصالات الأساسية
مخازن الاستعلامات النشطة
الجداول المؤقتة والكتل المحلية
حصة خادم قاعدة البيانات
ذاكرة InnoDB المرصودة حالياً
ذاكرة RSS الحالية للعملية

تقدير وليس حداً أقصى مضموناً

قد يتجاوز الحمل وإعدادات الجلسة والتخصيص غير المرصود هذا النموذج. يحتفظ سيناريو الضغط بأعداد العمليات ويجعل جميع الاتصالات نشطة. تحقق من RSS وحدود cgroup وswap والذروة تحت حمل ممثل. ملفات redo/undo وinnodb_redo_log_capacity تخزين وليست تخصيصات RAM مكافئة.

المعادلات والافتراضات

C = الاتصالات؛ A = الاستعلامات النشطة؛ T = الجداول المؤقتة لكل استعلام. تُضاف الحصص مرة واحدة.

InnoDB = innodb_buffer_pool_size × (1 + overhead / 100) + innodb_log_buffer_size + dictionary + locks + transactions + adaptive_hash + compression + InnoDB_extra G = InnoDB + key_buffer_size + aria_pagecache_buffer_size (MariaDB) + query_cache_size (MariaDB / MySQL 5.7) + other_global B = thread_stack + 2 × net_buffer_length + max_digest_length + session_extra Q = sort_buffer_size × sorts + join_buffer_size × joins + read_buffer_size × scans + read_rnd_buffer_size × random_reads + query_extra Total = G + C × B + A × Q + Temp Stress: C = A = max_connections

تقدير ذاكرة InnoDB بدقة

ذاكرة InnoDB أكبر من innodb_buffer_pool_size. تحسب الأداة المجمع وحصة قابلة للتعديل لهياكله وinnodb_log_buffer_size المشترك والتخصيصات الإضافية التي تدخلها. توثق MySQL ذاكرة إضافية تقارب 10% لهياكل المجمع؛ وتعتمد الحصة الفعلية على الإصدار والحمل، خصوصاً مع MariaDB. استخدم القيمة الفعلية للخادم الجاري فقد تختلف عن الإعداد المطلوب بعد تقريب حجم المجمع.

قد يضيف القاموس والفهرس التجزئي التكيفي والأقفال وهياكل المعاملات والضغط ذاكرة. أضف فقط التخصيصات غير المدرجة في المجمع أو حصته. سعة redo وملفات redo ومساحات undo تخزين قرصي وليست تخصيصات RAM مكافئة. لا يشمل مجموع InnoDB المحركات الأخرى أو Performance Schema أو مخازن الاتصالات والاستعلامات أو نظام التشغيل.

اجمع الإعدادات الفعلية

تقرأ العبارات التالية البيانات فقط. يتجاهل SHOW ... WHERE المتغيرات غير المدعومة. يشمل Threads_running استعلام القياس وهو لقطة مؤقتة؛ استخدم تزامناً ممثلاً وذروات مسجلة. يشير Max_used_connections إلى ذروة الاتصالات لا الاستعلامات النشطة. تحقق أيضاً من إعدادات جلسات التطبيق؛ فالجلسة الحالية لا تمثل جميع الجلسات.

SELECT VERSION();
SHOW GLOBAL VARIABLES WHERE Variable_name IN (
  'innodb_buffer_pool_size', 'innodb_log_buffer_size', 'innodb_page_size',
  'key_buffer_size', 'aria_pagecache_buffer_size', 'query_cache_size',
  'max_connections', 'thread_handling', 'thread_stack', 'net_buffer_length',
  'max_digest_length', 'max_allowed_packet', 'sort_buffer_size',
  'join_buffer_size', 'read_buffer_size', 'read_rnd_buffer_size',
  'tmp_table_size', 'max_heap_table_size', 'internal_tmp_mem_storage_engine',
  'temptable_max_ram', 'temptable_max_mmap', 'temptable_use_mmap'
);
SHOW GLOBAL STATUS WHERE Variable_name IN (
  'Threads_connected', 'Threads_running', 'Max_used_connections',
  'Created_tmp_tables', 'Created_tmp_disk_tables',
  'Innodb_buffer_pool_pages_total', 'Innodb_buffer_pool_pages_data',
  'Innodb_buffer_pool_pages_free'
);
SHOW SESSION VARIABLES WHERE Variable_name IN (
  'sort_buffer_size', 'join_buffer_size', 'read_buffer_size',
  'read_rnd_buffer_size', 'tmp_table_size', 'max_heap_table_size',
  'internal_tmp_mem_storage_engine', 'max_allowed_packet'
);
SHOW ENGINE INNODB STATUS;

قس ذاكرة InnoDB والعملية

إذا وفر الإصدار جدول ذاكرة Performance Schema وكانت أدوات رصد InnoDB مفعلة، افحص التخصيصات الحالية. تختلف التغطية حسب الإصدار ولا يعيد تفعيل العدادات لاحقاً بناء جميع التخصيصات السابقة. غياب الصفوف أو وجود أصفار لا يثبت انعدام استخدام الذاكرة. لا تجمع ذروات الأدوات الفردية لاستنتاج ذروة متزامنة. أدخل المجموع الحالي في حقل قياس InnoDB الاختياري؛ يبقى منفصلاً عن النموذج.

SELECT EVENT_NAME,
       ROUND(CURRENT_NUMBER_OF_BYTES_USED / 1048576, 2) AS current_mib,
       ROUND(HIGH_NUMBER_OF_BYTES_USED / 1048576, 2) AS high_mib
FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/innodb/%'
ORDER BY CURRENT_NUMBER_OF_BYTES_USED DESC;

SELECT ROUND(SUM(CURRENT_NUMBER_OF_BYTES_USED) / 1048576, 2)
       AS instrumented_innodb_mib
FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/innodb/%';

في Linux تكون RSS أدناه بوحدة KiB؛ استخدم اللاحقة K أو اقسم على 1024 للحصول على MiB. تغطي RSS العملية كاملة. ضع في الحسبان حدود cgroup وذاكرة النظام المؤقتة والذاكرة المحتفظ بها لدى المخصص والخدمات الأخرى.

ps -C mariadbd,mysqld -o pid=,rss=,comm=

قواعد الجداول المؤقتة والحدود العملية

في MariaDB وMySQL عند استخدام MEMORY يحد الأصغر من tmp_table_size وmax_heap_table_size كل جدول مؤقت داخلي. قد تتعايش جداول ومخازن ربط متعددة داخل استعلام واحد. يطبق النموذج الأعداد المختارة على الاستعلامات النشطة ولا يخصص جميع المخازن لكل اتصال خامل.

في MySQL TempTable يُشارك حد temptable_max_ram بين الجلسات. ابتداءً من 8.0.28 يحد tmp_table_size أيضاً كل جدول منفرد؛ يستخدم النوع الأقدم الحد المشترك فقط. تقع الكتل المحلية خارج حد RAM وقد تبقى حتى انتهاء الخيط. يحجز النموذج كتلة لكل اتصال وقد تتجاوز الكتلة مثال 1 MiB. قد تضيف ملفات mmap صفحات مقيمة؛ حد حجم الملف ليس تخصيص RAM مكافئاً.

يجعل سيناريو الضغط جميع اتصالات max_connections نشطة بالشكل نفسه للاستعلام. ليس حداً أقصى مضموناً. أضف حصصاً لجداول المستخدم MEMORY ونمو مخازن الشبكة وSQL/BLOB وbinlog والنسخ المتماثل والعبارات المحضرة وذاكرة الخيوط والتخصيصات الأخرى. تحقق من النموذج مقارنة بذروات العملية تحت حمل ممثل. لا يفرض التقدير أو هدف الضبط سقفاً للذاكرة.

المصادر والتحقق

تم التحقق في 13 أكتوبر 2026. تستند الشروحات الأصلية إلى Releem وأدلة الخوادم. يذكر مثال Releem مئتي اتصال وحدود 32 MiB ثم يضرب في 16 MB. النتيجة المتسقة لجدول واحد لكل اتصال هي 6400 MiB = 6.25 GiB. قواعد المحرك المحدد لها الأولوية على المعادلة العامة.

  • Releem — memory calculator
  • Releem — MySQL memory usage
  • Releem — tmp_table_size
  • MariaDB — memory allocation
  • MySQL — memory use
  • MySQL — temporary tables
  • MySQL — InnoDB parameters
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
إشعارات قانونية GitHub اتصال
لا تنتظر وقوع الحادث حتى تفهم هندستك المعمارية. © 2014-2026 PmaControl — 68Koncept