PDA

View Full Version : مفهوم Pooling



saviorperi
دوشنبه 08 خرداد 1391, 00:40 صبح
سلام دوستان
راستش جریان از این قراره که من تو برنامم هر چه قدر سعی میکردم از پایگاه داده backup بگیرم خطا میداد که پایگاه داده در حال استفاده هستش، این در حالی بود که من هیچ connection باز به پایگاه دادم نداشتم، بعد کلی سردرگمی با خودم گفتم شاید مشکل از DataAdapter هایی هست که قبل از عمل پشتیبانگیری تو برنامم ازشون استفاده کردم، و در آخر با اضافه کردن عبارت Pooling=False به ConnectionString های DataAdapter هام، ظاهرا مشکل حل شد.

حالا میشه لطفا توضیح بدید این Pooling چیه و چه کاربرد و تاثیری تو دستورات sql داره ؟

یوسف زالی
سه شنبه 09 خرداد 1391, 01:19 صبح
http://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.80).aspx

saviorperi
سه شنبه 09 خرداد 1391, 10:53 صبح
http://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.80).aspx

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

به طور خیلی خلاصه Pooling کارش اینه که اتصال های برنامه ی شما به اس کیو ال رو مدیریت میکنه. برای مثال اگر در مکان های مختلف برنامه اتصال هایی با ConnectionString های برابر به اس کیو ال داشته باشین، ابتدا یکی از اونها به اس کیو ال متصل میشه ولی دو تای بعدی هنگام باز شدنشون Pooling اونارو برابر با اتصال قبلی قرار میده، یعنی به جای 3 اتصال همیشه فقط یک اتصال به اس کیو ال خواهیم داشت.

baktash.n81@gmail.com
چهارشنبه 10 خرداد 1391, 09:06 صبح
سلام

من نمی دونم شما چی خوندی یا حرفی که می زنی درسته یا نه ...

ایجاد یه Connection به SQL Server خیلی زمان بر و هزینه بر (هزینه از نظر منابه سیستم عامل) هست برای همین ADO یه امکانی به وجود آورده به اسم Pooling یعنی چی ... یعنی هر بار که یه کاربر درخواست اتصال به بانک رو می ده یعنی یه Connection رو Open می کنه به جای اینکه ADO بره سمت SQL اول می آد توی Pool رو نگاه می کنه ببینه اتصالی قبلا با این (Connection String) ایجاد شده که استفاده نشه ... و از اون استفاده می کنه ... اگه نبود هم می ره سمت SQL و یدونه جدید می سازه ... بعد از این که کاربر Connection رو Close کرد ADO اتصال رو بر می گردونه به Pool به جای اینکه کامل حذفش کنه ... کاربرد اصلی Pooling در برنامه نویسی تحت وب هست ... فرض کن از یه سایت 100 نفر در دقیقه بازدید کنن ... IIS هر بار باید یه Connection به SQL بزنه ... برای همین به جای اینکه وقتی IIS یه اتصال رو می بنده ... ADO اونو پاک نمی کنه میندازتش توی Pool تا دوباره استفادش کنه ... تنظیماتی هم داره مثل اینکه چه تعداد Connection رو تو Pool نگهداره و چه مدت نگهشون داره و ... نکته ایی که وجود داره اینه که Connection String ها باید کاملا مشابه باشن تا Pool بشن ...