منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[SQL] مشكلة البيانات الكبيره على mysql - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [SQL] مشكلة البيانات الكبيره على mysql (/showthread.php?tid=49196)



مشكلة البيانات الكبيره على mysql - ali1999 - 18-06-24

السلام عليكم ورحمة الله وبركاته 
اخواني لدى نظام محاسبي
البيانات كثيره جدا لعشر سنوات ماليه سجلات كثيره
على قاعدة بيانات mysql الاستعراض والطلب أصبح جدا بطي والنطام مبنى على vbnet سطح المكتب
ارتكبت خطا برمجي خلال السنوات السابقه وهي تخزين الصوره ضمن قاعدة البيانات في سجل الفواتير وكل ما توصل البيانات حجم معين يصير بطيي في الحفظ والاستعلام لازم احذف وارشف السجلات

هل من حل للبيانات الكبيره وهل التحويل لاوراكل يعتبر حل او نفس المشكله ?


RE: مشكلة البيانات الكبيره على mysql - Alexander Max2 - 18-06-24

وعليكم السلام ورحمة الله وبركاته

عندك حلول تخفف من المشكلة يجب تطبيقها : لازم تجد حل لمشكلة تخزين الصور :
- بنقل الصور لقاعدة بيانات آخرى رديفة لقاعدة بياناتك.
- بإعادة تحجيم الصور، وما تسمح بتخزين صور أكبر من حجم معين (الطول والبعد) أو يقوم برنامجك بإعادة تحجيم الصور.
-
- نقل الصور لمجلدات على جهازك (على القرص D  أو  مجلد مشترك أو.. ) وفي قاعدة البيانات تخزن فقط مسار الصورة لا أكثر..


RE: مشكلة البيانات الكبيره على mysql - Kamil - 18-06-24

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

الحلول المقترحة لتحسين أداء قاعدة البيانات:
نقل الصور خارج قاعدة البيانات:

تخزين الصور على نظام الملفات: قم بتخزين الصور في مجلدات على نظام الملفات وحفظ مسارات هذه الصور في قاعدة البيانات بدلاً من تخزين الصور نفسها. هذا يقلل من حجم قاعدة البيانات بشكل كبير ويُحسّن من أداء الاستعلامات.


PHP كود :
Dim imagePath As String "path/to/image.jpg"
Dim insertQuery As String "INSERT INTO Invoices (InvoiceId, ImagePath) VALUES (@InvoiceId, @ImagePath)"
Using cmd As New MySqlCommand(insertQueryconnection)
 
   cmd.Parameters.AddWithValue("@InvoiceId"invoiceId)
 
   cmd.Parameters.AddWithValue("@ImagePath"imagePath)
 
   cmd.ExecuteNonQuery()
End Using 

الأرشفة:

أرشفة البيانات القديمة: أنشئ جداول أرشيفية للبيانات القديمة وقم بنقل البيانات غير المستخدمة بشكل متكرر إليها. يمكنك استخدام مهام مجدولة (Scheduled Tasks) لنقل البيانات دورياً.


PHP كود :
INSERT INTO ArchivedInvoices SELECT FROM Invoices WHERE InvoiceDate DATE_SUB(NOW(), INTERVAL 1 YEAR);
DELETE FROM Invoices WHERE InvoiceDate DATE_SUB(NOW(), INTERVAL 1 YEAR); 

الفهرسة:

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


تحسين الاستعلامات:

مراجعة وتحسين الاستعلامات: تأكد من أن الاستعلامات مكتوبة بشكل فعّال. تجنب استخدام الاستعلامات المعقدة غير الضرورية.


تحسين إعدادات قاعدة البيانات:

ضبط إعدادات MySQL: ضبط إعدادات MySQL لتحسين الأداء، مثل زيادة حجم الذاكرة المؤقتة (buffer size) وتقليل استخدام القرص.


الخلاصة:
لتجنب بطء النظام، من الأفضل أن تبدأ بتحسين هيكلية التخزين والاستعلامات في MySQL:

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