استراتيجية الوصول إلى البيانات لموقع مثل SO - استعلامات SQL المصنفة والتحديثات المتزامنة التي تؤثر على النوع؟

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

سؤال

أنا أعمل على تطبيق ويب Grails الذي سيكون متشابهًا في أنماط الوصول إلى StackOverflow أو MyLifeIsaverage - يمكن للمستخدمين التصويت على الإدخالات ، ويستخدم أصواتهم لفرز قائمة من الإدخالات بناءً على عدد الأصوات. يمكن وضع الأصوات أثناء إجراء الاستعلامات المحددة المرتبة.

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

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

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

المحلول

لا تستنتج الكثير عن قاعدة البيانات الخاصة بك - قاعدة البيانات هي حيوانات معقدة للغاية ولن تعمل دائمًا بالطريقة التي تفكر بها. ستؤدي قاعدة بيانات MVCC ، وهي أي قاعدة بيانات حديثة (أي ليس طاولات Myisam) ، فحص الجدول دون قفل بشدة. المفهوم الكامل لـ MVCC هو أن عمليات الكتابة لا تحظر القراءات والعكس بالعكس. ولكن لن يتم إجراء فحص الجدول هنا. للإجابة بكفاءة على الاستعلام ، ربما يكون هناك فهرس على الأصوات. سيتم استخدام هذا الفهرس إلى 1) الحد من عدد الصفوف التي تم استردادها من الجدول 2) استرجاعها بترتيب فرز (أي دون إجراء نوع.)

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