هر چقدر با جزئیات و ریزهکاریهای مربوط به SQL Server آشنا شوید به خوبی میتوانید از عهده مشکلات مربوط به کارایی بانکهای اطلاعاتی برآید. دوره بسیار جذاب و کاملا کاربردی Performance & Tuning در مورد تمام راهکارهای افزایش سرعت در SQL Server صحبت میکند.
2.190.000 تومان 1.533.000 تومان
۱. آشنایی با مفهوم DMV و DMF در SQL Server ۲. بررسی مفهوم Database ۳. بررسی مفهوم Data File و Log File ۴. بررسی معماری Log File ۵. بررسی معماری منطقی Log File ۶. برررسی معماری فیزیکی Log File ۷. بررسی نحوه اعمال تنظیمات مناسب برای Data File و Log File ۸. بررسی تنظیمات مفید سیستم عامل برای فایلهای بانک اطلاعاتی ۹. بررسی تنظیمات Database Instant File Initialization ۱۰. آشنایی با Buffer Pool در SQL Server ۱۱. بررسی مفهوم Checkpoint ۱۲. چه کارهایی در هنگام Checkpoint رخ میدهد؟ ۱۳. بررسی پروتکل TDS و نحوه استفاده SQL Server از آن ۱۴. بررسی اولیه مفهوم Lock ۱۵. بررسی اولیه مفهوم Latch ۱۶. آشنایی با DMVها و DMFهای مهم و پرکابرد در این حوزه ۱۷. معرفی ابزارهایی کاربردی برای مشاهده محتوای Pageها
Log File و اعمال تنظیمات مناسب برای آن همه ما میدانیم که بانکهای اطلاعاتی در SQL Serverحداقل از یک Data File و یک Log File تشکیل شده است. چنانچه ما معماری ذخیرهسازی داده در هر کدام از این فایلها را بدانیم رفتارمان نسبت به این فایلها عوض میشود. یکی از مواردی که من همیشه در بانکهای اطلاعاتی بزرگ تنظیمات مناسبی بر روی آن اعمال میکنم. Log File است. نوع دسترسی در این فایل به صورت Sequential (دسترسی ترتیبی) میباشد و برای افزایش کارایی بانک اطلاعاتی باید تنظیمات مناسبی بر روی آن اعمال نمود. ما در این دوره با نحوه اعمال تنظیمات مناسب برای این فایلها آشنا میشویم
۱. بررسی مفهوم Page در Data File ۲. بررسی معماری ذخیرهسازی دادهها در Page ۳. بررسی انواع Pageها و کاربرد هر کدام از آنها ۴. بررسی دقیق Allocation Page ۵. بررسی مفهوم Row-Overflow ۶. بررسی مفهوم LOB و نحوه ذخیرهسازی آن در SQL Server ۷. بررسی تکنیکهای استفاده مناسب از Data Typeها ۸. Select * و مشکلات آن ۹. بررسی مفهوم Extent ۱۰. معرفی انواع Extentها در SQL Server ۱۱. نحوه ویرایش رکوردها در SQL Server ۱۲. Alter کردن جداول در SQL Server
چرا باید جزئیات نحوه ذخیره سازی دادهها در جداول را تا به این حد یاد بگیرم؟ این سوالی بود که در یکی از کورسهای Performance Tuning در SQL Server از من پرسیده شده بود. جوابی که من به این سوال میدهم این هر چقدر با جزئیات و ریزه کاریهای مربوط به SQL Server آشنا شوید رفتارتان با آن عوض میشود و به خوبی میتوانید از عهده مشکلات مربوط به کارایی بانکهای اطلاعاتی برآید.
۱. بررسی مفهوم File Group ۲. بررسی کاربردهای File Group ۳. بررسی مزایای استفاده از File Group ۴. بررسی انواع File Groupها ۵. بررسی نحوه تعریف اصولی File Groupها ۶. بررسی نحوه رشد Data Fileهای مربوط به File Group ۷. بررسی نحوه قرار دادن جداول در File Groupها ۸. بررسی نحوه قرار دادن ایندکس در یک File Group ۹. بررسی نحوه ذخیره و بازیابی BLOBها در File Groupهای جداگانه ۱۰. بررسی فایلگروههای Filestream ۱۱. بررسی نحوه استفاده از فایل گروههای Filestream در جهت افزایش کارایی بانک اطلاعاتی ۱۲. بررسی نحوه ایجاد و مدیریت فایل گروههای Filestream ۱۳. بررسی نحوه پیکربندی SQL Server برای کار با Filestream ۱۴. بررسی نحوه کار با Filestream در .NET ۱۵. بررسی جداول FileTable ۱۶. بررسی نحوه استفاده از FileTable در NET.
نحوه ارتباط دات نت با Filestream و File Table ما در این دوره شما را با نحوه استفاده از تکنولوژی Filestream و همچنین File Table در دات نت آشنا میکنیم. از این سبک کد نویسی خودم به شخص در اغلب پروژهها استفاده کردهام و کارایی بانک اطلاعاتی را افزایش دادهام.
۱. بررسی مفهوم Logical Read و Physical Read ۲. بررسی دستور Set Statistics IO ۳. بررسی دستور Set Statistics Time ۴. بررسی ترتیب اجرای منطقی و فیزیکی دستورات SQL Server ۵. بررسی مفهوم Execution Plan و انواع آن ۶. بررسی نحوه Compare کردن Execution Planها در SQL Server ۷. بررسی نحوه ذخیره و بازیابی Execution Plan
معرفی دو ابزار حرفهای برای آنالیز Execution Plan
ما در SSMS میتوانیم Execution Planها را مشاهده و آنالیز کنیم، اما SSMS امکانات محدودی برای آنالیز Plan دارد ما در این دوره شما را با دو ابزار خیلی قوی برای آنالیز Execution Plan آشنا خواهیم کرد.
استفاده بهیه از ایندکسها: شاید شما جز آن افرادی باشید که به ازای فیلدهایی که مورد جستجو قرار میگیرد، یک ایندکس از نوع Non Clustered ایجاد میکنید و فکر میکنید که با ایجاد آن سیستم به حداکثر کارایی ممکن دست پیدا خواهد کرد. باید این نکته را متمرکز شویم که ایجاد یک ایندکس ممکن است، در برخی موارد اثر منفی هم در سیستم بگذارد باید به این نکته توجه داشته باشیم که ایندکسهای NonClustered در SQL Server حالتهای مختلفی (مانند Filtered ، Cover، فشرده و … ) دارند که اگر به نحواحسند از آنها استفاده کنیم کارایی سیستم چندین برابر خواهد شد.
۱. بررسی Heap Table ۲. بررسی معماری جداول Heap در SQL Server ۳. آشنایی با Forwarding Pointer در Heap Table ۴. بررسی چند سناریو کاربردی برای استفاده از Heap Table ۵. آشنایی با Clustered Index ۶. بررسی معماری Clustered Index ۷. بررسی تاثیر انتخاب درست کلید Clustered Index در کارایی بانک اطلاعاتی ۸. چگونه Where Condition مناسب جهت استفاده از Clustered Index بنویسیم؟ ۹. مقایسه Heap و Clustered Index ۱۰. بررسی انتخاب کلید ایندکس به صورت ترکیبی و تاثیر آن بر کارایی بانک اطلاعاتی ۱۱. بررسی ویژگیهای مهم و کاربردی برای انتخاب کلید ایندکس ۱۲. بررسی Non Clustered Index و معماری مربوط به آن ۱۳. بررسی مفهوم lookup هنگام استفاده از ایندکسهای NonClustered ۱۴. بررسی Key Lookup ۱۵. بررسی RID Lookup ۱۶. Tipping Point و مفهوم آن در SQL Server
آشنایی جامع با مباحث ساخت و مدیریت ایندکس: به خاطر دارم که چند ماه پیش درگیر یک پروژه Database Tuning بودم. متاسفانه یکی از جداول اصلی سیستم که حجم داده آن هم زیاد بود (بیش از ۲۰ میلیون رکورد) فاقد کلاسترایندکس بود. در این حالت جدول مورد نظر از نوع Heap بوده و کلیه ایندکسهای NonClustered بر روی Heap Table ایجاد شده بودند با بررسی و تحلیلی که بر روی کوئریهای این بانک اطلاعاتی انجام دادیم به این نتیجه رسیدیم که میتوان با انتخاب دو فیلد مناسب در جدول NonClustered Index خوب ایجاد نمود که اثر بسیار مثبتی در عملکرد سیستم داشته باشند. این مورد و مواردی مثل این زیاد برای من و شما اتفاق افتاده در این گونه مواقع کافی است که با مباحث ساخت، مدیریت و مباحث مربوط به ایندکس آشنایی داشته باشیم.
Shrink کردن دیتابیسها را در فاکتور بگیریم یکی از وحشناکترین کارهایی که یک DBA ممکن است خیلی زیاد آنها را انجام دهد Shrink کردن Database است. این استراتژی را یکی از DBAهای یک کارخانه مشهور دولتی انجام داده و به این موضوع به شدت افتخار میکرد که با انجام این کار Database جان میگیرد. به شکل دوستانه با چند خط اسکریپت وضعیت بانک اطلاعاتی قبل از Shrink کردن و بعد از آن را او نشان دادم تا متوجه مشکلات مربوط به اینکار شود. پس از حذف پروسه Shrink از Jobهای شبانه ایشان مشکلات مربوط به کندی برخی از کوئریها رفع شد.
۱. بررسی مفهوم Cover Index در SQL Server ۲. بررسی نحوه حذف هزینه Lookup با استفاده از Cover Index ۳. بررسی Filtered Indexها در SQL Server ۴. بررسی Sparse Column و تاثیر اعمال ایندکس بر روی آنها ۵. بررسی استفاده از GUID به عنوان کلید ایندکس و مشکلات مربوط به آن ۶. Computed Column و اعمال ایندکس بر روی آنها ۷. بررسی تاثیر عملیات Shrink بر روی ایندکسها ۸. بررسی تاثیر منفی ایجاد بیش از حد ایندکسها در کارایی بانک اطلاعاتی ۹. بررسی Hypothetical Index ۱۰. بررسی Optionهایی که هنگام ایجاد ایندکس باید در نظر داشت
۱. بررسی فشردهسازی هنگام استفاده از نوع داده Decimal ۲. بررسی مفهوم Data Compression در SQL Server ۳. بررسی فشرده سازی به روش Row Compression ۴. بررسی فشرده سازی به روش Page Compression ۵. بررسی تاثیر فشردهسازی بر عملیات Select ۶. بررسی تاثیر فشردهسازی بر عملیات Insert,Update,Delete ۷. بررسی تاثیر فشردهسازی بر کارایی بانک اطلاعاتی ۸. بررسی تاثیر فشردهسازی بر روی Clustered Indexها ۹. برررسی تاثیر فشردهسازی بر روی Non Clustered Indexها ۱۰. بررسی تاثیر عملیات فشردهسازی بر روی کارایی عملیات تهیه و بازیابی نسخه پشتیبان
تاثیر فشردهسازی جدول بر کارایی بانک اطلاعاتی
در یکی از پروژههایی که در آن درگیر بودم یکی از جداول بانک اطلاعاتی دارای حجم زیادی از داده بود که با توجه به اینکه حجم Selectهای این جدول خیلی زیاد بود تصمیم گرفتیم Data Compression را بر روی این جدول راهاندازی کنیم. با انجام این کار حجم دادههای موجود در ایندکسهای این جدول کاهش پیدا کرد و این موضوع باعث شد که IO کوئریها کمتر شود. تصویر زیر نمونهای از فضای یک جدول قبل از فشرده و پس از فشردهسازی به روشهای مختلف را نمایش میدهد.
آشنایی با مباحث Statistics: یکی از سازمانهای دولتی که با آن کار میکنیم چند روز پیش با من تماس گرفته بود و میگفت که پروسیجر مربوط به درج رکوردهای فایل X در بانک اطلاعاتی، به شدت کند عمل میکند هر عملیات درج بیش از ۳۰ ثانیه زمان میبرد این پروسجر یک وحشناکترین SPهای مربوط به سازمان مورد نظر بود که شامل بیش از هزار خط کد (SP و Functionهای تودرتو) بود بررسی و Tune کردن این نوع SPها خیلی خیلی زمان بر بوده و عموما برای بهیه کردن هر چند بهتر نیاز است که شما به Business مربوط به آن هم کمی تسلط داشته باشید تا بتوانید بعضی از مواقع بازنویسی SP را با دستورات بهتر انجام دهید. خوب اما من وقت کافی برای اینکار نداشتم بچههای سازمان به من گفتند کل کاری که قبلا به ازای این SP انجام میشد ۲ ثانیه زمان میبرد اما حالا بیش از ۳۰ ثانیه، با کمی پرسش از بچهها متوجه شدم که بروزرسانی Statisticsها در سازمان جزو دستور کار نبوده و یا به روز کردن Statisticsهای سازمان به صورت و Manual مشکل حل شد.
۱. بررسی مفهوم Statistics ۲. بررسی کاربرد Statistics در SQL Server ۳. بررسی مفهوم Query Selectivity در SQL Server ۴. بررسی تاثیر Statistics در هنگام انتخاب یک ایندکس مناسب ۵. بررسی اجزاء مربوط به Statistics (Stat Header , Density Vector , Histogram) ۶. بررسی روشهای ایجاد Statistics در SQL Server ۷. بررسی شرایط به روز رسانی Statistics در SQL Server ۸. بررسی روشهای به روز رسانی Statistics در SQL Server ۹. بررسی تغییرات Statistics در نسخه ۲۰۱۴ (بازنویسی روالهای مربوط به آن توسط مایکروسافت) ۱۰. بررسی تاثیر منفی تغییرات Statistics نسخه ۲۰۱۴ بر روی بانکهای اطلاعاتی ۱۱. بررسی مشکلات به روز نبودن Statistics ۱۲. بررسی مشکل Spill to Disk ۱۳. بررسی Filtered Statisticsها
۱. بررسی مفهوم Primary Key و Unique Key ۲. نحوه انتخاب صحیح Primary Key در جداول ۳. Primary Key & Unique Key و ایندکسهای مرتبط به آنها ۴. بررسی مفهوم Check Constraint و تاثیر آن بر کارایی بانک اطلاعاتی ۵. بررسی مفهوم Foreign Key و تاثیر آن بر کارایی بانک اطلاعاتی
خیلی از دوستانی که فیلد یا فیلدهایی را به عنوان Unique Key ایجاد میکنند اطلاعی ندارند که Unique Key توسط یک Unique Non Clustered Index کنترل میشود. چنانچه ما با این مفهوم و همچنین معماری داخلی این ایندکس آشنا باشیم میتوانیم به خوبی از این ویژگی در پروژههای عملیاتی خود استفاده کنیم.
شاید به بانک اطلاعاتی برخورد کرده باشید که چندین سال است کار میکند و به یک باره کند میشود، بیشتر مشکلات کندی مربوط به این نوع برنامهها با یک Rebuuld ساده ایندکس ممکن است حل شود. از این نوع بانک اطلاعاتی زیاد دیدهام کارخانه X ، کارخانه Y و همه افرادی که به طور تخصصی با SQL Server کار کنند را ندارند، حق هم دارند به این مباحث مسلط نباشند، اما این وسط کسی برنده است که با این مباحث آشنایی داشته باشد و بتواند درآمد و سطح دانش خود را افزایش دهد.
۱. بررسی مفهوم Fragmentation ۲. بررسی انواع Fragmentation در SQL Server ۳. بررسی تاثیر استفاده از Fillfactor و Pad_Index بر روی Fragmentation ۴. بررسی روشهای کاهش Fragmentation ایندکسها در SQL Server ۵. بررسی نحوه تنظیم اصولی Fillfactor برای ایندکسها ۶. بررسی نحوه مانیتور کردن Fragmentation ۷. بررسی Rebuild کردن ایندکسها و کاهش Fragmentation ۸. بررسی روشهای مختلف Rebuild کردن ایندکسها ۹. بررسی حالتهای مختلف Rebuild کردن ایندکسها به صورت آنلاین و حالتهای مختلف آن View
۱. معرفی DMVهای مربوط به مانیتور کردن ایندکسها ۲. بررسی ویو مدیریتی Index Usage Stats ۳. بررسی ویو مدیریتی Index Operational Stats ۴. بررسی ویو مدیریتی Index Physical Stats ۵. پیدا کردن ایندکسها تکراری و تصمیمگیری در خصوص وجود یا عدم وجود آن ۶. پیدا کردن ایندکسهای بلا استفاده در SQL Server ۷. بررسی و آنالیز Missing Indexها در SQL Server
پیدا کردن ایندکسهای بلا استفاده
یکی از کارهایی که من همیشه بر روی بانکهای اطلاعاتی انجام میدهم پیدا کردن ایندکسهای بلا استفاده بر روی سرور است. وجود ایندکسهای اضافی بر روی سرور باعث بالا رفتن افزایش Fragmentation ایندکس، افزایش مدت زمان Blocking، افزایش احتمال وجود Deadlock و…. میشود. ما در SQL Server میتوانیم ایندکسهای بلا استفاده را با استفاده از بررسی تعدادی DMV مدیریتی بدست آوریم.
۱. بررسی مفهوم Full text Index ۲. بررسی اصطلاحات تخصصی مربوط به Full text Index در SQL Server ۳. نحوه تنظیم استفاده از Full text Index در هنگام کار با دادههای رشتهای ۴. نحوه تنظیم استفاده از Full text Index در هنگام کار با LOB ۵. بررسی نحوه به روز رسانی ایندکسهای Full text ۶. بررسی نحوه کار استفاده از Full text index در زبان فارسی ۷. بررسی نحوه استفاده از Full text indexها در کوئریهای ۸. معرفی چند بانکهای اطلاعاتی NOSQL در حوزه Full Text ۹. معرفی چند Case Study موفق فارسی در حوزه Full Text با استفاده از NOSQL
پشتیبانی از جستجو به زبان فارسی در Fulltext Search
چند سال پیش در یکی از شرکتهای معتبر نرمافزاری دنبال روشی بودیم که بتوانیم سرعت جستجو در میان متن نامه افزایش دهیم. برای افزایش سرعت جستجو از Full Text Index استفاده کردیم اما روش جستجو با استفاده از این ایندکس Prefix Search است، در این روش جستجو ملاک Search شروع لغات موجود در ایندکس با متن مورد جستجو است برای رفع این مشکل روشی ارائه دادیم که توانستیم جستجو را مانند Like ‘%xxxx%’ در Full text Index پیادهسازی کنیم.
۱. بررسی مفهوم Trigger ۲. بررسی انواع DML Trigger ۳. بررسی کنترل Business Ruleها با استفاده از Trigger و تاثیر آن بر کارایی بانک اطلاعاتی ۴. بررسی استفاده از توابع پر کاربرد هنگام کار با Trigger ۵. بررسی Triggerهای تو در تو و بازگشتی ۶. بررسی تعیین اولویت برای Triggerها
استفاده از تریگر و کاهش کارایی بانک اطلاعاتی
چند سال پیش با مجموعهای که با SQL Server 2008 کار میکرد همکاری داشتم. در یکی از جداول بزرگ این مجموعه در جهت ثبت سوابق تغییرات رکوردهای این جدول از After Trigger استفاده شده بود. پس از آنالیز و بررسی تریگر موجود در جدول متوجه دو موضوع مهم شدیم. 1- ارتباط After Trigger با Fragment شدن جدول 2- افزایش مدت درج و به روز رسانی رکوردهای موجود در جدول برای رفع این مشکلات راهکاری خوب ارائه دادیم.
۱. بررسی مفهوم View ۲. بررسی نحوه ایجاد Partition View و تاثیر آن بر کارایی بانک اطلاعاتی ۳. بررسی نحوه ایجاد ایندکس بر روی Viewها ۴. بررسی نحوه اعمال Clustered Index بر روی Viewها ۵. بررسی نحوه اعمال Non Clustered Index بر روی Viewها
استفاده به جا از Index View در یکی از پروژههایی که برای افزایش کارایی آن درگیر بودم با تعداد زیادی از جداول اطلاعات پایه درگیر بودم که هزینه Join آنها بالا بود با بررسی نوع جداول و فیلدهای مورد استفاده در کوئریها تصمیم به ایجاد Index View در بانک اطلاعاتی مربوط به پروژه گرفتم. استفاده از این ویژگی باعث شد که هزینه مربوط به Join کوئریها حذف گردد.
۱. بررسی مفهوم Function ۲. بررسی انواع Functionها ۳. بررسی Scalar Function و تاثیر آن بر کارایی بانک اطلاعاتی ۴. بررسی In Line Function و تاثیر آن بر کارایی بانک اطلاعاتی ۵. بررسی Multi Statement Function و تاثیر آن بر کارایی بانک اطلاعاتی ۶. بررسی مشکلات مربوط به Cardinality Estimation هنگام کار با Functionها
تاریخ شمسی و چالشهای مربوط به آن یکی از روشهای ذخیره تاریخ در بانکهای اطلاعاتی ذخیره آن به صورت میلادی است اما مشکل زمانی است بخواهیم این تاریخ را به صورت شمسی نمایش دهیم. برای انجام این کار در SQL Server ما میتوانیم Scaler Function استفاده کنیم. این روش توسط اکثر شرکتهای نرمافزاری استفاده میشود، اما زمانی که حجم دادههای موجود در جداول شما زیاد باشد دیگر این روش جوابگوی کار نخواهد بود و باید از روشهای بهینه و مناسبی استفاده کنید.
۱. پارتیشنبندی چیست؟ ۲. چه زمانی باید سراغ پارتیشنبندی جداول برویم. ۳. چگونه یک جدول را پارتیشنبندی کنیم؟ ۴. چگونه ایندکسهای خود را پارتیشنبندی کنیم؟ ۵. معرفی انواع تکنیکهای پارتیشنبندی ۶. آشنایی با تابع $Partition ۷. بررسی نحوه استفاده از File Groupها هنگام کار پارتیشنبندی جداول ۸. پارتیشنبندی و فشردهسازی دادهها ۹. انجام عملیات Merge و Split به ازای پارتیشنها در SQL Server ۱۰. استفاده از ویژگی Incremental Statistics هنگام پارتیشنبندی ۱۱. معرفی Best Practices برای پارتیشنبندی جداول
پارتیشن بندی یک جدول با حجم 900GB در یکی از پروژههای بزرگی که درگیر بودم جدولی در حدود 900 گیگابایت حجم داشت. برای افزایش سرعت عملکرد این جدول تصمیم به پارتیشنبندی جدول بر اساس ماه گرفتیم. مهمترین مزیتی که این تکنیک به ما داد این بود که توانستیم Active Partitionها یا پارتیشنهایی که مراجعه به آنها زیاد میباشد را در دیسکهای پرسرعت قرار دهیم. همچنین ما ویژگی Incremental Statistics را در این جدول فعال کردیم که تاثیر بسیار مناسبی در عملکرد کوئریهایمان داشت. رفتن به سمت Data Partitioning اصولی دارد که ما در این دوره این اصولی دارد که در این دوره این اصول را به خوبی یاد میگیریم.
۱. Temp Table یا جداول موقت چیست؟ ۲. تاثیر استفاده از Temp Table بر کارایی بانک اطلاعاتی ۳. Table Variable چیست؟ ۴. تاثیر استفاده از Table Variable بر کارایی بانک اطلاعاتی ۵. TVP چیست ؟ ۶. تاثیر استفاده از TVP بر کارایی بانک اطلاعاتی ۷. بررسی بانک اطلاعاتی TempDB ۸. بررسی نحوه پیکربندی صحیح بانک اطلاعاتی TempDB ۹. بررسی مفهوم Latch Contention و نحوه کاهش آن در بانک اطلاعاتی TempDB ۱۰. بررسی Trace Flagهای وابسته به Tempdb
تنظیم صحیح بانک اطلاعاتی TempDB بانک اطلاعاتی TempDB یکی از مهمترین بانکهای اطلاعاتی سیستمی موجود در SQL Server است که تنظیم صحیح آن به طور مستقیم در کارایی بانک اطلاعاتی تاثیر دارد. یکی از راههای بهینهسازی TempDB افزایش تعداد Data Fileهای آن به نسبت CPU Coreهای سرور است. اما این افزایش تعداد Data Fileها همراه با آیتمهای دیگر باید انجام شود. خود من این موضوع را در اکثر پروژههای Tuningی که درگیر میشوم انجام میدهم.
۱. بررسی پیشرفته اپراتورها در Execution Plan ۲. بررسی Trivial Plan ۳. بررسی اپراتورهای فیزیکی مربوط به Join (Nested Loop, Merge Join , Hash Join) ۴. بررسی اپراتورهای فیزیکی Aggregate (Stream Aggregate , Hash Aggregate) ۵. بررسی Table Spool ۶. بررسی Parallelism ۷. بررسی Index Query Hint ۸. بررسی Force Order Hint ۹. بررسی Loop, Merge, Hash join Hint ۱۰. بررسی ForceSeek , ForceScan Hint ۱۱. بررسی NoExpancd Expand Hint ۱۲. بررسی Fast N Hint
هدایت کوئری به سمت اجرا به صورت Parallel در کورس قبلی Performance & Tuning یکی از دوستان شرکت کننده در دوره کوئری داشت که پلن اجرایی آن به صورت Serial بوده و زمان اجرای آن بیش از 3 دقیقه بود ما با بازنویسی کوئری مربوطه توانستیم روند اجرای کوئری را به حالت Parallel در بیاوریم. طی این حالت ردیفهای بازگشتی به ازای هر کدام از اپراتورها توانایی اجرای بر روی CPU Coreهای مختلف دارند.
۱. مروری بر مکانیزم Cache کردن Execution Plan در SQL Server ۲. آشنایی با Plan Cache در SQL Server ۳. بررسی DMVهای مربوط به مشاهده Plan Cache ۴. بررسی دستورات مدیریت Plan Cache ۵. بررسی استفاده مجدد از Execution Plan ۶. Parameter sniffing چیست و چگونه بوجود میآید؟ ۷. راهحل رفع مشکل Parameter Sniffing چیست؟ ۸. بررسی تاثیر استفاده از پروسیجرها در افزایش کارایی کوئریها ۹. بررسی تکنیکهایی کاربردی برای ایجاد پروسیجرهای بهینه ۱۰. بررسی استفاده از Dynamic SQL در دستورات TSQL ۱۱. مشکلات Ad-Hoc Queryها چیست؟ ۱۲. Auto Parameterization چیست؟ ۱۳. Plan Guides چیست؟ ۱۴. استفاده ویژگی Adaptive Query Processing در SQL Server ۱۵. استفاده از ویژگی Automatic Query Tuning در SQL Server ۱۶. بررسی تاثیر استفاده از Plan Regression در SQL Server
استفاده از ویژگی Adaptive Query Processing یکی از ویژگیهای جالبی که در SQL Server 2017 ارائه شده مربوط به بهبود پردازش و تهیه Execution Planهای مناسب میباشد. زمانی که کوئری شما در SQL Server اجرا میشود با توجه به Statisticsهای موجود در جدول تعداد رکوردهای بازگشتی تخمین زده شده و بهترین Execution Plan ایجاد میشود. با توجه به اینکه همیشه مقدار Statisticsها به روز نمیباشد امکان ایجاد Planهای نامطلوب در SQL Server وجود دارد، در SQL Server 2017 با استفاده از ویژگی Adaptive Query Processing میتوانیم بر مشکلات مربوط به تخمین تعداد رکوردهای بازگشتی غلبه کنیم. در طی این دوره ما به این ویژگی و همچنین راهکارهای استفاده شده در آن آشنا میشویم.
۱. بررسی مدل اجرایی SQL Server ۲. آشنایی با مفهوم SQL OS ۳. بررسی SQLOS و معماری آن در SQL Server تحت ویندوز ۴. بررسی SQLOS و معماری آن در SQL Server تحت لینوکس ۵. بررسی مفهوم Schedulers در SQL Server ۶. بررسی مفهوم Task در SQL Server ۷. بررسی مفهوم Workers در SQL Server ۸. آشنایی با مفهوم Wait ۹. آشنایی با انواع Waitها ۱۰. بررسی DMVها و DMFها مربوط به استخراج اطلاعات Waitها ۱۱. آشنایی با با CX_PACKET Wait ۱۲. آشنایی با PAGELATCH_ and PAGEIOLATCH Wait_ ۱۳. آشنایی با ASYNC_NETWORK_IO Wait ۱۴. آشنایی با SOS_SCHEDULER_YIELD Wait ۱۵. آشنایی با IO_COMPLETION Wait ۱۶. آشنایی با راهکارهای مربوط به کاهش Waitها مشهور ۱۷. آشنایی با تنظیمات Processor و Thread در SQL Server
بدست آوردن وضعیت Waitها به ازای هر Session از SQL Server 2016 به بعد یک DMV جدید به نام sys.dm_exec_session_wait_stats ایجاد شده است که وظیفه آن استخراج اطلاعات مربوط به Waitهای هر کدام از Sessionها میباشد. ما با این DMV کارهای خوبی میتوانیم انجام دهیم برای مثال میتوانیم یک کوئری را بر روی سرور اجرا و Waitهایی که این کوئری به ازای انجام کار درگیر میشود را استخراج کنیم.
۱. آشنایی با برنامه Performance Monitor ۲. آشنایی با مفهوم Counter و نحوه کار با Counterها در برنامه Performance Monitor ۳. آشنایی با مفهوم Counter و نحوه کار با Counterها در SQL Server ۴. بررسی Counterهای کاربردی مخصوص SQL Server ۵. ایجاد Data Collector در برنامه Performance Monitor ۶. معرفی برنامه مانیتور Apex SQL Monitor
استفاده از برنامههای Monitoring استفاده از برنامههای مخصوص مانیتورینگ باعث میشود که بتوانیم یک Performance Baseline خوب ایجاد کنیم. معمولاً برنامههای مانیتورینگ تعداد زیادی Metric قوی از پیش تعریف شده برای SQL Server دارند که وضعیت هر کدام از آنها را در بانک اطلاعاتی خود ذخیره میکنند. ما میتوانیم با نصب یکی از آنها بر روی سرور مانیتورینگ کارایی بانک اطلاعاتی خود را مانیتور کنیم.
۱. بررسی نحوه ایجاد Trace و اعمال فیلترهای پیشرفته بر روی آن ۲. آشنایی با اصطلاحات رایج در Profiler ۳. بررسی نحوه تعریف Trace برای پیدا کردن کوئریهای کند ۴. بررسی نحوه تعریف Trace برای پیدا کردن Blocking ۵. بررسی نحوه تعریف Trace برای پیدا کردن Deadlock ۶. بررسی ایجاد Server Side Traceها ۷. آشنایی با نحوه آنالیز خروجی برنامه SQL Profiler ۸. بررسی ترکیب خروجی برنامه Performance Monitor و SQL Profiler
ایجاد Traceهای Server Side در برنامه SQL Profiler یکی از بهترین برنامههایی که با آن میتوان مشکلات مربوط به کارایی کوئریها را کشف کرد برنامه SQL Server Profiler است ما با استفاده از این برنامه میتوانیم کوئریهایی که مدت زمان اجرای طولانی دارند را پیدا کرده و مشکلات مربوط به آنها را حل نماییم. فقط باید توجه داشت که برای این که Batch Request سرور کاهش پیدا نکند و سرور بتواند تعداد زیادی Request در ثانیه را پاسخ دهد باید Traceهای خود را به صورت Server Side ایجاد کنیم.
۱. برررسی معماری Query Store ۲. بررسی نحوه پیکربندی بانک اطلاعاتی برای استفاده از Query Store در SQL Server ۳. بررسی DMVهای مرتبط با Query Store در SQL Server ۴. بررسی نحوه Force کردن Planها با استفاده از Query Store ۵. بررسی نحوه استفاده از گزارشهای تکمیلی Query Store
آنالیز کندی سیستم بدون نصب ابزارهای جانبی بانک اطلاعاتی یکی از پروژههایی که درگیر آن بودم SQL Server 2016 بود در جهت افزایش سرعت کوئری نیاز داشتیم به سریعترین نحو ممکن از وضعیت اجرای کوئریها و همچنین Execution Plan آنها اطلاع یابیم. یکی از بهترین ابزارهایی که از نسخه 2016 به بعد در SQL Server تعبیه شده است Query Store نام دارد این ابزار به راحتی آب خوردن امکان انجام این کار را به ما میدهد.
۱. آشنایی با اصطلاحات موجود در حوزه سختافزار سرور ۲. آشنایی با چالشها و مسئال مربوط به Memory ۳. آشنایی با چالشها و مسئال مربوط به Processor ۴. آشنایی با چالشها و مسئال مربوط به Disk ۵. آشنایی با چالشها و مسئال مربوط به Network ۶. آشنایی با مفهوم RAID ۷. آشنایی با انواع RAID ۸. معرفی SSD و تاثیر استفاده از آن در کارایی SQL Server ۹. بررسی مفهوم NUMA و تاثیر آن بر کارایی ۱۰. بررسی تنظیم Maximum Memory در SQL Server ۱۱. بررسی تنظیمات وابسته به سختافزار در SQL Server
انتخاب RAID و تاثیر آن در عملکرد SQL Server یکی از پارامترهای مهم در عملکرد SQL Server عملیات IO میباشد. نوع RAID یکی از فاکتورهای مهمی است که در کارایی SQL Server و همچنین کارایی عملیات IO تاثیر دارد. ما در این دوره با انواع RAID و پارامترهای موثر در آن آشنا میشویم تا بتوانیم به حداکثر Throughput در عملیات IO برسیم.
۱. بررسی مفهوم مجازی سازی ۲. بررسی انواع روشهای مجازی سازی ۳. بررسی Applicationهای مخصوص مجازی سازی ۴. بررسی مفهوم Hypervisor ۵. بررسی انواع Hypervisor ۶. بررسی تنظیمات مناسب ESX برای SQL Server ۷. بررسی تنظیمات مناسب Hyper-V برای SQL Server
آیا از Virtual Machineها باید استفاده کنیم؟ این سوالی است که خیلی از سازمانها از من میپرسند. در پاسخ باید بگویم که با توجه به شرایط و وضعیت برنامهها امکان استفاده از VMها وجود دارد. در اغلب موارد اگر تنظیمات مناسبی بر روی VMها انجام شود میتوانیم کارایی بانکهای اطلاعاتی خود را افزایش دهیم.
۱. آشنایی با معماری Buffer Pool Extension ۲. بررسی دلیل استفاده از SSD به عنوان RAM ۳. آشنایی با نحوه خواندن و نوشتن Pageها در SSD ۴. آشنایی با Extended کردن Buffer Pool در SQL Server بر روی SSD
غلبه بر مشکلات کمبود حافظه RAM یکی از قابلیتهای SQL Server 2014 به بالا امکان Extended کردن Buffer Pool در این روش چنانچه ما مشکل Memory داشته باشیم میتوانیم به کمک SSD بخشی از دادههایی که قرار است در Buffer Pool قرار گیرد را بر روی SSD منتقل کنیم تا کارایی بانک اطلاعاتی به نحوه مناسبی افزایش یابد.
۱. بررسی Resource Governor ۲. بررسی سناریوهای قابل استفاده برای Resource Governor در SQL Server ۳. بررسی نحوه محدود کردن CPU با استفاده از Resource Governor ۴. بررسی نحوه محدود کردن Memory با استفاده از Resource Governor ۵. بررسی نحوه محدود کردن IO با استفاده از Resource Governor ۶. بررسی نحوه ایجاد Classifier Function برای کار با Resource Governor
فراخوانی وب سرویس و افزایش Workload بانک اطلاعاتی چند سال پیش در یکی از سازمانهای دولتی درگیر رفع مشکلات مربوط به کارایی بانک اطلاعاتی بودیم با بررسی که روی سرور انجام دادیم مشخص شد که یک کوئری بهینه (Index Seek) به تعداد زیادی روی سرور در حال اجرا میباشد به طوری که در طی ساعتی خاص امکان کار با سرور مهیا نبوده و سرور به علت فراخوانی مکرر این کوئری بهینه Busy میباشد. با بررسی دقیقتر متوجه شدیم که این کوئری توسط یک وب سرویس در حال فراخوانی است. برای اینکه این وب سرویس کلی Resourceهای سرور را در اختیار نگیرد Resource Governor را پیکربندی کردیم.
۱. آشنایی با مفهوم Lock ۲. بررسی مفهوم Concurrency ۳. بررسی انواع مشکلات رایج هنگام کار با Resourceها به صورت همزمان ۴. بررسی انواع Lock ۵. بررسی مفهوم Blocking ۶. بررسی نحوه بوجود آمدن Blocking ۷. بررسی نحوه پیدا کردن Blocking ۸. بررسی مفهوم Deadlock ۹. بررسی حالتهای مختلف بوجود آمدن Deadlock ۱۰. بررسی روشهای کشف Deadlock ۱۱. بررسی نحوه رفع مشکلات Deadlock و کاهش آن ۱۲. بررسی مفهوم Lock Escalation ۱۳. بررسی مفهوم Isolation Level ۱۴. بررسی انواع Isolation Level ۱۵. بررسی Application Lock ۱۶. بررسی Schema Lock ۱۷. بررسی نحوه طراحی استفاده از Transaction در برنامهها ۱۸. بررسی Delay Durability Transaction و
Blocking و عوامل بوجود آمدن آن خیلی از دوستان فکر میکنند که وقتی کوئری به کندی اجرای میشود عامل آن عدم وجود ایندکس مناسب است. در صورتی که یکی از عوامل کندی اجرای کوئریها Blocking است. یکی از کارهایی که من همیشه در پروژههای خودم انجام میدهم کشف و بررسی عوامل Blocking است. برای انجام این کار باید حتماً با مفهم Blocking آشنا باشید پس از آن میتوان عوامل آن را با استفاده از ابزارهای موجود در SQL Server کشف و مشکلات مربوط به آنها را رفع کرد.
۱. بررسی معماری Memory Optimized Table ۲. بررسی ویژگیهای Memory Optimized Table ۳. بررسی دلایل استفاده از Memory Optimized Table ۴. بررسی انواع ایندکسهای موجود در Memory Optimized Table ۵. بررسی پروسه Garbage Collection ۶. بررسی Offline CheckPoint Thread در هنگام کار با Memory Optimized Table ۷. بررسی وضعیت Log File در هنگام استفاده از Memory Optimized Table ۸. بررسی Statistics هنگام کار با Memory Optimized Table ۹. Transactionها و چالشهای مربوط به آن هنگام کار با Memory Optimized Table ۱۰. بررسی Delay Durability Transaction و تاثیر استفاده از آن در Memory Optimized Table ۱۱. بررسی Native Compiled Stored Procedure ۱۲. بررسی استفاده از TVP از نوع Memory Optimized Table ۱۳. آشنایی با DMVهای و SPهای سیستمی مربوط Memory Optimized Table ۱۴. آشنایی با تغییرات مربوط به SQL Server 2017 به ازای Memory Optimized Table ۱۵. بررسی چند Case Study مناسب برای استفاده از Memory Optimized Table
انجام درخواستها در کمتر از یک میکرو ثانیه زمانی که SQL Server 2014 ارائه شد یکی از مهمترین ویژگیهای آن Memory Optimized Table بود، در آن زمان در یکی از شرکتهای مسئولیت تیم طراحی و توسعه بانک اطلاعاتی با من بود به اصرار من و یکی دیگر از دوستانم قرار بر این شد که بانک اطلاعاتی جداول اصلی این پروژه از نوع Memory Optimized Table انتخاب شود. ما عملیات CRUD مربوط به این جداول را با Natively Compiled Stored Procedure پیاده کردیم و از آن در Entity Framework استفاده کردیم. پس از گذشت چند سال هر موقع به سوابق اجرای کوئریهای مربوط به این پروژه بزرگ نگاه میکنم سرعت اجرای اغلب کوئریهای مربوط به این جداول در حد یک میکرو ثانیه میباشد.(توجه داشته باشید هر یک میکرو ثانیه برابر است با یک میلیونوم ثانیه)
۱. آشنایی با برخی مباحث موجود در Data Warehouseها ۲. آشنای با Columnstore Index ۳. بررسی معماری مربوط به Columnstore Index ۴. آشنایی با مفهوم Batch Mode Processing ۵. بررسی مفهوم Row Group ۶. بررسی Delta store و Delete Bitmap در Columnstore Index ۷. آشنایی با روشهای فشردهسازی مربوط به Columnstore Index ۸. آشنایی با DMVهای مربوط به مانیتور کردن Columnstore Index ۹. بایدها و نبایدهای مربوط به Columnstore Index ۱۰. آشنایی با تغییرات مربوط به SQL Server 2017 به ازای Columnstore Index ۱۱. بررسی نحوه اعمال تنظیمات مناسب برای Bulk Insert در Columnstore Indexها ۱۲. بررسی تاثیر استفاده از Columnstore Index در Data Warehouseها ۱۳. بررسی نحوه استفاده از Columnstore Index در OLTPها ۱۴. بررسی استفاده از Columnstore Index هنگام کار با Memory Optimized Table
استفاده از Columnstore Index در Data Warehouse در یکی از پروژههایی که درگیر بودم جدولی با حدود 2 میلیارد و 400 میلیون رکورد داشتم که روزانه بیش از 10 میلیون رکورد به جدول مربوطه اضافه میشود. هدف ما در این پروژه افزایش سرعت کوئریها بود. با توجه به اینکه اغلب کوئریهای مربوط به این جدول از جنس تحلیلی میباشد. تصمیم گرفتیم از Columnstore Index در آن استفاده کنیم همانطور که در تصویر دقت مشاهده میکنید سرعت اجرای کوئریها به طرز وحشتناکی افزایش پیدا کرد، کوئری که بیش از دو میلیارد و چهارصد میلیون رکورد را در خود درگیر میکند در کمتر از یک ثانیه (300 میلی ثانیه) روی سرور اجرا شد.
۱. آشنایی با نحوه نصب SQL Server در Linux ۲. بررسی ویژگیهای پشتیبانی شده توسط SQL Linux ۳. آشنایی با معماری SQL Linux ۴. معرفی PAL (Platform Abstraction Layer) ۵. بررسی تنطیمات مخصوص Kernel Setting در لینوکس برای SQL Server ۶. مقایسه کارایی SQL Server for Linux و SQL Server for Windows ۷. بررسی تنظیمات Database Instant File Initialization در SQL for Linux ۸. پیادهسازی یک Case Study و اعمال workload بر روی آن در SQL Linux
کارایی SQL Linux خیلی از دوستان از من در خصوص کارایی SQL Linux میپرسند و من هم در پاسخ TPC Benchmark را به آنها معرفی میکنم. در کلاس H مربوط به این Benchmark اوضاع SQL Linux خیلی خوب است و حتی در برخی موارد از SQL Server تحت ویندوز هم عملکرد بهتری داشته است. برای اطلاعات بیشتر در این خصوص میتوانید به این لینک مراجعه کنید. راستی تا یادم نرفته بگم هر موقع لینوکس را میبینم یاد پنگوئن کوچولوی مربوط به اون میافتم.
مسعود طاهری مدرس و مشاور ارشد SQL Server & BI مدیر فنی پروژههای SQL Server و هوش تجاری در نیک آموز، رئیس واحد دیتابیس شرکت پرداخت الکترونیک سداد، کارشناس ارشد تحلیل و طراحی شرکت تجارت الکترونیک پارسیان (PEC co).،مدرس دوره ۲۵ جلسه ای آموزش Performance Tuning در SQL Server،مدرس دوره ۲۵ جلسهای هوش تجاری در SQL Server، مدرس دوره High Availability در SQL Server، سخنران همایش معرفی قابلیت های جدید SQL Server 2016، سخنران بخش هوش تجاری همایش مورد تایید مایکروسافت در سال ۲۰۱۷ در ایران، مشاور SQL Server در شرکت مهندسی رایورز، سازمان کشتیرانی کل کشور و شرکت توسعه رفاه پردیس (بانک رفاه)، مدرس دورههای سازمانی از جمله سازمان بورس، کشتیرانی، شونیز، سازمان زندانها، مرکز آمار ایران، رایورز و…،متخصص، مدرس و مشاور SQL Server و مباحث فوق پیشرفته بانک اطلاعاتی و هوش تجاری می باشد.
پس از ثبت سفارش، به حساب کاربری خود در سایت نیکآموز وارد شده و در بخش «دانلودها» اقدام به دانلود جلسات دوره خریداری شده کنید.
ارسال به تهران: طی ۲۴ ساعت کاری پس از ثبت سفارش، هماهنگی لازم جهت ارسال بسته با پیک توسط تیم پشتیبانی با شما انجام خواهد شد.
ارسال به خارج از تهران: طی ۲۴ ساعت کاری پس از ثبت سفارش، بسته ارسالی با آدرس ثبت شده در پنل کاربری، به اداره پست تحویل داده میشود. زمان ارسال و تحویل بسته به شما، منوط به زمانبندی اداره پست بوده و از ۲ الی ۵ روز کاری متغیر خواهد بود.
این دوره به صورت کامل ضبط شده و آماده میباشد و بعد ثبت سفارش بر روی فلش مموری ارسال میگردد.
با همهگیری بیماری کووید در سراسر دنیا در سال 1398، مجموعه نیکآموز برگزاری کلاسهای حضوری را متوقف کرده و پس از آن تمامی دورههای آموزشی به صورت وبکستی و آفلاین برگزار شده است
با توجه به بازخوردهای مثبت دانشجویان، کلاسهای حضوری صرفاً در صورت برگزاری بوتکمپها و مسترکلاسها خواهد بود و دورههای آموزشی زین پس به همان صورت آفلاین و وبکستی برگزار میشود.
تمام جشنوارهها از یک الی دو هفته قبل از طریق شبکههای اجتماعی اینستاگرام (@nikamooz)، وبسایت مجموعه (www.nikamooz.com) و همچنین ایمیلهای ارسالی به کاربران اطلاعرسانی میگردد.
در صورت تمایل به دریافت فاکتور رسمی، پیش از خرید خود با واحد فروش با شماره 02191070017 تماس حاصل نمایید.
همانگونه که در بخش سفارش سایت ذکر شده است، امکان ثبت فاکتور رسمی در صورت ثبت خرید آنلاین از سایت مجموعه به هیچ عنوان وجود ندارد.
پس ثبت و نهایی شدن سفارش شما در سایت نیکآموز، تیم پشتیبانی طی 24 تا 72 ساعت کاری با شما تماس خواهند گرفت تا فرایند عضو شدن شما در گروه پشتیبانی تلگرامی هر دوره انجام شود.
در صورت وجود هر گونه سوال و ابهامی میتوانید با شمارههای شرکت تماس حاصل فرمایید و یا از طریق بخش چت پشتیبانی سایت، سوالات خود را مطرح نمایید.
Δ
ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
سلام واقعا ممنونم از پاسخگوییتون
با سلام و وقت بخیر دوست عزیز
پوزش ما را در ارتباط با تاخیر در ارسال پاسخ پذیرا باشید به علت اینکه سوال شما کاملا تخصصی بود به کارشناس مربوطه ارجاع داده شد.
خیر. این سناریو شما در دوره بررسی نشده است. ولی در خصوص جداسازی دیتابیس ها، همان طور که خودتان اشاره کردید بیشتر هزینه سرور رو پایین میاورد. البته به این معنا نیست که هیچ تاثیری بر روی Performance نخواهد داشت. کلا مباحث مربوط به Performance همان طور که در دروه اشاره شده است. از کانفیگ SQL Server، منابع سرور و طراحی جداول شروع می شود و . . . . اگر برای شما بحث Performance دیتابیس مهم می باشد. به حداقل موارد اشاره شده دربالا رجوع کنید. و حتما دروه را ملاحظه فرمایید.
با تشکر از شما
سلام وقتتون بخیر ببخشید ی سوال در مورد دوره Performance Tuning سایت داشتم که میخواستم بپرسم این مورد توی دوره بررسی شده یا خیر درحال حاضر پروژه های مدرن دارن به سمت میکروسرویس میرن و طبق قواعد میکروسرویس ها باید بانک اطلاعاتی هر یک از میکروسرویس ها از هم جدا باشند بنظر اکثر متخصصین حوزه برنامه نویسی وب این کار (جداسازی دیتابیس ها) باعث بالا رفتن performance میشه ولی بنظر من این کار بجز اینکه هزینه سرور رو پایین میاره هیچ تاثیر دیگه ای روی performance نداره ازطرفی باوجود IAM Page ها که وظیفه تعیین Page های وابسته به یک Object رو دارند میشه صحبت بنده در رابطه با سطر قبل رو تایید کرد باتوجه به موارد ذکر شده میخواستم بپرسم این مورد توی دوره بررسی شده یا خیر؟ و اگر بررسی نشده ممنون میشم مدرس محترم دوره به این سوال جواب بدن باتشکر
با سلام خدمت تیم خوب نیک آموز و آقای طاهری عزیز واقعا کیفیت دوره از ۱۰۰ نمره ۱۰۰ رو می گیره. فقط منن یک سوال برام پیش اومد و چون غیر حضوری دوره رو دیدم نمی دونستم کجا بپرسم که با عرض پوزش اینجا می پرسم. آقای مهندس در جلسه دوم مبحث انواع داده رو توضیح دادند و مواردی رو ذکر کردند که به اشتباه VARCHAR استفاده شده بود. اما دو سوال برای من به وجود آمده. ۱٫ برای ذخیره FirstName از یک فیلد NVARCHAR(20) اگه استفاده بشه خب یک ۲ بایت اضافه دارد درست، اما اگر تعداد زیادی رکورد با ورودی ‘علی’ داشته باشیم حجم زیادی برای ما ذخیره می شود نسبت به NCHAR(20). در این موارد اگه می شود راهنمایی کنید آقای طاهری. ۲٫ در مثال مورد ۱ به علت متغیر بودن سایز امکان شکسته شدن رکورد و به وجود آمدن Pointer است که خب خیلی توصیه نشد در دوره که همچین اتفاقی بیافته. در کل ممنون میشم از تیم اگر یک راهنمایی برای شرایطی مثل این داشته باشند. در نهایت باز هم برای دوره عالی تشکر میکنم.
با سلام؛
اگر DataType فیلد Firstname از نوع NVARCHAR(20) انتخاب شود و مقدار علی وارد شود ۶ بایت فضا اشغال میکند اما همین فیلد نوع دیتاتایپ NCHAR(20) انتخاب شود و مقدار علی را وارد کنید ۴۰ بایت فضا اشغال میکند. دلیل این موضوع این است که دیتاتایپ نوع NCHAR(20) از نوع Unicode fixed-length بوده و مقدار شما چه یک کارکتر باشد و چند کارکتر فضای ۴۰ بایت را خواهد گرفت و دیتاتایپ NCHAR و سایر دیتاتایپهایی که از نوع NCHAR یا NVARCHAR باشد به ازای هر کاراکتر دوبایت فضا اشغال میکند. برای پاسخ به سوال بعدی شما هم. در زمان طراحی جداول باید با حساسیت بالا و دقیق DataType های مناسب انتخاب شود. یکی از موارد مهم در Performance جداول این می باشد که با توجه به یکسان بودن اندازه رکوردها به طور مثال کلمه هایی مانند: “علی”،”حسن”،”رضا” که بیشترین تعداد رکورد را در سیستم شما دارد. در این حالت می توان از DataType های Unicode fixed-length استفاده کرد،به منظور جلوگیری از شکسته شدن Page و ایجاد Pointer ولی این نکته را باید در نظر داشت که این نوع DataType ها فضای زیادی رو در صورت متغییر بودن اندازه رکوردهای شما اشغال می کنن.