سلام دوستان
جمعه هفته قبل (02/11/1394) جلسه یازدهم دوره آموزشی Performance Tuning در SQL Server با موفقیت برگزار شد. در طی این جلسه مطالبی در خصوص پارتیشنبندی، جداول موقت و همچنین اصول اولیه مانیتورینگ SQL Server خدمت دوستان ارائه گردید.
در جلسه 11 ما اصول پارتیشن بندی جداول و ایندکسها را به دوستان معرفی کردیم و در خصوص مزایای آن صحبتهایی کردیم. همچنین برخی از دوستان تجربیات خودشان را در این خصوص گفتند که برای افزایش سرعت و کارایی جداول پارتیشن شده آنها راهکارهایی ارائه شد.
اما مباحثی که در این جلسه به ازای پارتیشن بندی صحبت کردیم عبارتند از
1- انجام عملیات Merge : حذف یک نقطه مرزی
2- انجام عملیات Split : اضافه کردن یک نقطه مرزی
3- انجام عملیات Switch : انتقال دیتای پارتیشن به یک جدول و بلعکس
یکی دیگر از مباحثی که ما در این جلسه صحبت کردیم مربوط به حوزه جداول موقت است.
در SQL Server انواع مختلفی از جداول موقت وجود دارند. این جداول عبارتند از
1- Local Temp Table : جداول موقت محلی
2- Global Temp Table : جداول موقت عمومی
3- Table Variable : متغییرهای جدولی
4- Table Variable Parameter : استفاده از متغییرهای جدولی به عنوان پارامتر ورودی SP (TVP)
مهمترین ویژگی این نوع جداول این است که تمامی آنها در به نوعی در بانک اطلاعاتی TempDB ایجاد شده و با این بانک اطلاعاتی درگیر هستند.
همچنین یکی از مباحثی که ما در این جلسه به آن اشاره کردیم Cardinality Estimation به ازای جداول موقت میباشد. مبحث CE به ازای این جداول در برخی از شرایط بسیار متفاوت از جداول عادی میباشد. حتی تخمین غلط ممکن است در مواقعی باعث ایجاد Suboptimal Plan شود که راهکارهای رفع مشکلات مربوط به آن در طی دوره بررسی شد.
اما یکی دیگر از مباحثی که در خصوص Temp بررسی شد مربوط به بانک اطلاعاتی TempDB و تنظیمات آن در سمت سرور برای خلاص شدن از شر مشکل Latch Contention بود. در این خصوص ما یک نرمافزاری کاربردی برای ایجاد Workload در بانک اطلاعاتی معرفی کردیم.
لازم میدانم اشاره کنم که تنظیمات بانک اطلاعاتی TempDB در SQL Server 2016 راحتتر و بهینهتر شده است.
منبع: آموزش SQL Server نیک آموز
6 دیدگاه
حمیدقلیپور
با سلام و احترام
مهدی ربانی ذبیحی
با سلام و خسته نباشید جناب مهندس طاهری سوالی از خدمت شما داشتم در مورد مباحثی که مربوط به معماری sql واینکه پشت پرده چه اتفاقاتی خواهد افتاد در ازای تنظیمات مختلف ادمین که توی این دوره بسیار خوب داره پوشش داده میشه چند درصد اونا در نسخه های پایین تر مشترک و به عبارتی چقدر از نسخه های پایین تر تو زمینه معماری sql تغییر داشته با تشکر
مسعود طاهری
متاسفانه درصد نمی توانم بگم
مجتبی شهریور
سلام
عالیه!! آرزوی پیروزی همه دوستان را دارم
محمد دانشور
با عرض سلام و خسته نباشید، جناب اقای مهندس طاهری یه سوالی داشتم در رابطه با پاتیشن بندی خیلی هم جستجو کردم ولی به نتیجه مطلوبی نرسیدم. ممنون می شم راهنمایی کنید.
ما نمی تونیم روی فیلدی که جز فیلد های کلاستر ایندکس نیست پاتیشن بذاریم؟ اگه نمی شه پس تکلیف سایر جداول که کلید اصلی این جدول رو به عنوان کلید خارجی دارن چی می شه؟
ممنون از راهنمایی تون
مسعود طاهری
سلام
کلید اصلی را می توانید به صورت Non Clustered تعریف کنید
در دوره Performance این مورد در مثالی بررسی شده
البته ما در نیک آموز یک محصول کاملا تخصصی برای پارتیشن بندی داریم در اون محصول این مورد بررسی شده در ضمن این محصول یه کتابچه فارسی (بیش از 40 صفحه) دارد
https://nikamooz.com/product/data-partitioning-sql-server-2016/