نمایش نتایج 1 تا 14 از 14

نام تاپیک: مشکل در زمان زیاد باز شدن برنامه با حجم دیتابیس زیاد

  1. #1
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018

    Tick مشکل در زمان زیاد باز شدن برنامه با حجم دیتابیس زیاد

    سلام
    من برنامه ای نوشته ام که تعداد جداول اون زیاده و نیز تعداد رکوردهای اون هم بالاست
    دیتابیس SQL Server است.
    وقتی برنامه می خواد باز بشه روی سرور حدود 10 ثانیه طول میکشه
    ولی روی سیستمهای دیگه که برنامه را باز می کنم حدود 8 دقیقه طول میکشه تا باز بشه
    و نیز زمانی که جدول ها می خواند Active=True بشند خیلی طول میکشه
    و حالا واقعا مشکل بدی شده برای این برنامه
    شما چه راهی پیشنهاد می کنید برای مشکل من؟
    و اصولا برنامه های حسابداری که توی بازار هست با این همه رکوردی که داره به راحتی و سرعت زیاد باز میشند دلیلش چیه؟

    ممنون

  2. #2
    اصولا برنامه های حسابداری که توی بازار هست با این همه رکوردی که داره به راحتی و سرعت زیاد باز میشند دلیلش چیه؟
    دلیلش اینه که همه جدول ها و همه رکوردهای موجود در آنها را یکدفعه با هم نیاز ندارند که بخوان همه بانک اطلاعاتی را یکجا از سرور بگیرند و در حافظه کلاینت انبار کنند!
    قبلا درباره این موضوع توضیح داده شده، مطالب زیر گروه بانک های اطلاعاتی دلفی را مرور کنید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  3. #3
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    نقل قول نوشته شده توسط علی کشاورز مشاهده تاپیک
    دلیلش اینه که همه جدول ها و همه رکوردهای موجود در آنها را یکدفعه با هم نیاز ندارند که بخوان همه بانک اطلاعاتی را یکجا از سرور بگیرند و در حافظه کلاینت انبار کنند!
    قبلا درباره این موضوع توضیح داده شده، مطالب زیر گروه بانک های اطلاعاتی دلفی را مرور کنید.
    ضمن تشکر
    من زیاد سرچ کردم ولی موردی پیدا نکردم
    اگه شما لطف کنید لینک یه نمونه اینطوری برای من بگذارید ممنون میشم

  4. #4

  5. #5
    با اجازت با اینکه ادامه سوال رو حصوصی پرسیده بودی عمومی جواب میدم که اگر بعدا کس دیگه ای هم به مشکل خورد بتونه جستجو کنه :

    راستش مطلب کلی زیاد هست و توی اینترنت هم سورس زیاد هست کتاب هم توی بازار زیاد هست ، منتها بطور خاص بنظر میاد مشکل تو اینه که همون اول همه اطلاعات رو از سرور میگیری و چون زیاد هستند به این مشکل میخوری ، خب سعی کن زمانی که به اطلاعات احتیاج داری Query بزنی و Queryهات رو هم تا حد ممکن آپتیمایز شده بزنی ، حتی میتونی کوئریهات رو ببری توی Query Analyzer تا متوجه بشی مشکلت کجاست ، شاید بعضی جاها نیاز به ایندکس داری ....
    یک نکنه دیگه هم بگم ، اصلا TTABLE و TADOTable برای کارهای حرفه ای نیستند و فقط به درد کارهای کوچیک و امتحانی میخورند ، چون کل اطلاعهات رو میارند در حالیکه خیلی خیلی به ندرت پیش میاد که همه اطلاعات لازم باشه و فقط باید رکوردهایی که در لحظه کاربر بهشون احتیاج داره رو بیاری.

  6. #6
    نقل قول نوشته شده توسط ghabil مشاهده تاپیک
    اصلا TTABLE و TADOTable برای کارهای حرفه ای نیستند
    پس از چی استفاده کنیم . لطفاً راهنمائی کنید .

  7. #7
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    باید با استفاده از AdoQuery اطلاعات مورد نظر را فراخوانی کنید

  8. #8
    ADODataSet از AdoQuery هم بهتره قبلا توضیح داده شده اگر جستجو کنید.

  9. #9
    من تو برنامه هام یه DataMoudle قرار می دم و توی اون AdoConnection و AdoTable‌هام رو می گذارم . البته جدولها همیشه بسته هستند .(مگر اوقاتی که بخواهم مستقیم با جدول کار کنم) بعد جاهایی توی فرمها که می خوام لیست گیری کنم از AdoQuery‌استفاده می کنم .

    این ساختار به نظر شما درسته ؟
    و برای برنامه های تحت شبکه مشکلی پیش نمی یاره ؟
    ممنون

  10. #10
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    نقل قول نوشته شده توسط Saeid59_m مشاهده تاپیک
    من تو برنامه هام یه DataMoudle قرار می دم و توی اون AdoConnection و AdoTable‌هام رو می گذارم . البته جدولها همیشه بسته هستند .(مگر اوقاتی که بخواهم مستقیم با جدول کار کنم) بعد جاهایی توی فرمها که می خوام لیست گیری کنم از AdoQuery‌استفاده می کنم .

    این ساختار به نظر شما درسته ؟
    و برای برنامه های تحت شبکه مشکلی پیش نمی یاره ؟
    ممنون
    خوب معمولا همه همین کار را می کنن. ولی اگه یکی از جدولها حجمش زیاد باشه اونوقته که برای باز شدن اون برنامه قفل میکنه.

  11. #11
    خوب معمولا همه همین کار را می کنن. ولی اگه یکی از جدولها حجمش زیاد باشه اونوقته که برای باز شدن اون برنامه قفل میکنه.
    شما باید به یک شکلی حجم داده های ارسالی به کلاینت را کنترل کنید.
    ممکنه داده های این جدول با یک جدول دیگر در ارتباط باشند و شما بخواید به ازای هر یک از رکوردهای جدول دوم، فقط رکوردهای مربوط به آن را در جدول اول نمایش دهید، برای این کار از رابطه Master\Details استفاده میکنید.
    ممکنه فقط به بخشی از داده های جدول نیاز داشته باشید، برای این کار از یک Query که فقط رکوردهای مورد نیاز شما را برمی گرداند، استفاده می کنید.
    یا اگر لازم است که کل داده های یک جدول به کاربر نمایش داده شود، رکوردها را با استفاده از یک کوئری بصورت صفحه به صفحه به کاربر نمایش می دهید (مثل همون کاری که این سایت میکنه).
    در نهایت اگر حجم داده های جدول محدود باشه، مثلا جداولی که برای Lookup استفاده میشند، جدول را بصورت عادی و بدون محدودیت لود می کنید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  12. #12
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    در نهایت اگر حجم داده های جدول محدود باشه، مثلا جداولی که برای Lookup استفاده میشند، جدول را بصورت عادی و بدون محدودیت لود می کنید.
    مطالبتون کاملا صحیح ولی برای همین مشکل واقعا راه حلی نیست؟
    جدولی که قراره برای Lookup استفاده بشه حتما باید Active باشه که همین امر هم یک دردسر دیگه است.
    از طرفی برای هر بار Locate کردن از جدول نیز جدول باید Active باشه و اینکه بعد از هر بار تغییر اطلاعات جدول این جدول برای Locate کردن باید Refresh بشه که این هم خودش کلی وقت میگیره.

  13. #13
    نقل قول نوشته شده توسط علی کشاورز مشاهده تاپیک
    یا اگر لازم است که کل داده های یک جدول به کاربر نمایش داده شود، رکوردها را با استفاده از یک کوئری بصورت صفحه به صفحه به کاربر نمایش می دهید (مثل همون کاری که این سایت میکنه).
    چطور می شه پاسخ یک کوری رو صفحه به صفحه دید

  14. #14
    از طرفی برای هر بار Locate کردن از جدول نیز جدول باید Active باشه و اینکه بعد از هر بار تغییر اطلاعات جدول این جدول برای Locate کردن باید Refresh بشه که این هم خودش کلی وقت میگیره.
    وقتی حجم داده ها زیاد هست و شما هم همه داده ها را به کاربر نمایش نمی دهید، دیگه نمیشه از Locate استفاده کرد، باید برای جستجو کوئری بنویسید.

    چطور می شه پاسخ یک کوری رو صفحه به صفحه دید
    درباره اش قبلا بحث شده:
    Fetch کردن تدریجی اطلاعات


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •