اذهب الي المحتوي
أوفيسنا

|3| قاعدة البيانات بطيئة


gs7581

الردود الموصى بها

السلام عليكم

عندي قاعدة بيانات و تعمل في صيدلية و وصل عدد السجلات في فاتورة البيع فقط الي

اكثر من 26000 سجل و عند استدعاء كشوفات الحساب الخاصة بالعملاء او الاصناف

يتم في بطء شديد

حتي لو عملت ضغط و اصلاح لقاعدة البيانات و لا اعرف ما السبب او ما يجب عملة

الجزء الثاني من سؤالي هو ظهور رسالة خطأ عند العمل بالبرنامج و تظهر في جميع سجلات النموزج الموجود بدون سبب و احيانا تظهر رسالة تقول ان محرك jet engine

قام بوقف العملية نظرا لوجود اخطاء وغير قادر علي اتمامها

ارجو الرد علي الاستفسارات و شكرا

رابط هذا التعليق
شارك

السلام عليكم

اخي gs7581 :fff: (من طرق التسريع)

بالاضافة لاقتراح اخي ابو فيصل :fff: يمكن عمل ما يلي:

اذا احببت تسريع القاعدة يوجد عدة طرق واحداها استخدام جملة BeginTrans والتي تنتهي بجملة CommitTrans لتأكيد الحركات أو Rollback للتراجع.

هذا الموضوع يشرح مثالا تم تسريعه 17 ضعفا

هنا يوجد شرح لتسريع التقارير والاستعلامات

وهذا المقال يشير الى ان اعادة التجزئة للهارد ديسك بشكل دوري يسرع القاعدة ايضا

مع الاحترام

رابط هذا التعليق
شارك

ردا علي اقتراح الاخ فتي الوادي فأنا اشكرة بشدة علي استعدادة لاصلاح قاعدة البيانات

و لكن اخبرة انني من مصر و ليس من المملكة العربية السعودية

و طلب اخير

اين تكتب جمل begin trans و غيرها

وكيف يتم التحويل الي SQL

و شكرا

رابط هذا التعليق
شارك

عدد 26000 سجل يمكن أن يتحمله الأكسس وعشر اضعافه اذا اردت

اعتقد أن امكانات الجهاز نفسه لها عامل كبير .. تأكد من رامات الجهاز وسرعة البروسيسور واهم شيء يؤثر على ذلك هو كاشات البروسيسور

رابط هذا التعليق
شارك

السلام عليكم

أخي gs7581 :fff: ، حياك الله

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

ex8.JPG

والخطوة الثانية بعدما يفتح البرنامج هي

ex9.JPG

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

أتمنى أن تحل المشكلة ، والا سنتابعها بطريقة اخرى ان شاء الله.

اجمالا، الجهاز الذي لديك حسب المواصفات المذكورة يعتبر سريع نسبيا ويفضل أيضا وجود ذاكرة RAM فيه لا تقل عن 512KB .

مع الاحترام

رابط هذا التعليق
شارك

طبعاً بروسيسور 1.7 كاش 128 لا يساعد على الإسترجاع بسرعة .. حيث كان لي تجربه مع قاعدة بيانات كبيره على نفس امكانات البروسيسور السابق وكانة بطيئه نوعا ما في استرجاع البيانات ... وعندما قمت بتجربة قاعدة البيانات على بروسيسور بينتيوم 3 كاش 512 كان ادائه احسن بالطبع ايضاً على بروسيسور 2.4 كاش 256 وكاش 512 الأداء كان افضل وكلما زادت الرامات كان افضل وافضل

على وجه العمود امكانات البروسيسور لديك لها عامل كبير على بطء القاعدة

رابط هذا التعليق
شارك

اشكر الأخوة الأفاضل علي الرد و التجاوب مع المشكلة و ايجاد الحلول لها

بالنسبة للاقتراح الخاص ب defragmentation

فسأجربة ان شاء الله وسأكتب الرد

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

واكرر شكري لاعضاء المنتدي المبارك

:rol:

رابط هذا التعليق
شارك

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

اخي العزيز ان برنامج اكسس مصمم لبناء قواعد بيانات شخصيه او صغيرة ولا يستطيع تحمل اكثر من مليون سجل في الجدول الواحد كما تقول مايكروسوفت اضف الى ذلك ان العدد الاقصى من الجداول هو 32 فقط في القاعدة الواحده والحجم الاقصى قاعدة البيانات هو 2 جيجا بايت فقط ،، وهناك الكثير ..

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

تقبل تحياتي اخي العزيز

رابط هذا التعليق
شارك

السلام عليكم

قمت بمطالعة موقع شركة ميكروسوفت الموجود في تعقيب الاخ خضر الرجبي

الخاص بعمل جملة begin trans لتسريع قاعدة البيانات

و عملت البرنامج المطلوب و لكن تظهر لي رسالة خطأ عند تشغيل البرنامج تقول

user defined function not defined

عند السط Dim db As Database

و لا اعرف السبب

ارجو مراجعة الكود و المساعدة

 Private Sub Form_Load ()
         Dim Starttime, Endtime
         Dim db As Database
         Dim t As RecordSet
         Dim i As Integer
         Dim tempName As String
         Dim temphone As String
         Set db = Workspace(0).OpenDatabase("c:\vb\BIBLIO.MDB") ' Uses a
          ' copy of BIBLIO.MDB.
         Set t = db.OpenRecordSet("Publishers", dbOpenTable)
         Starttime = Now
         'BeginTrans  ' Add this and CommitTrans (below) for greater speed.
         For i = 1 To 100
            tempName = "testname" & Str$(i) ' Make an arbitrary unique
                                            '  string.
            tempPhone = Str$(i)             ' Make arbitrary number.
            t.AddNew ' AddNew clears copy buffer to prepare for new record.
            t!PubID = 30 + i  ' Set primary key to unique value.
            t!Name = tempName  ' Set Name field to unique value.
            t!Telephone = tempPhone  ' Set Telephone field to unique value.
            t.Update   ' Write the record to disk or to transaction buffer.
         Next i
         'CommitTrans  ' Add this and BeginTrans (above) for greater speed.
         Endtime = Now
         MsgBox "Time required= " & Format(Endtime - Starttime, "hh:mm:ss")
         t.Close
         db.Close
         End
      End Sub

رابط هذا التعليق
شارك

السلام عليكم

اخي gs7581 :fff: ، بارك الله فيك

خطوتين وتحل المشكلة ان شاء الله وهي :

ex10.JPG

ex11.JPG

وبالمناسبة ، ما هي نتيجة اعادة التجزئة ، ارجو اعلامي ، وبالتوفيق .

مع الاحترام

تم تعديل بواسطه خضر الرجبي
رابط هذا التعليق
شارك

شكرا اخي خضر الرجبي

علي اهتمامك الشديد بمساعدة اعضاء المنتدي

و قدكتب ردا بالامس و لكن لم يتم تحميلة و لا اعرف السبب

و قد عملت اعادة تجزئة وتحسن اداء القاعدة نوعا ما

اما بالنسبة لردك الجميل اليوم

فحاولت عملة و لكن هناك عدد2 refrences

OLE Automotion

Microsoft access 11.0 object library

علما بأني استخدم فيجوال بيزك من نسخة

Visual studio 6

و يتوقف الكود عند السطر

Set db = Workspace(0).OpenDatabase

ارجو الافادة و شكرا

رابط هذا التعليق
شارك

السلام عليكم

اتمني لو اي احد من الاخوة الاعضاء عندة المراجع الناقصة فليلحقها بالموضوع

وشكرا

أخيكم

د/ جابر الشيمي

رابط هذا التعليق
شارك

السلام عليكم

اخي الدكتور جابر الشيمي :fff: ، بارك الله فيك

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

مع الاحترام

تم تعديل بواسطه خضر الرجبي
رابط هذا التعليق
شارك

اخي الفاضل خضر الرجبي

لم اجد المرجع التالي

microsoft access 11.0 object library

ولكن وجدت المرجع التالي

microsoft access 10.0 object library

و لكن لم يعمل البرنامج ايضا

والكود بعد كتابتة هو :

Private Sub Form_Load()

         Dim Starttime, Endtime
         Dim db As Database
         Dim t As Recordset
         Dim i As Integer
         Dim tempName As String
         Dim temphone As String
         Set db = Workspace(0).OpenDatabase("i:\gaber\gs.MDB") ' Uses a
          ' copy of BIBLIO.MDB.
         Set t = db.OpenRecordset("employee", dbOpenTable)
         Starttime = Now
         'BeginTrans  ' Add this and CommitTrans (below) for greater speed.
         For i = 1 To 100
            tempName = "testname" & Str$(i) ' Make an arbitrary unique
                                            '  string.
            tempPhone = Str$(i)             ' Make arbitrary number.
            t.AddNew ' AddNew clears copy buffer to prepare for new record.
            t!PubID = 30 + i  ' Set primary key to unique value.
            t!Name = tempName  ' Set Name field to unique value.
            t!Telephone = tempPhone  ' Set Telephone field to unique value.
            t.Update   ' Write the record to disk or to transaction buffer.
         Next i
         'CommitTrans  ' Add this and BeginTrans (above) for greater speed.
         Endtime = Now
         MsgBox "Time required= " & Format(Endtime - Starttime, "hh:mm:ss")
         t.Close
         db.Close
         End
      End Sub

واتمني لو اتعبتك قليلا وعملت البرنامج عندك علي نفس موقع قاعدة البيانات الموجود بالكود

و ارسلتة لي في صورة EXE

و تقبل تحياتي

رابط هذا التعليق
شارك

السلام عليكم

اخي الدكتور جابر الشيمي :fff: ، بارك الله فيك

لم استطيع القيام بما تطلب مني ، لانك في برنامجك ترجع للقاعدة وهي ليست متوفرة لدي

Set db = Workspace(0).OpenDatabase("i:\gaber\gs.MDB")

بالنسبة للمراجع فجيد أنك وجدتها وحتى المرجع (microsoft access 10.0 object library) يجب أن يعمل، ولكني أود التنويه مرة اخرى الى أن ترتيبها أيضا مهم لكي يعمل البرنامج بالشكل الصحيح راجع الترتيب اعلاه (في التعقيبات السابقة) وتأكد أنه نفس الترتيب الذي عندك وان لم يكن فاستخدم الاسهم بجانب Priorty (الاولوية) للترتيب الصحيح.

اتمنى أن ينجح الامر وان لم ينجح فارجو اعلامي .

مع الاحترام

رابط هذا التعليق
شارك

  • 4 weeks later...
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information