هل تؤثر الجداول المقفلة MySQL على وجهات النظر ذات الصلة؟

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

  •  26-09-2019
  •  | 
  •  

سؤال

لذلك بعد القراءة الأداء في PDO / PHP / MYSQL: المعاملة مقابل التنفيذ المباشر فيما يتعلق بمشكلات الأداء التي كنت أفكر فيها ، قمت ببعض الأبحاث على طاولات قفل في MySQL.

تشغيل http://dev.mysql.com/doc/refman/5.0/en/table-locking.html

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

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

وهذا هو ، هل سيتعين على تحديد الاستعلامات على FOO_VIEW الانتظار حتى ينتهي التحديث على FOO؟

سؤال موجز آخر طرح زميلي. هل هذا يؤثر على التخزين المؤقت؟ أي إذا تم التخزين المؤقت لـ Select ، فهل سيصل إلى ذاكرة التخزين المؤقت ويعود إلى نتائج الإرجاع ، أم أنه سينتظر حتى ينتهي القفل أولاً؟

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

المحلول

سوف تواجه عرضك نفس القفل مثل الجداول الأساسية.

من صفحة مرجع MySQL على قفل:

MySQL Grants جدول كتابة الأقفال على النحو التالي:

  1. إذا لم تكن هناك أقفال على الطاولة ، فضع قفل الكتابة عليه.
  2. خلاف ذلك ، ضع طلب القفل في قائمة انتظار القفل للكتابة.

جدول منح MySQL أقفال على النحو التالي:

  1. إذا لم يكن هناك أقفال كتابة على الطاولة ، فضع قفل قراءة عليه.
  2. خلاف ذلك ، ضع طلب القفل في قائمة انتظار القراءة.

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

إذا كنت لا تصل إلى معايير الأداء اللازمة مع Myisam وأظهرت أن عنق الزجاجة الخاص بك ينتظر على أقفال الجدول عبر التحديثات ، أقترح تغيير محرك التخزين في طاولتك إلى Innodb.

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