آموزش In Memory OLTP در SQL Server 2016


سرفصل ها و محتوای دوره ی آموزش SQL Server 2016 In Memory OLTP


پیشنیاز دوره:  

آشنایی با اصول برنامه نویسی T-SQL

هدف دوره: یکی از مهم ترین نیازها در پروژه ها، داشتن Performance خوب در هنگام دسترسی به اطلاعات می باشد. برای دستیابی به چنین قابلیتی راه کارهای مختلفی وجود دارند مانند: طراحی درست و بهینه بانک اطلاعاتی و استفاده از سخت افزار مناسب و ... .
در حال حاضر تهیه سخت افزار مناسب، مقرون به صرفه می باشد اما هرچقدر که طراحی منطقی و فیزیکی بانک اطلاعاتی بهینه انجام شوند، بنا به معماری موجود، محدودیتی هایی وجود دارند که باعث میشوند تا Performance لازم را نتوان بدست آورد. محدودیت هایی مانند: 
محدود بودن فضای buffer pool
وجود Locking و Latching برای کنترل همزمانی و ... 


نگرش و معماری جدید در تکنولوژی ای به نام in-memory OLTP در بانک اطلاعاتی SQL Server، بسیاری از این محدودیت ها را از بین می برد و در نتیجه این امکان را فراهم می کند تا سرعت دسترسی به اطلاعات، تا 40 برابر افزایش پیدا کند.

استفاده از این تکنولوژی برای سیستم های OLTP که دارای صدها یا هزاران کاربر همزمان هستند، بسیار مناسب می باشد و به دلیل وجود ویژگی هایی مانند: عدم وجود Locking و Latching، کم شدن I/O، کم شدن بار CPU و ... ، افزایش سرعت قابل توجهی در دسترسی به اطلاعات، حاصل خواهد شد.


سرفصل دوره In Memory OLTP:


چرا in-memory OLTP ؟                              

  • مقدمه 
  • هدف از طراحی in-memory OLTP          
  • معماری in-memory OLTP  
  • دسترسی به جداول memory-optimized
  • بانک اطلاعاتی های In-memory OLTP دیگر

نکات لازم برای انتخاب تکنولوژیin-memory OLTP

  • تحلیل هزینه
  • تحلیل محدودیت ها
  • تحلیل سود
  • ابزار برای اولویت بندی Object های بانک اطلاعاتی جهت انتقال به in-memory OLTP

بانک اطلاعاتی in-memory OLTP

  • مراحل ایجاد بانک اطلاعاتی in-memory OLTP
  • تنظیم Compatibility Level برای بانک اطلاعاتی
  • محدودیت های موجود در سطح بانک اطلاعاتی

جداول memory-optimized

  • انواع جداول memory-optimized در in-memory OLTP
  • ساختار جداول memory-optimized در مقایسه با جداول disk-based
  • ساختار سطر در جدول         
  • Native Compilation روی جدول
  • Data Type های غیر مجاز 
  • لیست محدودیت ها
  • Constraint های پشتیبانی شده
  • استفاده از BIN2 Collation برای فیلدهای کاراکتری
  • استفاده از off-row storage ها
  • استفاده از دستور Alter برای جداول و ایندکس ها
  • استفاده از تکنولوژیHigh Availability 
  • استفاده از Temporal Table برای نگهداری تاریخچه تغییرات در جدول
  • ابزار برای تشخیص ویژگی های پشتیبانی نشده در جداول memory-optimized

طراحی ایندکس در جداول memory-optimized

  • انواع ایندکس های قابل تعریف

  •  Hash Index

 - ویژگی های Hash Index

 - عوامل تاثیرگذار در Performance یک Hash Index

 - موارد منع انتخاب Hash Index

 - کنترل تعداد Bucket ها در Hash Index ها 

 - مثال عملی

  •  Non-clustered Index

 - ویژگی های Non-clustered Index

 - موارد استفاده از Non-clustered Index

 - عامل تاثیرگذار درکارایی یک Non-clustered Index

 - مثال عملی


  •  Columnstore Index

  - ویژگی های Columnstore Index

  - محدودیت های مرتبط با Columnstore Index



  • مقایسه Hash Index و Non-clustered Index همراه با مثال عملی
 - نکات کلی ایندکس ها
 - مانیتور کردن ایندکس های تعریف شده روی جداول


Statistics

  • ساخت Statistics ها
  • بروزرسانی Statistics ها
  • تاثیر منفی بروز نبودن Statistics ها 
  • ابزار برای گرفتن اطلاعات درباره Statistics ها

Memory Consumers and Off-Row Storage 

  • ساختار off-row Storage 
  • تاثیر off-row Storage روی Performance همراه با مثال عملی
  • تعریف Varheap و تحلیل آن همراه با مثال عملی
  • ابزار برای کنترل میزان Memory تخصیص داده شده / مصرف شده برای Object ها در بانک اطلاعاتی In-Memory OLTP

Transaction Processing in In-Memory OLTP 

  • Concurrency Effects در تراکنش ها
  • Transaction Isolation Levels and Concurrency Phenomena در Disk-Base
  • ویژگی های تراکنش برای کنترل همزمانی در in-memory OLTPTransaction Isolation Levels در in-memory OLTP
  • تعریف Snapshot Transaction Isolation LevelValidation های موجود در Snapshot Transaction Isolation Level همراه با مثال عملی
  • Concurrency در Snapshot Transaction Isolation Level همراه با مثال عملی
  • تعریف Repeatable Read Transaction Isolation Level Validation های موجود در Repeatable Read Transaction Isolation Level همراه با مثال عملی
  • Concurrency در Repeatable Read Transaction Isolation Level همراه با مثال عمل
  • تعریف Serializable Transaction Isolation Level Validation های موجود در Serializable Transaction Isolation Level همراه با مثال عملی
  • Concurrency در Serializable Transaction Isolation Level همراه با مثال عملی
  • Write-Write Conflict در in-memory OLTP همراه با مثال عملی
  • Cross-Container Transactions در in-memory OLTP
  • قوانین استفاده از Transaction Isolation Levels در Cross-Container Transactions همراه با مثال عملی

 - Lifetime تراکنش در in-memory OLTP

 - تعریف Key Element های لازم 

 - تغییرات ایجاد شده در سطرها در عملیات DML

 - روال انجام کار در Transaction Lifetime و توضیح فازهای موجود در آن

 - Referential Integrity

  • ابزار برای مانیتور کردن تراکنش ها


In-Memory OLTP Programmability

  • بررسی اجمالی Native Compilation
  • انواع Natively-Compiled Module ها
  • Object های قابل دسترس در Natively-Compiled Module ها
  • ویژگی های پشتیبانی شده در Natively-Compiled Module ها
  • Natively-Compiled Stored Procedure ها
  • Natively-Compiled Scalar User Defined Function ها
  • Natively-Compiled Trigger ها
  • Inline table-valued function ها
  • Memory-Optimized Table Type و Memory-Optimized Table Variable
  • استفاده از Alter برای Natively-Compiled Module ها
  • مقایسه Performance بین natively-compiled module و T-SQL mode همراه با مثال عملی 
  • ابزار برای کنترل عملکرد natively-compiled module ها
  • ابزار برای تشخیص ویژگی های پشتیبانی نشده در natively-compiled stored procedures

Data Storage, Logging, and Recovery

  • Data Storage
  • نحوه ذخیره سازی اطلاعات در in-memory OLTP
  • ویژگی های Checkpoint Pair Files
  • فرایند Checkpoint Continuous و Checkpoint Event
  • مانیتور و تحلیل کردنCheckpoint files 
  • Recovery
  • Transaction Logging

Garbage Collection

  • تعریف و ویژگی های فرایند Garbage Collection در In-memory OLTP
  • فرایند Garbage Collection در in-memory OLTP روی سطرهای قدیمی
  • فرایند Garbage Collection در in-memory OLTP روی Checkpoint file ها
  • مانیتور و تحلیل فرایند Garbage Collection

Deployment and Management

  • نیازمندی های in-memory OLTP برای بخش های مختلف سخت افزار(CPU ،I/OSubsystem،Memory)
  • تخمین مقدار memory مورد نیاز برای in-memory OLTP
  • تخمین مقدار memory مورد نیاز برای Data Row Size در جدول memory-optimized
  • تخمین مقدار memory مورد نیاز برای Hash Index در جدول memory-optimized
  • تخمین مقدار memory مورد نیاز برای Non-clustered Index در جدول memory-optimized
  • تخمین مقدار memory مورد نیاز برای off-row Storage در جدول memory-optimized
  • محدود کردن مقدار memory در دسترس in-memory OLTP
  • مانیتور کردن مصرف memory برای جداول memory-optimized

Backup و Restore بانک اطلاعاتی in-memory OLTP

  • انواع Backup قابل انجام از بانک اطلاعاتی in-memory OLTP
  • Full Database Backup از بانک اطلاعاتی in-memory OLTP
  • Differential Database Backup از بانک اطلاعاتی in-memory OLTP
  • Piecemeal Backup در بانک اطلاعاتی in-memory OLTP
  • Piecemeal Restore کردن بانک اطلاعاتی in-memory OLTP
  • نمونه ای از فرایند Backup  Piecemeal و Piecemeal Restore در بانک اطلاعاتی in-memory OLTP
  • Corruption در جداول memory-optimized