ما ينبغي النظر باستخدام يختار الفرعية في الاستعلامات مع قواعد البيانات المحملة الثقيلة؟

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

سؤال

ونحن نعمل على تطوير تطبيق مع طبقة استمرار استخدام OpenJPA1.1 وDB أوراكل للتخزين النهاية الخلفية. وسوف تستخدم الاستعلامات مع subselects (انظر سؤالي في حل نقابة الصحفيين الاستعلام العثور على الإدخال الأخير في قائمة اتصال ).

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

وهكذا، سؤالي هو: هل هناك على "أفضل الممارسات" هل تستخدم subselects في الاستعلامات تحت هذه الظروف؟ وماذا يجب أن تنظر فيها القيام بذلك؟

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

المحلول

وأود في البداية أن تثبت أنها مشكلة. فأنت تريد لتحميل احتياطية من قاعدة البيانات مع بيانات وهمية ونرى كيفية أداء استفساراتكم مع نمو قاعدة بيانات أكبر. وإلا كنت تنفق الوقت الأمثل شيء قد لا يكون مشكلة.

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

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

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

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