ورود

View Full Version : سوال: حجم بالا و کند شدن دیتابیس



Hsimple11
جمعه 03 تیر 1390, 00:33 صبح
با سلام...

مدتی است که کاربران از برنامه ام (Delphi7 - SQL 2000 SP4) استفاده میکنند. در این برنامه فیلد عکسی دارم که تصاویر در دیتابیس ذخیره میشوند (از روش ذخیره کردن آدرس تصاویر و Streaming استفاده نکردم). حالا که 2 سال از استفاده کاربران میگذرد، برخی حدود 3-4 هزار عکس حدود 500KB ای در دیتابیس ذخیره کرده اند که این امر باعث کند شدن شدید برنامه شده است. به نظر شما الان چکار میتونم بکنم؟.....

Shrink دیتابیس بهبودی نشان نمیدهد. اینکه فیلد عکس را بک آپ بگیرم و خالیش کنم هم نمیشود چون کاربران هر روز ممکن است به تصاویر نیاز داشته باشند. با توجه به اینکه نمیتونم فیلدها و تیبلها رو الان دیگه دستکاری کنم، شما بودید چکار میکردید؟

در ضمن در رابطه با منطق برنامه هم عرض کنم که تیبل حاوی فیلد عکس در ADOTable وجود دارد و جاهایی که عکسی باید نمایش داده شود، کامپوننت ImageEnDBView هست که به فیلد عکس مرتبط شده و Query از ID که هر عکس دارد گرفته میشود. ولی سرعت اونقدر پایینه که انگار همه عکسها لود میشوند...

nilidelphi
جمعه 03 تیر 1390, 10:40 صبح
دوست عزیز سرعت دسترسی به رکورد ها ربطی به سنگین بودن دیتا بیس ندارد به تعداد رکورد ها دارد
شما میتونید به جای اینکه کد اس کیو ال را در برنامه بنویسید و اجرا کنید با یک استو پروسجر به خود اس کیو ال بفرستین و نتیجرو دریافت کنید که در سرعت دریافت نتیجه تاثیر بسزایی دارد(البته اگر دیتابیس شبکه باشد که خیلی تاثیر میکند)
در ضمن اگر می خواهید RAM هم کمتر اشغال شود آن ADOTableای که دارای عکس هست رو در مواقعی که نیازی به آن جدول نیست یرفعال کنید
Active:=false;

موفق باشید

mjdeveloper
سه شنبه 28 تیر 1390, 10:42 صبح
شما با ارتقا برنامه خود و بردن بانک روی Sql2008 و استفاده از امکان فوق العاده sql2008 می توانید مشکل را حل کنید این امکان FileStream هستش که مثل قدیم فیلد image یا همون Blob دارید و اگر FileStream رو روی بانک فعال کرده باشید داده های فیلدهای Blob کنار بانک اطلاعاتی به صورت اتوماتیک ذخیره شده و حجم بانک رو بالا نمی بره و برنامه هم تغییر نیاز نداره.
من در برنامه ای حدود 400 گیگا بایت داده دارم و همه در بانک اطلاعاتی هستش و برنامه هم تحت شبکه کار می کند. :متعجب: