این جلسه بیشتر بر روی مباحث اولیه مربوط به Performance Tuning بررسی شد. بیشتر موضوعات مطرح شده در این جلسه تعاریف اولیه و کلیدی بود که در طی دوره با آن زیاد آشنا خواهیم شد.
در طی این جلسه مباحث زیر بررسی شد
1- بررسی معماری Data Fileها
2- بررسی مفهوم Page
3- آشنایی با دستور DBCC Page
4- آشنایی با Log File
5- آشنایی با نکات کلیدی جهت افزایش سرعت کار با Log File
6- آشنایی با نحوه تعامل SQL با DISK، Memory و Processor
7- آشنایی با مفهوم Buffer Pool
8- بررسی مفهوم CheckPoint
9- بررسی مکانیزم Write-Ahead Transaction Log
10- بررسی LOBها و دلیل علمی عدم استفاده از Data Typeهای (Text,NText,Image) در بانکهای اطلاعاتی
11- بررسی مفهوم Heap و Clustered
12- بررسی دستور Set Statistics IO
13- بررسی دستور Set Statistics Time
14- و…
همچینن در طی این جلسه چندین سناریو بررسی شد که در ادامه به بررسی نمونهای از آن خواهیم پرداخت
1- بررسی معماری لاگ فایل : Log File یکی از فایلهای مهم بانک اطلاعاتی میباشد. SQL Server از این فایل جهت کنترل مکانیزیم Transaction استفاده میکند. معماری Log File به دو صورت میباشد.
1) معماری فیزیکی Log File : درون Log File از تعدادی Virtual Log File یا VLF تشکیل شده است که داخل آن اطلاعات مربوط به Log Recordها ایجاد میشود. ایجاد VLF بستگی به Initial Size و همچنین نحوه رشد Log File دارد که در طی این جلسه درباره این باره بحث شد.
2) معماری منطقی Log File : کلیه تغییراتی که در SQL Server رخ میدهد چنانچه بخواهد به صورت Transactional انجام شود باید Log Recordهای مربوط به آن در Log File ثبت گردد.
در طی این جلسه چندین نکته درباره Performance مربوط به Log File بررسی شد.
2- بررسی Buffer Pool : یکی از بزرگترین بخشهای حافظه RAM متعلق به SQL Server است که محل قرار گیری Data Page، Index Pageها و … میباشد.
برای مشاهده قسمتهای مختلف حافظه متعلق به SQL Server میتوانید از دستور زیر استفاده کنید
[sql]
DBCC MEMORYSTATUS
GO
[/sql]
زمانیکه شما یک کوئری جهت اجرا به DB Engine ارسال میکنید چنانچه Pageهای مورد انتظار این کوئری در Buffer Pool موجود باشد طی عملیات Logical Read توسط DB Engine مورد استفاده قرار میگیرد و اگر این Pageها در Buffer Pool موجود نباشد SQL Server طی عملیات Physical IO آنها را از Disk خوانده و به Buffer Pool منتقل میکند.
البته این وسط کلی اتفاقات دیگر هم رخ میدهد که من از گفتن اون صرف نظر میکنم.
پس متوجه میشویم Buffer Pool یکی از پر استفادهترین قسمتهای حافظه RAM متعلق به SQL Server میباشد. اگر بخواهید بدانید که چه مقدار از Buffer Pool به ازای هر بانک اطلاعاتی تخصیص داده شده است میتوانید از کوری زیر استفاده کنید.
[sql]
;WITH src AS
(
SELECT
database_id, db_buffer_pages = COUNT_BIG(*)
FROM sys.dm_os_buffer_descriptors
GROUP BY database_id
)
SELECT
[db_name] = CASE [database_id] WHEN 32767
THEN ‘Resource DB’
ELSE DB_NAME([database_id]) END,
db_buffer_pages,
db_buffer_MB = CAST(db_buffer_pages / 128.0 AS DECIMAL(6,2))
FROM src
ORDER BY db_buffer_MB DESC;
GO
[/sql]
در طی این جلسه اهمیت Buffer Pool در افزایش کارایی و برخی از دستورات مربوط به مانیتور کردن آن شرح داده شد.
پاسخ به سوال یکی از دوستان در خصوص Hadoop :
یکی از دوستان در این جلسه سوالی در خصوص بانکهای اطلاعاتی NO SQL و مکانیزم ذخیرهسازی آن داشت. بعد از چند دقیقه توضیح (دوستان با یک Search کوچیک میتوانید مباحث اون را پیدا کنید) یکی از قابلیتهای جدید SQL Server 2016 در این خصوص معرفی شد.
این قابلیت جدید PolyBase نام دارد به وسیله این ویژگی در SQL Server 2016 شما میتوانید با یکی از توزیعهای Hadoop ارتباط برقرار کرده و برخی دستورات TSQL را بر روی آن اجرا کنید.
برای مثال فرض کنید یک کلاستر Hadoop با بیش از 100 پتابایت دیتا دارید که اطلاعات فروش یک شرکت بزرگ را نگهداری کرده است حال شما خواهان بدست آوردن آمار فروش بر اساس سال و منظقه جغرافیای هستید کافی است با استفاده از PolyBase ارتباط SQL Server 2016 با Hadoop را برقرار کرده و کوئری خود را در SQL Server 2016 با TSQL بنویسد PolyBase آن را به Hadoop ارسال کرده و این کوئری در کلاستر Hadoopی بر روی سرورها موجود در کلاستر توزیع شده و نتیجه آن در مدت زمان کوتاهی (با توجه به امکانات) در اختیار SQL Server قرار گیرد.
جالب اینکه میتوانید External Taleهای ایجاد شده به واسطه PolyBase را با جداول عادی موجود در SQL Server ، Join بزنید.
لازم میدانم اشاره کنم که این سوال قبل از شروع کلاس توسط یکی از دوستان مطرح شده بود. ضمناً در انتهای این مبحث پروژه Hortonworks جهت راهاندازی یک کلاستر Hadoopی تحت ویندوز معرفی شد.
جهت سفارش این دوره بصورت غیرحضوری لطفا بر روی تصویر زیر کلیک کنید
منبع: آموزش برنامه نویسی نیک آموز
9 دیدگاه
حمیدقلیپور
با سلام و احترام
مجتبی شهریور
سلام
موفق و موئد وسربلند باشید
در کل چند جلسه هست
محمد مهدی حافظیه
خبری از این موارد نیست ؟
شناسایی عوامل کندی
افزایش سرعت کوئری ها با ایندکس
افزایش سرعت کوئری با پارتیشن بندی
بررسی Locking و مباحث آن
TempDB و تاثیر استفاده از آن بر روی سرعت
ارائه چک لیست جهت افزایش سرعت
با توجه به اینکه طول دوره کوتاه بوده و 4 جلسه میباشد
مسعود طاهری
این موضوع جزء مباحثی است که در جلسه سوم و چهارم بحث خواهد شد
aliasghar_bahrami@yahoo.com
سلام
من که خیلی از این جلسه لذت بردم
تا حالا انقدر در مورد مسائلی که پشت پرده sql اتفاق می افتاد ریز نشده بودم مخصوصا قسمت مربوط به log File
work.taromi@gmail.com
سلام فرید عزیز
آیا امکان خرید یک جلسه خاص وجود دارد؟یا باید کل دوره سفارش داده شود؟
با سپاس
فرید طاهری
سلام دوست خوبم
با توجه به اینکه این دره 4 جلسه است، امکان فروش تکی جلسات برایمان مقدور نیست
لطفا بصورت کامل سفارش خود را ثبت کنید.
با احترام
سیدمهدی معصومی
با سلام
جلسه خوبی بود ولی بیشتر به عنوان یادآوری بود و انتظار بیشتری از این جلسه داشتم کاش این یادآوری بیشتر به صورت سریع ازشون عبور می کردیم ولی امیدوارم جلاست بعدی پربارتر باشند
ولی در کل اطلاعات خوبی در رابطه با nosql بدست آمد که به نظرم عالی بود و واقعا استفاده کردم و از توضیحات خوب و عالی آقای طاهری تشکر می کنم
با تشکر از عوامل نیک آموز
فرید طاهری
سلام دوست عزیز
راستش شما و دو سه نفر دیگر از دوستان در دوره Performance شرکت کرده بودند و بقیه دوستان جدید بودند. و باید نکاتی گفته می شد که یک دید کلی بدهد و در جلسات بعد وارد جزئیات بشتری شویم.
نظرات کلاس را تک به تک با مسعود می خوانیم و در موردش صحبت می کنیم ولی پیشنهاد می کنم سرفصل ها در صفحه دوره دانلود کنید و یکبار دیگر آنرا مرور کنید.
با تشکر