الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع قاعدة بيانات تحتوى على أكثر من مليون سجل

بدأه bg3damx في 14 أبريل 2013 · 10 رد · 1,290 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكنى استخدام جملة Select مع استعلام فى قاعدة بيانات تحتوى على اكثر من مليون سجل وكيف تكون هذه العملية سريعة

#3

السلام عليكم

نرجو التوضيح ما الذي تريد عمله بالضبط حيث ان المليون سجل عدد كبير ومن غير المعقول ان تتعامل معهم في نفس الوقت لذا عليك ان تحاول ان تضع شروط لتقليل العدد الذي ستتعامل معه .

#4

تم تحديد تاريخ يوم واحد فقط وايضا حجم البيانات فى هذا اليوم كثيرة حيث ان البيانات تزيد كل 5 ثوانى يضاف سجل جديد وتاخذ وقت فى التنفيذ

#6
اقتباس

تم تحديد تاريخ يوم واحد فقط وايضا حجم البيانات فى هذا اليوم كثيرة حيث ان البيانات تزيد كل 5 ثوانى يضاف سجل جديد وتاخذ وقت فى التنفيذ

 

سجل كل 5 ثواني يعني 12 سجل في الدقيقة يعني 720 سجل في الساعة الواحده

يعني اذا كان عدد ساعات العمل 8 ساعات * 720 سجل للساعة = 5760 سجل ليوم العمل الواحد

هل هذه الحسبة سليمة ؟؟

 

هل هذا التطبيق عبارة عن log يحتفظ بما يفعلة المستخدمين علي البرنامج

ارجو شرح الموضوع بكافة تفاصيلة حتي نستطيع وضع الحلول المناسبة لك فيما يخص هذه الجزئية

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

عدد ساعات العمل 24 ساعة

هو عبارة عن جدول log فى قاعدة بيانات

#8

أخي الفاضل 

bg3damx

تعتبر جداول الــ Log في البرامج الكبيرة من الجداول الاكثر عدد بيانات وفعلا يصل عدد السجلات بداخلها للملايين وعلي المستوي الشخصي أنا أتعامل مع هذه الجداول باستمرار لذلك

أود أن أنقل لك بعض النصائح المهمة فيما يخص هذه الجزئية

 

1- عندما تبني جدول الــ Log يجب ان يكون التركيز فقط علي الجداول الاكثر أهمية والتي المستخدمين دائمي الاستفسار عن من وأين ومتي تم حذف هذا السجل ولا تقم بتحديد جميع الجداول لتخفيف الحمل علي قاعده البيانات الا اذا كان المطلوب جميع الجداول وفي هذه الحالة سيصبح عدد البيانات كثير جدا ولتجد طريقة للتعامل مع جداول اللوج

 

2- يجب تفريغ جداول اللوج كل فترة زمنية معينة فمثلا ربما تحتاج لازالة البيانات التي مضي عليها أكثر من 5 شهور مثلا وذلك لتخفيف الحمل علي الجدول وعلي قاعده البيانات

 

3- وبذلك تكون محكوم بعدد سجلات معينة تبحث بداخلها بتواريخ معينة ويجب ان يعلم المسؤلين  طرفك انك لن تستطيع الاستعلام عن بيانات أقدم من 5 أشهر لاسباب فنية

 

4- اذا كان جدول اللوج مساحتة كبيرة جدا وتؤثر علي آداء البرنامج فيجب وضع جدول اللوج داخل FileGroup منفصل بعيدا عن ملفات قاعده البيانات حتي لا يؤثر علي آداء البرنامج

 

5- يجب تقسيم الجدول عن طريق Horizontal partioning حتي تستطيع البحث داخل الجدول بشكل سريع عن الطرق المعتاده

 

6- يجب ان يكون شروط البحث ليست بمدد كبيرة حتي لا يأخذ الاستعلام مده طويلة ولا يتعرض timeout أثناء التنفيذ

 

7- تفريغ اللوج كل فترة يحسن من آداء البرنامج أيضا التركيز علي الجداول الاكثر أهمية لوضعها في اللوج من الاشياء المهمة

 

بالتوفيق

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#9

بالإمكان عمل عدة جداول لـ Log  بحيث يكون الأول لحفظ التغييرات خلال فترة قريبة مثلا أسبوع أو 15 يوم أو شهر

وجدول ثاني لمدة 6 شهور مثلا

وثالث لسنة وما فوق

الآن يتم التعامل مع الجدول الأول و في نهاية كل يوم مثلا في أوقات يتوقع فيها الضغط الخفيف يتم نقل كل السجلات التي تجاوزت المدة إلى الجدول الذي يليه

وبنفس الأمر نفحص الجدول الثاني ونقوم بنقل كل البيانات التي تجاوزت مدة الأرشيف الثاني إلى الجدولالثالث

 

الآن التعامل يكون مع الاول والتي سجلاته ستكون قليلة على اعتبار أنها لن تحوي سوى سجلات فترة قصيرة

 

وأما الثاني والثالث فهما بمثابة أرشيف قصير الأمد وطويل الأمد

ولا يتم التعامل معهم إلا عند الحاجة وبالتالي سيكون المستخدم مهيأ للانتظار للحصول على النتيجة

 

في هذه الحالة عند الاستفسارات يجب أن يكون هناك خيارات يدوية من قبل المستخدم أو تلقائية تعتمد على الشروط والنتائج

كأن تخير المستخدم هل تريد البحث ضمن آخر أسبوع أم 6 أشهر أم أكثر من سنة

من جهة أخرى بالإمكان فقط عند عدم حصول على نتائج في الجدول الأول الانتقال للبحث في الجدول الثاني أو الثالث

 

إذا خلاصة القول أننا نجعل التعامل دائما مع عدد محدود قد لا يتجاوز عشرات الآلاف

وفقط عند الحاجة يتم التعامل مع مئات الآلاف وفي حالات نادرة جدا جدا يتم التعامل مع ملايين

 

ناحية أخرى بإمكانك عمل أكثر من جدول لوج وتقسمهم بحسب نوع التغيير

مثلا جدول خاص فقط بإنشاء السجلات الجديدة

وجدول آخر فقط لحفظ السجلات التي حذفت

وآخر فقط لتسجيل الدخول والخروج

وآخر فقط للأخطاء

 

من هنا تجعل البحث محصور في الجدول المناسب للاستفسار

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

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 16 أبريل 2013 في 15:46

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#10

لو امكن يكون قاعدة بيانات مستقله ويفضل خامد مستقل وعلي SAN DISK هذا سيزيد من السرعة كثير مع تقسيم الوج وpartioning وINDEXوشكل جملة الاستعلام واستخدما استود بروسجير بالاضافة الي ما قيل بالاعلي من الاخوه

#11

شكرا جزيلا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…