PDA

نسخه کامل مشاهده نسخه کامل : آيا امكان تسهيم اجراي دستورات SQL روي تمام هسته هاي پردازنده وجود دارد؟



Pejvak61
26-01-2012, 15:46
آيا راهي وجود داره كه بشه دستورات SQL هنگام اجرا به جاي فقط يك هسته (CPU شناخته شده براي سيستم) از تمام هسته ها به صورت موازي استفاده كنه؟

من توي اجراي دستورات SQL روي سروري كه 8 هسته داشت (2 پردازشگر 4 هسته اي) ديدم در هربار اجراي دستورات يك هسته به usage 100% رسيده و بقيه هيچ تأثيري نپذيرفتن و با اتمام عمليات، دستور بعدي رو اجرا كردم اينبار اون هسته رو ول كرد رفت سراغ هسته ديگه و اونو Usage 100% كرد.

MicrosoftH
27-01-2012, 14:02
ببینید بنظر من فکر نکنم بشه چون شما در SQL فقط دستورات رو دارید و نمیتونید اصلا حافظه رو کنترل کنید این SQL SERVER هستش که دستورات به پردازنده میده (نظر شخصی)

Pejvak61
03-07-2012, 07:14
من از جايي شنيدم كه اين خود سيستم عامله كه ميزان تسهيم وظايف را بين هسته هايش انجام ميده و هر وظيفه اي كه به سيستم عامل داده ميشه به نسبت، به هسته هاي CPU سپرده ميشه تا پروسه در سريعترين زمان ممكن انجام بشه.

اما در عمل نديدم كه هميشه چنين اتفاقي بيفته نمونه اش هم پردازش اطلاعات مربوط به محاسبات نرم افزارهاي سه بعدي ساز از قبيل 3ds max بوده كه تنظيماتي در برنامه اش داشت كه ميتونست از استفاده همزمان از تمام هسته هاي پردازشگر بهره مند بشه يا نشه. و موقعي كه يك render‌ انجام ميشه بريد task manager را باز كنيد و يك نگاهي به ميزان استفاده شدن CPU‌ را بندازيد، ميبينيد كه تمام هسته ها full هستن و در حين انجام اون render‌، پروسه هاي ديگه اونقدر كند انجام ميشن كه انگار متوقف شدن.

اما در ويندوز سرور 2008 يا 2003 كه روش Sql Server نصبه، من دقت كردم كه وقتي كاربري در شبكه با استفاده از application خودش يك query سنگين به sql server ميفرسته تنها يكي از هسته ها يا بهتره بگم يكي از thread ها به 100% Usage ميرسه و بقيه بيكار هستن و جالبه كه وقتي اجراي اون query به اتمام ميرسه و query جديد ارسال ميشه thread بعدي شروع به كار ميكنه و به 100% Usage ميرسه و همينطور الي آخر. و هيچوقت به طور همزمان نديدم چند هسته يا thread‌ با هم در حال اجراي احكام sql باشن. البته يك فرض اينجا وجود داره و اونهم بر اين دلالت داره كه به دليل شبكه بودن اين سيستم ها و امكان فرستاده شدن چندين و چند query سنگين به سرور، اين سرور بايد توانايي پاسخگويي با كيفيت يكسان به همه درخواستها را داشته باشه و به همين دليل هم فقط يك هسته يا thread‌ را به محاسبات اين قسمت به هر كاربر اختصاص ميده.

با تمام اين تفاسير باز هم همه اين مواردي كه مطرح شد فرض هستن و ممكن درست نباشن اما از دوستاني كه دستي در علم سيستم عامل دارند تقاضا دارم در اين باره اگر نظري دارند عنايت بفرمايند تا مستفيض بشيم (به فيض برسيم!)

MicrosoftH
25-09-2012, 11:38
ببینید اجرای دستورات در هسته که به کدوم هسته داده بشه توسط ویندوز بصورت اتوماتیک انجام میشه و شما هیچ نقشی در اون ندارید برای 3dmax ببیند دستورات این برنامه ها خیلی حرفه هستش و برای رندر کردن از CPU بصورت موازی بهره میگیره ولی در SQL سرور نیازی به این کار نیست