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

نام تاپیک: مدیریت کند بودن پاسخ Query

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    290

    Question مدیریت کند بودن پاسخ Query

    سلام دوستان
    من توی برنامه ام ,وقتی روی یک سلول DBGrid دابل کلیک میشود یه صفحه جدید باز می کنم و یک query مفصل و سنگین را به SQL Server میفرستم و نتیجه را در یک سری DBEdit نمایش میدهم. این ماجرا الآن که دیتابیس خالی است کمی طول میکشد یکسال دیگه که دیتابیس سنگین شود قطعا خیلی زمان بر میشود. غیر از استفاده از Multi-Tread چه روشی را پیشنهاد می کنید که توی این مثلا 2 ثانیه برنامه هنگ نکند و فرم اصلی فریز نشود؟ (روی فرم اصلی با استفاده از TTimer مرتباً مقادیر TEdit ها در حال تغییر است)
    توی مولتی ترد ارتباط فرم با تِرِد خیلی دشوار است

  2. #2
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: مدیریت کند بودن پاسخ Query

    نقل قول نوشته شده توسط masoode مشاهده تاپیک
    سلام دوستان
    من توی برنامه ام ,وقتی روی یک سلول DBGrid دابل کلیک میشود یه صفحه جدید باز می کنم و یک query مفصل و سنگین را به SQL Server میفرستم و نتیجه را در یک سری DBEdit نمایش میدهم. این ماجرا الآن که دیتابیس خالی است کمی طول میکشد یکسال دیگه که دیتابیس سنگین شود قطعا خیلی زمان بر میشود. غیر از استفاده از Multi-Tread چه روشی را پیشنهاد می کنید که توی این مثلا 2 ثانیه برنامه هنگ نکند و فرم اصلی فریز نشود؟ (روی فرم اصلی با استفاده از TTimer مرتباً مقادیر TEdit ها در حال تغییر است)
    توی مولتی ترد ارتباط فرم با تِرِد خیلی دشوار است
    سلام

    برای جلوگیری از فریز شدن، کاربهینه اینه که از ترد استفاده کنید.

    میتونید از ClientDataSet استفاده کنید و اونو به ترد پاس بدید و در نهایت نتیجه رو دوباره در گرید نمایش بدید.

    طی فعالیت نرد هم میتونید یه پیغام درحال آماده سازی نمایش بدید که کاربر اگر خواست بتونه فرآیند رو کنسل کنه

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    290

    نقل قول: مدیریت کند بودن پاسخ Query

    نقل قول نوشته شده توسط hp1361 مشاهده تاپیک
    سلام

    برای جلوگیری از فریز شدن، کاربهینه اینه که از ترد استفاده کنید.

    میتونید از ClientDataSet استفاده کنید و اونو به ترد پاس بدید و در نهایت نتیجه رو دوباره در گرید نمایش بدید.

    طی فعالیت نرد هم میتونید یه پیغام درحال آماده سازی نمایش بدید که کاربر اگر خواست بتونه فرآیند رو کنسل کنه
    میشه یک مثال کوچولو بزنید یا لینک یک سورس خوب به من معرفی کنید؟

  4. #4

    نقل قول: مدیریت کند بودن پاسخ Query

    می تونید کوئری تون رو آسینک اجرا کنید.
    البته بهتره قبلش با درست کردن کوئری بهینه تر و ایندکس گذاری مناسب وضعیت رو بهتر کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    290

    نقل قول: مدیریت کند بودن پاسخ Query

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    می تونید کوئری تون رو آسینک اجرا کنید.
    البته بهتره قبلش با درست کردن کوئری بهینه تر و ایندکس گذاری مناسب وضعیت رو بهتر کنید.
    میشه یک مثال کوچولو بزنید یا لینک یک سورس خوب به من معرفی کنید؟

  6. #6

    نقل قول: مدیریت کند بودن پاسخ Query

    اشیایی مثل ADO خاصیتی دارند به نام ExecuteOption که می تونید اون ها رو تنظیم کنید.
    در خصوص قسمت دوم هم باید به بخش اس کیو ال مراجعه کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    290

    نقل قول: مدیریت کند بودن پاسخ Query

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    اشیایی مثل ADO خاصیتی دارند به نام ExecuteOption که می تونید اون ها رو تنظیم کنید.
    در خصوص قسمت دوم هم باید به بخش اس کیو ال مراجعه کنید.
    واقعا راهنمایی تون مفید بود و کارم را راه انداخت.
    من برای نمایش دادن درصد پیشرفت از این کد استفاده کردم:
    procedure TForm1.ADOQuery2FetchProgress(DataSet: TCustomADODataSet; Progress,
    MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
    ProgressBar1.Max:=MaxProgress;
    ProgressBar1.Position:=Progress;
    end;

    اما اول کار progressbar با سرعت زیاد پر میشه اما هر چه به آخر کار نزدیک میشه سرعتش کم میشه!!
    برای اینکه بفهمم چه اتفاقی داره می افته یک memo روی صفحه گذاشتم و کد قبلی را به این صورت تغییر دادم:
    procedure TForm1.ADOQuery2FetchProgress(DataSet: TCustomADODataSet; Progress,
    MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
    ProgressBar1.Max:=MaxProgress;
    ProgressBar1.Position:=Progress;
    Memo1.Lines.Add(IntToStr(Progress)+','+IntToStr(Ma xProgress));
    end;


    در کمال تعجب دیدم نه تنها Progress داره زیاد میشه بلکه MaxProgress هم داره زیاد می شه! چرا اینجوریه؟ برای همین مرتبا داره مقدار Max پروگرس بار هم زیاد میشه و خیلی نمایش به درد بخوری نمیشه. کاریش میشه کرد؟

    این هم اعدادی که بعد از اجرای Query در Memo نمایش داده شد:
    965,980
    980,995
    995,1010
    1010,1025
    1025,1040
    1040,1055
    1055,1070
    ...
    ...
    1051265,1051280
    1051280,1051295
    ...
    ...
    1083455,1083470
    1083470,1083485
    1083485,1083500
    1083500,1083515
    1083502,1083502

  8. #8

    نقل قول: مدیریت کند بودن پاسخ Query

    دنبال درصد پیشرفت یک کوئری نباشید، خود اس کیو ال هم نمی دونه کی کارش تموم می شه، ران شدن یک کوئری به خیلی چیزا بستگی داره که آخرینش بایتهای ارسالیه.
    بهتره یک چیزی مثل حلقه ای که داره می چرخه نشونش بدید تا یوزر بدونه باید منتظر بمونه.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  9. #9

    نقل قول: مدیریت کند بودن پاسخ Query

    توضیحات مفیدی دادید ممنونم به کارم اومد

تاپیک های مشابه

  1. کند بودن برنامه های تحت Net.
    نوشته شده توسط ehsan_ansaripoor در بخش VB.NET
    پاسخ: 8
    آخرین پست: یک شنبه 03 آذر 1387, 10:39 صبح
  2. کند بودن اکتیو ریپورت
    نوشته شده توسط maryamb در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: شنبه 08 تیر 1387, 10:56 صبح
  3. ناهمزمان بودن دو query
    نوشته شده توسط a-azad در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 9
    آخرین پست: پنج شنبه 30 خرداد 1387, 10:46 صبح
  4. سوال: کند بودن دستور update
    نوشته شده توسط msda523 در بخش SQL Server
    پاسخ: 6
    آخرین پست: سه شنبه 14 خرداد 1387, 17:37 عصر
  5. کند بودن شبکه
    نوشته شده توسط ghaum در بخش شبکه و Networking‌
    پاسخ: 3
    آخرین پست: پنج شنبه 02 مهر 1383, 10:01 صبح

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

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