صف الخلية الشكل:الفرق بين الثابتة و الديناميكية ؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

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

سؤالي هو ما هو الفرق بين اثنين من صف صيغ?هو أحد أكثر كفاءة من غيرها ؟

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

المحلول

الفرق فقط المسائل MyISAM ، وغيرها من محركات التخزين لا يهتمون الفرق.تحرير : العديد من المستخدمين وعلق ك InnoDB يهتم: الرابط 1 قبل steampowered, رابط 2 طريق كان ، .

مع MyISAM مع عرض ثابت الصفوف ، هناك عدد قليل من المزايا:

  1. أي صف تجزئة:فمن الممكن مع عرض متغير الصفوف للحصول على واحدة الصفوف تنقسم إلى أقسام متعددة عبر ملف البيانات.هذا يمكن أن تزيد من القرص يسعى تبطئ العمليات.فمن الممكن أن ديفراغ مع تحسين الجدول ، ولكن هذا ليس دائما عملية.

  2. ملف بيانات مؤشر الحجم:في MyISAM ، هناك مفهوم من ملف بيانات المؤشر الذي يستخدم عندما يحتاج إلى الرجوع إلى ملف بيانات.على سبيل المثال, يستخدم هذا في فهارس عندما يشيرون إلى حيث التوالي في الواقع الحاضر.مع عرض ثابت الأحجام ، هذا المؤشر استنادا إلى صف تعويض في الملف (ie.الصفوف هي 1 ، 2 ، 3 بغض النظر عن حجمها).مع عرض متغير ، المؤشر على أساس إزاحة البايت (ie.الصفوف قد يكون 1, 57, 163).والنتيجة هي أنه مع جداول كبيرة المؤشر يجب أن يكون أكبر ثم يضيف يحتمل الكثير من النفقات العامة إلى طاولة المفاوضات.

  3. أسهل لإصلاح في حالة من الفساد.لأن كل صف هو نفس الحجم ، إذا MyISAM الجدول يحصل تلف فمن الأسهل بكثير أن إصلاح ، لذلك سوف تفقد البيانات التي هي في الواقع تلف.مع عرض متغير ، من الناحية النظرية من الممكن أن عرض متغير مؤشرات تحصل على افسدت ، والذي يمكن أن يؤدي الخراطيم البيانات بطريقة سيئة.

الآن الأولية العيب من عرض ثابت أنه النفايات المزيد من المساحة.على سبيل المثال ، تحتاج إلى استخدام شار الحقول بدلا من VARCHAR المجالات ، إذا كنت في نهاية المطاف مع مساحة إضافية تناولها.

عادة, سوف لا يكون لديك الكثير من الخيارات في شكل لأنه أملى على أساس المخطط.ومع ذلك ، قد يكون من المفيد إذا كان لديك فقط بضع varchar أو كائن واحد/النص في محاولة لتحسين نحو هذا.على سبيل المثال النظر في تحويل فقط varchar في شار ، أو تقسيم النقطة في الجدول الخاص.

يمكنك قراءة المزيد عن هذا في:

http://dev.mysql.com/doc/refman/5.0/en/static-format.html

http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html

نصائح أخرى

فارق رئيسي واحد تحدث عند تحديث سجل.إذا كان تنسيق الصف هو ثابت ، لا يوجد تغيير في طول السجل.وعلى النقيض من ذلك ، إذا كان صف شكل ديناميكي البيانات الجديدة الأسباب سجل زيادة في الطول, رابط يستخدم للإشارة إلى "تجاوز" البيانات (أيهذا يسمى تجاوز المؤشر).

هذا شظايا الجدول عموما يبطئ الأمور.هناك أمر إلغاء تجزئة (تحسين الجدول) ، وهو ما يخفف من المشكلة.

هذه الصفحة في الخلية وثائق يبدو أن تتعارض مع أعلى الإجابة هنا في هذه الدينامية تنسيق صف يعني شيئا بالنسبة الجداول ك InnoDB أيضا:

http://dev.mysql.com/doc/innodb/1.1/en/innodb-row-format-dynamic.html

ثابت يعني أن كل صف هو بالضبط نفس الحجم.هذا يعني أنه إذا كان الصف 3 في صفحة البيانات تحتاج إلى تحميل ، سيكون في تمام PageHeader+2*RowSize ، توفير بعض وقت الوصول.

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

باختصار نعم, هناك طفيف الأداء ضرب الدينامية الصفوف.لا, انها ليست واحدة كبيرة جدا.إذا كنت تعتقد أنه سوف يكون مشكلة ، اختبار ذلك.

الثابتة ينبغي أن يكون أسرع و أكثر أمانا من ديناميكية مع العيب من وجود ثابت شار طول.يمكنك العثور على هذه المعلومات هنا: http://dev.mysql.com/doc/refman/5.0/en/static-format.html

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