4-1) آشنایی با 2005 SQL Server

ويژگي‌هاي معماري پايگاه داده و موتور حافظه

اين نسخه از SQL Server بر طبق معماري ضروري مشابه با آن‌چه كه در نسخه‌ 7 از SQL Server توليد مي‌شد، ساخته شده است و مايكروسافت به انجام بهبودهاي انقلابي در موتور SQL Server ادامه مي‌دهد. طبق قانون مور، ظرفيت سخت‌افزاري در هر 18 ماه دو برابر مي‌شود، در حالي كه در همان مدت زماني، هزينه‌هاي سخت‌افزاري كاهش مي‌يابد. هرچند، در حالي كه سخت‌افزار ارزان‌تر مي‌شود، هزينه‌هاي مردم بيشتر مي‌شود. در نسخه SQL Server 2005، مايكروسافت بهبودهايي را صورت داده است كه به SQL Server امكان مي‌دهند تا از جديدترين نسل‌هاي سخت‌افزار با كارآيي بالا بهره ببرند و اين قابليت را براي آن‌ها فراهم كرده است كه خود را به اوج محصولات جهاني برسانند. هم‌زمان، اين شركت ويژگي‌هايي را اضافه كرده است كه مديريت آن‌ها توسط SQL Server آسان‌تر است و هم‌چنين قابليت‌هاي جديدي را فراهم نموده است كه به شما امكان مي‌دهد تا ارزش بيشتري براي SQL Server در سازمان خود قايل شويد. در اين فصل، برخي از مهم‌ترين بهبودها را از نظر معماري كه مايكروسافت در SQL Server 2005 صورت داده است، معرفي خواهيم كرد، با اين هدف كه به شما كمك كنيم تا ببينيد اين ويژگي‌ها چگونه مي‌توانند بهره‌وري شما و قابليت اعتماد محيط پايگاه داده را بهبود بخشند.

 

پشتيباني سخت‌افزاري جديد

يكي از ويژگي‌هاي جديد كليدي كه به SQL Server 2005 به عنوان يك موتور پايگاه داده اجازه مي‌دهد تا سطوح كارآيي يكساني با بزرگ‌ترين پايگاه‌هاي داده UNIX داشته باشد، پشتيباني سخت‌افزار بهبود يافته آن است. حافظه هميشه يكي از حياتي‌ترين عواملي بوده است كه در كارآيي پايگاه داده تأثير داشته است و پايگاه‌هاي داده بزرگ UNIX كه رتبه‌بندي كارآيي TPC-C كلاستر فشرده بالايي دارند، همگي به سطح كارآيي با استفاده از يك سخت‌افزار 64 بيتي و محيط سيستم عامل توجه داشته‌اند. هنگامي كه يك محيط 64 بيتي قابل مقايسه براي SQL Server به شكل پردازنده Intel Itanium2 64 بيتي و پشتيباني 64 بيتي طبيعي Windows Server 2003 در دسترس قرار مي‌گيرد، SQL Server بلافاصله به رأس آزمون كارآيي TPC-C منتقل مي‌شود. SQL Server 2005 اين پشتيباني 64 بيتي طبيعي را به همراه قابليتي براي پشتيباني از NUMA[1] از Windows Server 2003 به ارث مي‌برد. SQL Server كه بر طبق محيط Windows Server 2003 ساخته شده است، پشتيباني 64 بيتي را براي معماري Itanium IA64 و معماري AMD x64 فراهم كرده است.

 

پشتيباني 64 بيتي طبيعي

هنگام اجرا در Windows Server 2003 براي سيستم‌هاي Itanium 64 بيتي، SQL Server 2005 از پردازنده‌هاي Itanium و Itanium2 اينتل پشتيباني مي‌كند. هنگام اجرا در Windows Server 2003 براي Extended Systems 64 بيتي، SQL Server 2005 از پردازنده‌هاي Opteron 64 بيتي AMD و AMD Athlon 64 و Xeon اينتل با EMT64[2] پشتيباني مي‌كند. SQL Server 2005 كاملاً از محيط‌هاي سخت‌افزاري 32 و 64 بيتي براي تمام سرويس‌هاي عمده آن‌ها، از جمله SQL Server Engine، Analysis Services، SQL Agent و Reporting Services پشتيباني مي‌كند. مزيت واقعي در انتقال يك پايگاه داده به محيط 64 بيتي، توان پردازش سريع‌تر نيست. در عوض، مزيت واقعي در حافظه قابل آدرس‌دهي افزايش يافته نهفته است. شكل 1-1 مقايسه‌اي از حداكثر حافظه قابل آدرس‌دهي براي SQL Server 32 بيتي و نگارش 64 بيتي SQL Server 2005 نشان مي‌دهد.

معماري 32 بيتي طبيعي به حداكثر 4GB حافظه قابل آدرس‌دهي محدود است. تحت Windows، اين حد 4GB حتي بين سيستم عامل و برنامه‌ها تقسيم مي‌شود. به عبارت ديگر، 2GB براي سيستم عامل Windows رزرو شده است و 2GB براي برنامه‌ها باقي‌مي‌ماند. با استفاده از پشتيباني AWE در نگارش 32 بيتي، SQL Server مي‌تواند حداكثر 32GB از RAM را آدرس‌دهي كند. در حالي كه اين افزايش واقعي است، باز هم سربار صفحه‌بندي براي داشتن صفحات حافظه مناسب وجود دارد. پياده‌سازي 64 بيتي طبيعي، محدوديت حافظه را با افزايش حداكثر حافظه قابل دسترسي به 32TB به‌طور مجازي برطرف كرده است. در حال حاضر، هيچ سيستم توليدي در هيچ جايي، از اين مقدار RAM فيزيكي پشتيباني نمي‌كند. حداكثر مقدار RAM فيزيكي كه SQL Server 2005 در زمان عرضه با آن تست شده است، 512GB است. با نسخه بعدي بسته خدماتي بعدي براي Windows Server 2003، انتظار مي‌رود حداكثر حافظه مورد پشتيباني تا 1 TB افزايش يابد.

پشتيباني NUMA

ويژگي جديد ديگري كه سيستم عامل Windows Server 2003 انجام مي‌دهد، پشتيباني NUMA[3] است. NUMA معماري سيستمي مورد استفاده برخي توليد كنندگان سيستم از قبيل IBM و Unisys است كه كاربرد حافظه و CPU را در سيستم‌هاي چند پردازنده‌اي كارآمدتر از معماري SMP معمولي مديريت مي‌كند. در سيستم‌هاي SMP استاندارد، هنگامي كه سرعت و تعداد پردازنده‌ها افزايش مي‌يابد، رقابت بين پردازنده‌ها براي دستيابي به حافظه موجب رقابت گذرگاه مي‌شود. اين امر موجب تأخيرهايي در پردازش شده و قابليت يك سيستم را براي مقياس‌بندي دچار مشكل مي‌كند. نتيجه اين امر اين است كه سيستم‌هاي SMP در صورت افزايش تعداد پردازنده‌ها، به‌طور خطي مقياس‌بندي نمي‌شوند. معماري NUMA براي حل اين مشكل در سيستم‌هاي SMP طراحي شده است كه در آن، پردازنده‌ها قادر به دستيابي سريع‌تر به داده در RAM گذرگاه سيستمي كه مي‌تواند آن را فراهم كند، هستند. معماري NUMA، CPU و حافظه را در podهاي محلي چند پردازنده گروه‌بندي مي‌كند. اين podها از طريق يك گذرگاه خارجي به يكديگر متصل مي‌شوند كه ترافيك داده چند pod را منتقل مي‌كند. اين آرايش Pod، مسأله رقابت را با محدود كردن تعداد CPUهاي رقيب براي دستيابي به حافظه، برطرف مي‌كند. براي تشخيص حداكثر مزاياي اين معماري، سيستم عامل و برنامه‌ها بايد طوري طراحي شوند تا ترافيك داده چند podاي را حداقل كرده و دستيابي حافظه داخل pod سريع را حداكثر كنند. اگر سيستم‌عامل و برنامه به‌طور صحيح طراحي شده باشند، معماري NUMA مقياس‌بندي تقريباً خطي را ممكن مي‌سازد، هنگامي كه پردازنده‌هاي بيشتري اضافه شوند. Windows Server 2003 و SQL Server 2005 بهبودهاي معماري را براي افزايش درجه‌اي كه رشته‌ها و حافظه استفاده مي‌كنند و در همان pod قرار دارند، مشاركت مي‌دهد.

 

پشتيباني از Hyper-Threading

SQL Server 2005 هم‌چنين مي‌تواند از Hyper-Threading بهره ببرد و ما بايد ممنون مايكروسافت باشيم كه Hyper-Threading را به Windows Server 2003 اضافه كرده است. Hyper-Threading يك فناوري CPU است كه توسط اينتل توسعه يافته است و دو پردازنده منطقي را براي هر پردازنده فيزيكي در يك سيستم ايجاد مي‌كند. هر پردازنده منطقي، قادر به اجراي هم‌زمان رشته‌هاي مجزاست. هدف Hyper-Threading فراهم كردن مصرف منبع بهتر براي برنامه‌هاي چند رشته‌اي يا چندين برنامه در حال اجرا روي يك ماشين است. در حالي كه Hyper-Threading پتانسيل افزايش بازده در يك سرور را فراهم مي‌كند، پردازنده‌هاي منطقي براي منابع سيستم از قبيل داده در كش پردازنده رقابت مي‌كنند. اين رقابت براي منابع مانع از انجام كار Hyper-Threading CPU شده و استفاده از دو CPU فيزيكي توسط سيستم قابل مقايسه مي‌شود.

SQL Server 2005 دو مزيت عمده را از پشتيباني Windows Server 2003 براي Hyper-Threading مي‌گيرد. اول اين كه، برخلاف Windows 2000، Windows Server 2003 تنها پردازنده‌هاي فيزيكي را براي اهداف تعيين مدرك به حساب مي‌آورد. بنابراين، يك پردازنده تكي با استفاده از Hyper-Threading، به عنوان يك پردازنده تكي تعيين مي‌شود و نه يك پردازنده دوم كه تحت Windows 2000 چنين بود. سپس، Windows Server 2003 زمان‌بندي رشته‌اي بهبود يافته را براي سيستم‌هاي Hyper-Threading شده فراهم كرده است. اين تغييرات موجب كارآيي بهتر براي برنامه‌هاي چند رشته‌اي نظير SQL Server مي‌شوند.

 

SQL Server Engine

در حالي كه اولين بخش اين فصل، تصوير بزرگ‌تري از پشتيباني سخت‌افزاري جديد فراهم شده در SQL Server 2005 را بررسي كرد، اين بخش به بررسي عمقي برخي از مهم‌ترين بهبودهايي مي‌پردازد كه مايكروسافت در خود SQL Server Engine صورت داده است.

 

يكپارچگي .NET Framework

مهم‌ترين بهبود موتور SQL Server در SQL Server 2005، يكپارچگي Microsoft .NET Framework است. يكپارچگي .NET Framework با SQL Server، قابليت SQL Server 2005 را با امكان ساخت رويه‌هاي ذخيره شده، توابع تعريف شده كاربر، تريگر‌ها، انبوهه‌ها و انواع تعريف شده كاربر با استفاده از هر يك از زبان‌هاي .NET، از قبيل VB.NET، C# يا J# توسعه داده است. يكپارچگي .NET CLR با SQL Server 2005، بيش از يك مسأله سطحي است، زيرا موتور پايگاه داده SQL Server از CLR در فرآيند ميزباني مي‌كند. مي‌توانيد در فصل 4 مطالب بيشتري در اين زمينه بياموزيد.

 

پشتيباني چند نمونه‌اي بهبود يافته

بهبود مهم ديگر در ويرايش Enterprise از SQL Server 2005، پشتيباني براي حداكثر تا 50 نمونه است. اين مسأله در SQL Server 2000، 16 نمونه بود. اين بهبود مهم خاصي براي ميزباني از فروشندگاني است كه چند سرويس SQL Server را به عنوان بخشي از ارايه سرويس‌هاي وب خود اجاره مي‌دهند.