PDA

View Full Version : مشکل در سرعت برنامه



lastikchian
شنبه 19 مرداد 1387, 06:29 صبح
با سلام خدمت تمامی دوستان
من یک سوال دارم
با وجود اینکه من بانک اطلاعاتی SQL Server 2005 را دارم و برنامه را با ADOQuery در دلفی نوشتم حالا سوال من این است که :
الان در بانک من 000و500 رکورد بیشتر نیست ولی سرعت باز و بست کردن بانک و همچنین حتی اضافه کردن رکورد بسیار پایین است
اگر ممکن است برای بالا بردن سرعت با من همکاری نمایید.

SYNDROME
شنبه 19 مرداد 1387, 06:52 صبح
دقت کنید که واکشی 500 هزار رکورد زمان می برد.
اگر شما در خود SQL هم چنین عملی را انجام دهید باز هم سرعت پایین می آید.
در سایت قبلا در این مورد بحث شده که رکوردها را یکجا نباید واکشی کرد .
موفق باشید

Hsimple11
شنبه 19 مرداد 1387, 10:55 صبح
همانطور که دوستمان گفتند فقط فیلدها و جداولی را انتخاب یا باز کنید که به آنها نیاز دارید و در مواقع غیر ضروری تمام داده ها را در حافظه لود نکنید.

amin_alexi
شنبه 19 مرداد 1387, 14:51 عصر
در پی فرمایشات دوستان ...
سعی کن تا مجبور نشدی و لازم نیست ... از Select * استفاده نکنی .. اون هم تو این حجم اطلاعات ...
برای نمایش هم اگه از Grid استفاده می کنی ... تعداد فیلدهای غیر ضروری رو برای نمایش کم کن ... .

دنیای دلفی
شنبه 19 مرداد 1387, 15:45 عصر
شما به جاي استفاده از Query از Table استفاده كن سرعت پايين نمي آيد . من تا 3500000 ركورد تست كردم مشكلي نداشته

vcldeveloper
شنبه 19 مرداد 1387, 16:51 عصر
شما به جاي استفاده از Query از Table استفاده كن سرعت پايين نمي آيد . من تا 3500000 ركورد تست كردم مشكلي نداشته
این راهنمایی برای افزایش سرعت بود؟ یا حفظ سرعت کند قبلی؟!

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


با وجود اینکه من بانک اطلاعاتی SQL Server 2005 را دارم و برنامه را با ADOQuery در دلفی نوشتم حالا سوال من این است که :
الان در بانک من 000و500 رکورد بیشتر نیست ولی سرعت باز و بست کردن بانک و همچنین حتی اضافه کردن رکورد بسیار پایین است
اگر ممکن است برای بالا بردن سرعت با من همکاری نمایید.
از این مدل تاپیک ها در سایت زیاد هست، در هر کدام از آنها هم مجموعه ایی از راهکارها را می تونید پیدا کنید. بطور کلی این راهکارها به این چند دسته تقسیم میشند:
1- فقط داده هایی را که به آنها نیاز دارید را لود کنید.
2- بررسی کنید که طراحی بانک شما بدرستی انجام شده باشه.
3- تا حد امکان از کوئری های پیچیده که نیاز به پردازش سنگین دارند استفاده نکنید.
4- سعی کنید تا جایی که می توانید، کوئری های خود را با استفاده از پارامترها بسازید، یا از Stored Procedure استفاده کنید.
5- متناسب با کوئری هایی که در برنامه می گیرید، روی فیلدها Index های مناسب بزارید. Index گزاری اگر درست انجام بشه، تاثیر زیادی روی سرعت کوئری ها داره.
6- از سخت افزاری مناسب نیازهای خودتان استفاده کنید. مثلا اگر حجم پردازش های سمت سرور شما زیاد است، یا حجم داده های لود شده در حافظه بالا هست، باید متناسب با آن از CPU قوی تر و RAM بزرگتر استفاده کنید.
7- تجهیزات شبکه شما هم باید متناسب با حجم داده های رد و بدل شده باشد.