معرفی کتاب‌های تخصصی SQL Server | بخش سوم

معرفی کتاب‌های تخصصی SQL Server | بخش سوم

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۲۵ اردیبهشت ۱۴۰۱
آخرین بروزرسانی: ۲۷ خرداد ۱۴۰۳
زمان مطالعه: 15 دقیقه
۰
(۰)

مقدمه

در بخش اول و بخش دوم تعدادی از کتاب‌ها و سرفصل‌های مرتبط معرفی گردید در این مقاله قصد داریم که نگاهی به کتاب‌های تخصصی در زمینه Database Administration یا مدیریت بانک‌های اطلاعاتی داشته باشیم. در این حوزه مسلما کتاب‌های ارزشمندی همواره توسط انتشارات مختلف چاپ شده و یا نسخه‌های جدید پس از ویرایش و اضافه شدن سرفصل‌های جدید معرفی شده‌اند. اما یکی از بهترین منابع، برای اشنایی با این حوزه که جزو مهمترین شاخه‌های علم دیتابیس هست کتاب Pro SQL Server ۲۰۱۹ Administration بوده که انتشارات Appres همواره در این زمینه جزو سرامد‌ترین آن‌ها به شمار می‌رود. در ادامه سرفصل‌های این کتاب معرفی خواهد شد که نسبت به مطالعه این کتاب، دید شفاف و دقیقی حاصل شود. در مقاله قبلی، پیش از این که به تشریح سرفصل‌ها و عناوین کتاب بپردازیم، نکاتی جهت خواندن یک کتاب و یادگیری مفاهیم آن خدمت شما عرض کردیم که قطعا در یادگیری مفایم این کتاب نیز بسیار به شما کمک خواهد کرد. با توجه به این که سرفصل‌ها و جزییات این کتاب نسبت به مرجع قبلی بسیار بیشتر و کامل‌تر هست، لذا با حساسیت بیشتری مجددا تاکید می‌شود که در ابتدا، نسبت به اصول یادگیری و خوانش یک کتاب دید کلی و دقیقی حاصل شود سپس وارد این مباحث جذاب شوید که تجربه لذت بخشی نسبت به آن حاصل شود.

دوره کوئری نویسی نیک آموز

مختصری درباره کتاب

نویسنده در ابتدای کتاب بدین شکل موضوع را شروع کرده است که مخاطبان این کتاب نسبت به مفاهیم اولیه در خصوص نصب، راه اندازی و استقرار نسخه‌های مختلف دید خوب و جامعی پیدا کنند و تفاوت هر یک را به خوبی متوجه شوند. شرح قابلیت نسخه‌ها و امکاناتی که در هر نسخه وجود دارد، دید بسیار خوبی به شما خواهد داد که محصول مناسبی را نسبت به محیط عملیاتی خود انتخاب کنید. در مرحله بعد وارد مباحث مرتبط با دیتابیس شده و مفاهیمی که در رابطه با بهینه‌سازی جداول، ساخت جداول، انواع Data Type‌ها، ایندکس‌ها و مباحث یکپارچه‌سازی دیتابیس هستند را تشریح می‌کند. در قدم بعد، مباحث مرتبط با امنیت و رمزنگاری‌های متفاوتی که در Engine قرار دارد تشریح می‌شود. SQL Server security model and encryption جزو سرفصل‌های اصلی این مبحث بوده که جزییات آن به خوبی تشریح شده است. در مرحله بعد، هدف نویسنده این هست که مباحث Backup/Restore را با جزییات آن تشریح کند تا سرفصل‌های مرتبط با high availability and disaster recovery را بر اساس مطالبی که ارایه شده اموزش دهد. مباحث high availability در سناریو‌هایی اهمیت دارد که همواره میخواهیم دیتابیس در دسترس باشد. محیط‌های عملیاتی مختلف نظیر بانک‌ها یا شرکت‌های که تراکنش‌های زیادی در ثانیه دارند، پیاده‌سازی این گونه مباحث و عملیاتی کردن آن جزو الزامات آن‌ها بوده که حتما باید تسلط خوبی بر روی آن‌ها به دست آورید. قدم بعدی کتاب ارایه تکنیک‌های مرتبط با بهینه‌سازی و رقع مشکلات Query‌ها و بعضا مشکلات سرور هست که تحت عنوان performance troubleshooting and maintenance tasks به آن اشاره شده است. مفاهیم مرتبط با performance troubleshooting دارای زیر شاخه‌ها و روش‌های مختلفی هست که می‌توانید امار مختلف از کلیه عملیاتی که در سرور اتفاق می‌افتد به دست آورید. به عنوان مثال مبحث Extended Events و تفکیک رخداد‌هایی که در این خصوص طراحی شده است بسیار اهمیت دارد.

این که بتوانیم هر رویداد را به خوبی بشناسیم و نسبت به اولویت‌ها، رخداد‌ها و فیلتر‌های آن‌ها تنظیم شود. همگی این مباحث مجددا در سرفصل‌های دیگر این کتاب به تفکیک مورد بررسی قرار گرفته است. به عنوان مثال زمانی که نویسنده، قصد دارد مباحث مرتبط با Locking/Blocking یا Deadlock را تشریح کند از سرفصل‌های قبلی که نقش ابزاری در جهت Capture کردن این اطلاعات را دارند، استفاده کرده است. سرفصل‌های انتهای کتاب به مباحثی نظیر Query Store, Distributed Replay, and PolicyBased Management (PBM) پرداخته شده است.

همان طور که می‌دانید کلیه این تکنولوژی‌هایی که در انتهای کتاب معرفی شده‌اند، شاید به جرات می‌توان گفت کاربردی‌ترین بخش این کتاب باشند. در سلسله مقالاتی که در سایت نیک اموز خدمت شما ارایه شده است، تکنولوژی مرتبط با Query Store و معماری و ساختار آن به همراه کلیه تنظیمات این قابلیت در نسخه‌های مختلف، گزارش‌ها و سایر ویژگی آن را خدمت شما معرفی کردیم. نویسنده علاوه بر مطرح کردن این قابلیت‌ها و تکنولوژی‌های جدید یا بعضا توسعه یافته، نگاهی به این موضوع داشته است که کارهای یک مدیر پایگاه داده باید به شکل روتین و خودکار تنظیم شود تا بتواند به صورت متمرکز، وضعیت سرور را در شرایط مختلف ارزیابی کرده و فرایند ها به صورت خودکار اجرا شوند . در ادامه وارد سرفصل های این کتاب می شویم و ساختار بندی مطالب و محتواهای ان را مورد بررسی قرار می دهیم . سعی کردیم که تمرکز اصلی در کنار سرفصل ها به لینک ها و مطالب مرتبط با هر بخش نیز باشد که بتوانید ادامه این مطالب را در سایت های مرتبط دنبال کنید.

کتاب در چهار قسمت طبقه بندی شده است:

  • Part I: Installation and Configuration
  • Part II: Database Administration
  • Part III: Security, Resilience, and Scaling Workloads
  • Part IV: Performance and Maintenance

در هر بخش مطابق با توضیحاتی که در قسمت بالا ارائه شد، مفاهیم در سرفصل های مجزا و طبقه بندی شده توضیح داده شده است . سعی کردیم که تغییری در محتوا و نوشتار این سرفصل ها اعملا نکنیم تا شما عزیزان با کلمات کلیدی و تخصصی هر بخش به خوبی آشنا بشید . مسلما هر کدام از این بخش ها که در فهرست زیر مشاهده می کنید ، شامل چندین ساعت اموزش و مقالات مختلفی است که در شرایط متفاوت کاربرد هر کدام را به خوبی به تصویر می کشند . لذا حتما باید در کنار عناوین و محتواهای ارزشمند این کتاب ، نگاهی دقیق تر نسبت به مراجع مختلف داشته باشید تا بهترین خروجی از مطالعه این کتاب حاصل شود.

  • Part I: Installation and Configuration
    • Chapter 1: Planning the Deployment
    • Chapter 2: GUI Installation
    • Chapter 3: Server Core Installation
    • Chapter 4: Installation on Heterogeneous Operating Systems
    • Chapter 5: Configuring the Instance
  • Part II: Database Administration
    • Chapter 6: Database Configuration
    • Chapter 7: Table Optimizations
    • Chapter 8: Indexes and Statistics
    • Chapter 9: Database Consistency
  • Part III: Security, Resilience, and Scaling Workloads
    • Chapter 10: SQL Server Security Model
    • Chapter 11: Encryption
    • Chapter 12: Backups and Restores
    • Chapter 13: High Availability and Disaster Recovery Concepts
    • Chapter 14: Implementing AlwaysOn Availability Groups
    • Chapter 15: Implementing Log Shipping
    • Chapter 16: Scaling Workloads
  • Part IV: Performance and Maintenance
    • Chapter 17: SQL Server Metadata
    • Chapter 18: Locking and Blocking
    • Chapter 19: Extended Events
    • Chapter 20: Query Store
    • Chapter 21: Distributed Replay
    • Chapter 22: Automating Maintenance Routines
    • Chapter 23: Policy-Based Management
    • Chapter 24: Resource Governor

درباره نویسنده

نویسنده این کتاب اقای Peter A. Carter هستند، ایشان بیش از ۱۵ سال در زمینه SQL SERVERمشغول به فعالیت‌اند و مدارک مختلف شرکت ماکروسافت که مرتبط با این حوزه و مباحث Windows server هست را دریافت کرده‌اند. همچین ایشان در سال ۲۰۱۱ برنده جایزه MCC از سمت شرکت ماکروسافت شدند که برای ایشان افتخار بزرگی محسوب خواهد شد. تجربه ایشان عمدتا در حوزه‌های مرتبط با Database administration بوده که مقالات و کتاب‌های مختلفی در این حوزه نوشته‌اند. همچنین اقای Ian Stirk به عنوان Technical Reviewer در ویرایش این کتاب در کنار اقای Peter ایفای نقش داشتند. تخصص اصلی اقای Ian Stirk عمدتا بر روی مباحث Performance tuning هست که می‌توانید مقالات ایشان را در سایت www. i-programmer. info مطالعه فرمایید. همچنین صفحه لینکدین ایشان به ادرس www. linkedin. com/in/ian-stirk-bb9a31 را می‌توانید دنبال کنید و از اخرین وبینار‌ها و مقالاتی که ایشان منتشر می‌کنند مطلع شوید.

در این بخش می خواهیم فصل اول کتاب به همراه سرفصل های آن را مورد بررسی قرار دهیم:

  • Part I: Installation and Configuration
    • Chapter 1: Planning the Deployment
    • Chapter 2: GUI Installation
    • Chapter 3: Server Core Installation
    • Chapter 4: Installation on Heterogeneous Operating Systems
    • Chapter 5: Configuring the Instance

همان طور که از عنوان فصل مشخص هست ، نویسنده در این قسمت ، قصد دارد که مبانی صحیح استقرار دیتابیس بر روی سرور های عملیاتی را تشریح کند . این طبقه بندی در این قسمت بدین شکل اشاره شده است :

  • نسخه ایی که قرار هست نصب شود
  • لایسنس های مرتبط با هر نسخه
  • استقرار در محیط عملیاتی یا فضای ابری
  • پیش نیاز های سخت افزاری و نرم افزاری
  • تنظیمات سخت افزاری و نرم افزاری

در این بخش، نویسنده به شرکت ها و بیزینس های مختلف اشاره داشته است که بسته به ماهیت پشتیانی آن ، تفاوت های ان ها را نیز مطرح کرده است . عمدتا با توجه به این که در ایران این موارد زیاد مورد توجه قرار نمیگیرد می توانید از این فصل که در رابطه با Planning the Deployment هست عبور کنید .. اما ذکر یک نکته در این قسمت بسیار مهم هست . عمدتا در استقرار نسخه های جدید شاهد هستیم که وابستگی به نسخه ویندوز سرور و میزان منابع دستخوش تغییراتی شده است . همچنین سرویس هایی مختلفی در نسخه های جدید SQL SERVER اضافه شده که در حین نصب حتما باید دقت داشته باشید بسته به نیاز کلیه این کانفیگ ها انجام شود . قبل از این که هر نسخه ایی را استقرار دهید ، لطفا عناوین مرتبط با Hardware and software requirements را به دقت مطالعه کنید . برای این موضوع در نسخه های اخیر SQL SERVER می توانید از لینک های زیر استفاده نمایید.

نیازمندی های سخت افزای و نرم افزاری برای استقرار SQL SERVER 2-19

https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server-2019?view=sql-server-ver15

نیازمندی های سخت افزای و نرم افزاری برای استقرار SQL SERVER 2016/2017

https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server?view=sql-server-ver15

نیازمندی های سخت افزای و نرم افزاری برای استقرار SQL SERVER در بستر لینوکس

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-ver15#syste

در همین فصل به موضوعی تحت عنوان Minimum Requirements نیز اشاره شده است. عمده این مباحث در رابطه با استقرار منابع سخت افزاری هست که ابتدا کلیه هزینه‌ها بابت استقرار صحیح سرور‌ها به درستی تخمین زده شود که در ادامه مسیر مجبور نباشید هزینه‌های گزافی بابت این موضوع پرداخت کنید. در ادامه یکی از مهمترین مباحثی که در این کتاب بدان اشاره شده است مباحث مرتبط با RAIDبندی کردن هست. کتاب در ادامه ۴ روش RAID کردن را معرفی می‌کند و مزایا و معایب هر کدام را مورد بررسی قرار می‌دهد. با مطالعه این قسمت به راحتی می‌توانید دید کلی نسبت به عملکرد هر نوع از این RAID‌ها کسب کنید.

به عنوان مثال در بخشی از این کتاب برخی موارد اشاره شده است که بهترین عملکرد را بر روی RAID-10 به شما ارایه می دهد:

  • AlwaysOn Availability Groups
  • Database mirroring
  • Snapshot creation
  • Backups
  • DBCC CHECKDB
  • Change data capture
  • Log shipping (both backups, and also if restoring logs WITH STANDBY)

لذا اهمیت بحث RAID ها بسته به سناریو های مختلفی هست که در محیط های عملیاتی پیاده سازی می کنید. در ادامه ، دیسک های SSD مورد بررسی قرارگرفته و عملکرد ان ها تشریح شده است .همچنین تنظیماتی که نیاز هست در سیستم عامل انجام شود به جهت این که استقرار به اصولی ترین شکل ممکن انجام شود توضیح داده می شود . به عنوان مثال یکی از این تنظیمات مرتبط با بحث Group policy های ویندوز هست که بخشی از این در این فصل مورد بررسی قرار گرفته است.

در ادامه، سرویس هایی که در هنگام نصب می توان انتخاب کرد مورد بررسی قرار گرفته است. این سرویس ها شامل:

  • Analysis Services
  • Machine Learning Server
  • Data Quality Client
  • Client Connectivity Tools
  • Integration Services
  • Client Tools Backward Compatibility
  • Client Tools SDK
  • Distributed Replay Controller
  • Distributed Replay Client
  • SQL Client Connectivity SDK
  • Master Data Services

توضیحات هر کدام از این سرویس و کاربرد ان ها خارج از عنوان این مقاله هست. به صورت کلی هدف نویسنده از این فصل ، این بوده که که پلن استقرار و حتی توسعه دیتابیس ها از مرحله ایی که سرور ها و لایسنس ها خریداری می شود تا مرحله ایی که نصب سرویس ها و تظیمات آن انجام می شود منطبق با یک اصول و چهارچوب خاصی باشد که بهترین بازده را از SQL SERVER دریافت کنید.

در فصل دوم می خوانیم

تمرکز این فصل بر روی محیط نصبی SQL SERVER هست . هر کدام از این قسمت ها که در عکس زیر مشاهده می کنید در این فصل مورد بررسی قرار گرفته که دقیقا برای چه کاری از ان استفاده می شود.

نویسنده در ادامه کتاب مراحل نصب را به تفکیک هر قسمت پیش برده است که نشان دهد، تنظیمات نصب SQL SERVER در هر مرحله باید به چه شکلی انجام شود.

به عنوان مثال زمانی که قرار هست سرویس های منتخب نصب شود ، باید تنظیم هر سرویس به چه شکل انجام شود. یا زمانی که قرار هست سرویس ها، با دسترسی های خاصی، خارج از دسترسی های مشخص شده برای Engine اجرا شوند به چه شکل می توانیم این دسترسی ها را مشخص کنیم که هر سرویس متناسب با دسترسی خاصی که برای ان در نظر گرفته شده است اجرا شود:

پس از نصب کلیه سرویس ها ریپورت ها و لاگ های ان را بررسی می کند تا در صورت وجود خطا، بتوانیم مشکل تنظیمات ان بخش را برطرف کنیم.

در فصل سوم می خوانیم

این فصل نحوه استقرار بر روی Window server Core را مورد بررسی قرار داده است. همان طور که میدانید این نسخه از ویندوز سرور شامل محیط گرافیکی نیست و برای سناریو های خاصی مورد استفاده قرار میگیرد که کلیه مراحل نصب نرم افزار ها باید به شکل Command line انجام شود. به همین دلیل در این فصل دستورات و Command هایی را مشاهده می کنید که هر یک در نصب سرویس ها و کانفیگ های مرتبط با سرور تعبیه شده است. به عنوان مثال تب مرتبط با تنظیمات حافظه که در فصل قبلی مشاهده کردید در این قسمت به شکل دستوری قابل اجرا هست. در واقع با استفاده از پارامتر SQLMAXMEMORY می توانیم مقدار حافظه ایی که قرار هست تخصیص داده شود را مشخص کنیم یا به عنوان مثال زمانی که قرار هست ارتقا ورزن SQL SERVER انجام شود اسکریپت های مرتبط با این بخش در این فصل توضیح داده شده است. همچنین خوبی استقرار بر روی این نسخه از ویندوز سرور این هست که خیلی سریعتر کار انجام شده و می توانیم چندین Instance بر روی یک سرور با یک دستور از پیش تعریف شده داشته باشیم. نویسنده در اخر این فصل به این نکته اشاره داشته است که نصب دیتابیس به این روش عملا خیلی سریع تر و راحت تر پیش خواهد رفت.

در فصل چهارم می خوانیم

در این فصل که با عنوان Installation on Heterogeneous Operating Systems معرفی شده است، هدف نویسنده این بوده که نصب SQL SERVER در سیستم عامل لینکوس و Docker را اموزش دهد. در این فصل تنظیمات مرتبط با Docker image به صورت کامل توضیح داده شده است و می توانید برای سیستم عامل هایی نظیر MAC OS از این قابلیت استفاده کنید و Engine را بر روی ان نصب و راه اندازی کنید.

در صورتی که قصد راه اندازی دیتابیس SQL SERVER در محیط داکر را داشتید می توانید از طریق لینک زیر اقدام کنید:

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash

همچنین در صورتی که قصد راه اندازی دیتابیس SQL SERVER در محیط Linux را داشتید می توانید از طریق لینک زیر اقدام کنید:

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-overview?view=sql-server-ver15

سایر توزیع های لینوکس را نیز می توانید از طریق لینک های زیر دنبال کنید:

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-suse?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-red-hat?view=sql-server-ver15

همچنین برای ارتقا ورژن SQL SERVER در این سیستم عامل ها و یا حذف Instance نصب شده می توانید از طریق لینک های زیر اقدام کنید:

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-ver15#upgrade

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-ver15#uninstall

در صورتی که خواستار جزییات بیشتری از نصب دیتابیس SQL SERVER در این محیط ها بودید حتما سرفصل های مرتبط با این موضوع را از طریق همین کتاب دنبال کنید. همچنین فراموش نکنید که نصب SQL SERVER در این سیستم عامل ها هم مانند ویندوز ، نیازمند پیش نیاز هایی هست که باید در نظر بگیرید که کلیه مراحل استقرار به درستی انجام شود.

در فصل پنجم می خوانیم

در این فصل ، پس از این که مراحل اولیه نصب سرویس ها و Engine دیتابیس به پایان رسید، می خواهیم تنظیمات مرتبط با Engine را از جنبه های دیگر مورد بررسی قرار دهیم . لذا در این بخش از جمله مواردی که در عنوان این فصل بدان پرداخته است به شرح زیر هست:

  • sp_configure
  • configurations
  • DBCC TRACEON
  • ALTER SERVER

محوریت این فصل بیشتر بر اساس همین دستوراتی هست که در لیست بالا بدان اشاره شد. همان طور که با تنظیمات مختلف Engine اشنا هستید قطعا می دانید که تنظیمات مهمی در بخش sp_configure وجود دارد و این تنظیمات در چندین حالت مختلف مورد بررسی قرار گرفته است. همچنین در ادامه سرویس ها و تنظیمات مرتبط با SQL SERVER Configuration manager مورد بررسی قرار گرفته است که بیشتر در خصوص دسترسی ها و تنظیم سرویس ها و پورت ها این قسمت مد نظر بوده است. در قسمت sp_configure هم مهمترین پارامتر ها اشاره شده است که باید تنظیمات آن مورد بررسی قرار بگیرد . به عنوان مثال در مورد یکی از مهمترین پارامتر های این قسمت به اسم MaxDop می توان اشاره داشت . تنظیم این پارامتر باید بر اساس یک معیار مشخص انجام شود که کارایی کوئری ها را بالاتر ببرد. بعضا با استفاده از اسکریپت هایی می شود مقادیر پیشنهادی را پیدا کرد . همه این موارد به همراه توضیحات کامل هر پارامتر در این قسمت اشاره شده است.

در قسمت بعدی، هدف نویسنده این بوده است که مهمترین Trace Flag ها را معرفی کند. Trace Flag قابلیت هایی در اختیار شما می گذارد که می توانید بعضا به اطلاعات بیشتری نسبت به خیلی از مواردی که به صورت پیش فرض تنظیم شده اند دسترسی داشته باشید. در ادامه تنظیمات مرتبط با پورت ها و فایروال سرور مورد بررسی قرار گرفته است. پس از این موارد در خصوص دیتابیس های سیستمی توضیحات کاملی ارایه شده که نسبت به هر کدام دید شفاف و جامعی پیدا کنید . همان طور که میدانید دیتابیس TEMPDB یکی از مهمترین دیتابیس های سیستمی هست که موارد استفاده زیادی دارد . این موارد به این شکل ذکر شده است:

  • Sorting and spooling data
  • Hashing data, such as for joins and aggregate grouping
  • Online index operations
  • Index operations where results are sorted in TempDB
  • Triggers
  • DBCC commands
  • The OUTPUT clause of a DML statement
  • Row versioning for snapshot isolation, read-committed snapshot
  • isolation, queries over MARS, and so on

البته لازم به ذکر هست که نسبت به اهمیت دیتابیس TEMPDB به همین موارد اکتفا نشده است. بلکه کلیه DMV های مرتبط با این دیتابیس در این فصل مورد بررسی قرار گرفته است . لیست این DMV ها که در این کتاب بدان اشاره شده است به شرح زیر است:

  • dm_db_session_space_usage
  • dm_db_task_space_usage
  • sys_dm_db_file_space_usage
  • dm_tran_version_store
  • dm_tran_active_snapshot_database_transactions

بهینه سازی دیتابیس Tempdb شامل نکات مختلفی هست که باید در نظر داشته باشید. به همین دلیل ترتیب ارایه مطالب در این کتاب از اولویت بالایی برخوردار هست. به همین دلیل در مرحله اول دید نویسنده کتاب به این شکل بوده که کاربرد و اهمیت این دیتابیس را به خوبی مشخص کند. در مرحله بعد View های سیستمی را معرفی کرده و در مرحله اخر نحوه تعریف Data File ها و استقرار آنها را توضیح می دهد . نکاتی که در این خصوص ارایه شده در مورد Lock هایی هست که بعضا در این دیتابیس شاهد هستیم . به همین خاطر، مطالب این فصل ، برای هر مشکلی که ممکن است در این دیتابیس داشته باشید ، راه حل های جامع و کاملی را ارائه کرده است. همچنین از قابلیت هایی که در ورزن ۲۰۱۹ شاهد هستیم استفاده شده و عملکرد سیستم را نسبت به نسخه های قبل تر مورد بررسی قرار می دهد. در ادامه به بحث مرتبط با Buffer pool اشاره داشته و نکات مرتبط با این موضوع ارایه شده اس

در این بخش می خواهیم فصل دوم کتاب به همراه سرفصل های آن را مورد بررسی قرار دهیم:

  • Part II: Database Administration
    • Chapter 6: Database Configuration
    • Chapter 7: Table Optimizations
    • Chapter 8: Indexes and Statistics
    • Chapter 9: Database Consistency

همان طور که شاهد بودید ، محتوای ارایه شده در فصل اول کتاب عمدتا بر روی مباحث سخت افزاری و تنظیمات پایه ایی SQL SERVER ارایه شده بود. اما در این جا نویسنده با گذر از مطالب ارایه شده ، قصد دارد که کمی وارد دیتابیس شده و قابلیت و تنظیماتی که وجود دارد را مورد بررسی قرار دهد. به عبارتی بخش اول تنظیماتی هست که ممکن است به ازای کلیه دیتابیس هایی که در یک Instance داریم اعمال شود و بخش دوم تنظیماتی هست که بعضا مرتبط با یک یا چند دیتابیس خاص هست.

در فصل ششم می خوانیم

شروع این فصل با موضوع فایل گروپ و دیتا فایل ها هست. مسلما زمانی که حجم اطلاعات ذخیره شده در دیسک ها افزایش پیدا می کند ، نیاز هست که بعضا اطلاعات به دسته بندی های مختلف تقسیم شود. همچنین در هر دسته نیاز هست دیتا فایل های مختلفی داشته باشیم که دیتا مرتبط به صورت توزیع شده در چند بخش قرار داده شود. اهمیت Filegroup و Data File در این فصل بسیار مشهود هست. پس از ارایه نکات مرتبط با این بخش، در خصوص FileStream توضیحاتی ارائه شده. مبحث FileStream مرتبط با طبقه بندی و ذخیره سازی فایل های حجیم که شامل مستندات PDF ، ویدیو ها ، عکس ها ، مقالات و غیره هستند. همچنین زمانی که حجم این اطلاعات بالا می رود و فایل های زیای توسط File Steam ذخیره سازی می شود نیاز هست که گروه بندی فایل های مرتبط با File Stream نیز به دقت انجام شود. در ادامه کلیه این موضوعات تشریح می شود.

در ادامه مبحثی تحت عنوان File and Filegroup Maintenance مطرح شده. زمانی که از منطق FileGroup استفاده می‌کنیم، عملا در هر گروه چندین Data File ممکن است داشته باشیم و ممکن است با چالش‌هایی رو به رو شویم. این چالش‌ها بدین شکل هست که بعضا نیاز هست Data File‌های بیشتری به یک File Group اضافه گردد. یا فضای Data File‌ها افزایش یابد یا بعضا اطلاعات از یک Data File به Data File دیگر منتقل شود. همگی این موارد چالش‌هایی هستند که در ادامه این قسمت نویسنده بدان پرداخته است و توضیحات کاملی ارایه شده است. پس از این موارد Database Scoped Configurations مورد بررسی قرار گرفته است. این موضوع به تنظیماتی اشاره می‌کند که می‌تواند مختص به یک دیتابیس خاص باش و برای سناریو مشخصی بخواهیم تنظیمات را به جای این که در سطح سرور اعمال کنیم به ازای یک یا چند دیتابیس مشخص در نظر بگیریم. پس از بررسی این موضوع انواع Recovery model ‌ها بررسی می‌شود.

تمرکز اصلی نویسنده در این قسمت بر روی مباحث مرتبط با LOG و شیرینک فضای مرتبط با LDF هست که بعضا تنظیم اشتباه هر کدام از این‌ها مشکلاتی را در سرور‌های عملیاتی به وجود خواهد اورد. به همین دلیل، این فصل شامل اسکریپت‌های کاربردی هست که از این موارد جلوگیری شود و در صورتی که تنظیمی به اشتباه اعمال شده بود، به راحتی شناسایی و برطرف شود. مبحث VLFs که ساختار اصلی لاگ فایل را تشکیل می‌دهد، جزو مباحثی پنهانی هست که در سناریو‌های متعددی باعث کندی دیتابیس و عملکرد آن می‌شود. لذا نکات این قسمت به خوبی مطرح شده است. ذکر این نکته نیز در این قسمت لازم هست که در دوره HA نیک اموز، کلیه این موارد با جزییات بسیار کاملتری توسط جناب آقای مسعود طاهری اشاره شده است. مسلما اطلاع از ساختار این موضوعات در کنار تجربه‌هایی از محیط‌های واقعی، لذت پیاده‌سازی این بخش‌ها را چندین برابر خواهد کرد. در دوره مورد نظر که می‌توانید اطلاعات ان را از اینجا دریافت کنید (لینک دوره HA در این قسمت اورده شود)، در دو جلسه، به صورت کامل کلیه حالت‌های مرتبط با پلن‌های بکاپ گیری و انواع Recovery model ‌ها مورد ارزیابی و بررسی قرار گرفته است که می‌تواند مکمل بسیار خوبی در کنار مطالب این کتاب باشد.

در فصل هفتم می خوانیم

در این فصل تمرکز نویسنده بر روی کار با ساختار جداول هست. شروع فصل با بحث Partitioning بوده و کلیه نکات و اسکریپت های مرتبط با این بخش توضیح داده شده است که به چه شکل از همان ابتدا ساختار Partitioning را اعمال کنید. در ادامه به این موضوع پرداخته شده است که ممکن است در ابتدا این ساختار پیاده سازی نشده باشد و مجبور باشید بر روی یک دیتابیس حجیم این کار را انجام دهید. به همین دلیل باید تغییراتی در ساختار Cluster index جداول تراکنشی ان ایجاد کنید که با ارایه مثال هایی این موضوع تشریح شده است.

پس از این موضوع ، بحث فشرده سازی مطرح شده است. همان طور که میدانید فشرده سازی در دو سطح انجام می شود. در سطح Page و در سطح Row. این که تفاوت این دو نوع فشرده سازی چیست و عملا مکانیزم کاهش حجم دیتا به چه شکل انجام می شود در این فصل مورد بررسی قرار گرفته است.

در ادامه بحث انواع مختلف فشرده سازی نیز تشریح شده است. مباحث مرتبط با Columnstore Compression که بعضا در انبار داده ها شاهد هستیم، نوع دیگری از فشرده سازی است که بسیار کارایی بالایی را برای شما به همراه خواهد داشت. در این مبحث، عنوانی وجود دارد به اسم Compression Level که مشخص می کنید میزان فشرده سازی در چه سطحی انجام شد. Memory-Optimized Tables ها عنوان بعدی هست که در این فصل بررسی می شود . این که بتوانیم جداولی داشته باشیم که به سمت حافظه هدایتشان کنیم و از سرباری که ممکن است فرایند های Blocking داشته باشد، به صورت کلی توضیح داده شده است. در ادامه Table Memory Optimization Advisor و Natively Compiled Stored Procedures که در رابطه با بحث In-memory OLTP هست نکات ان ارائه شده است.

در فصل هشتم می خوانیم

محوریت این فصل بر روی مباحث ایندکس و Statistics ها هست. همان طور که می دانید در SQL SERVER چندین نوع ایندکس وجود دارد که هر کدام در شرایط خاصی مورد استفاده قرار میگیرد. مبحث شناخت ایندکس ها و ایجاد ان ها به عنوان یک بحث، و مبحث نگه داری از ایندکس ها و مدیریت آن به عنوان یک موضوع دیگر در این فصل از هم تفکیک شده است. در ابتدا با انواع ایندکس ها و پارامتر های هر کدام به خوبی اشنا خواهید شد، سپس بحث مدیریت ایندکس ها را یاد خواهید گرفت .در فصل قبل اشاره کوچکی به مبحث Columnstore Indexes داشتیم. در این فصل با جزییات بیشتری ساختار این ایندکس ها مورد بررسی قرار گرفته است. همچنین ایندکس هایی که می توانیم در جداول مرتبط با In-Memory داشته باشیم توضیح داده شده است. دقت داشته باشید که در مقاله قبلی که در خصوص پلن های اجرایی بود، مشاهده کردید که اپراتور های مختلف با الگوریتم های مختلف و شرایطی که کوئری به ان سمت هدایت می شود، بعضا در پلن های اجرایی مشاهده می شوند. لذا شناخت پلن های اجرایی نیز ، برای درک ساختار ایندکس ها از اهمیت بالایی برخوردار هست.

در فصل نهم می خوانیم

یکی از پر چالش‌ترین وظایف هر DBA این هست که به صورت پیوسته، یکپارچه بودن فایل‌های دیتابیس را مورد بررسی قرار دهد. بعضا در شرایطی سناریو سخت‌تر نیز می‌شود. تصور کنید که یک کسب و کار زنجیره ایی هست و در مکان‌های مختلف شعب مختلفی دارید. از طرفی کلیه این مراکز باید با دفتر مرکزی ارتباط داشته باشند و اطلاعاتی رد و بدل شود. پس تعداد دیتابیس‌ها بسیار بیشتر از چیزی هست که حتی فکرش را می‌کنید. به همین خاطر باید نسبت به یکپارچه بودن وعدم تغییر یا مشکل در فایل‌های حساس سیستم، مراقب زیادی کنید. حالا شرایطی را در نظر بگیرید که با وجود این که کلیه این موارد را در نظر داشتید، مشکلی در دیتابیس مشاهده شود یا خطاهایی دریافت کنید که کلا دیتابیس را از دسترس خارج کند. در این شرایط باید چی کار انجام داد؟ به همین دلیل در این فصل عمدتا بر روی خطاهایی تمرکز تمرکز شده که به این خاطر به وجود می‌اید. عنوان فصل با Consistency Errors شروع شده است. در ادامه چندین خطا بررسی شده که در چه صورت به وجود می‌اید و روش حل آن به چه شکل هست. اما نویسنده در ادامه به این موضوع پرداخته که Detecting Consistency Errors را چگونه شناسایی کنیم؟ برای این موضوع روش‌هایی که برای تایید اصالت و سالم بودن Page‌های سیستمی در اختیار داریم را توضیح داده. در ادامه مقاله اسکریپت‌هایی ارایه شده که بتوانید suspect_pages‌ها را به راحتی شناسایی کنید. موضوع البته به همین جا ختم نمی‌شود و بعد از این که دیتابیس‌های کاربر مورد بررسی قرار گرفت، نویسنده به سمت دیتابیس‌های سیستمی رفته و بحث System Database Corruption را توضیح داده است. این که در این دیتابیس‌ها زمانی که Corruption رخ می‌دهد به چه صورت می‌توانیم این موضوع را شناسایی و برطرف کنیم. در ادامه مقاله دستورات مرتبط با DBCC به صورت کامل مورد بررسی گرفته است.

دستورات DBCC کاربرد بسیار زیادی دارند و پارامتر های مختلفی برای شناسایی و اصلاح Page های سیستمی دارند. این طبقه بندی مطابق با سایت ماکروسافت بوده و بدین شکل مطرح شده است:

  • Informational Statements
    • DBCC INPUTBUFFER
    • DBCC SHOWCONTIG
    • DBCC OPENTRAN
    • DBCC OUTPUTBUFFER
    • DBCC PROCCACHE
    • DBCC SHOW_STATISTICS
    • DBCC SQLPERF
    • DBCC TRACESTATUS
    • DBCC USEROPTIONS
  • Validation Statements
    • DBCC CHECKALLOC
    • DBCC CHECKCATALOG
    • DBCC CHECKCONSTRAINTS
    • DBCC CHECKDB
    • DBCC CHECKFILEGROUP
    • DBCC CHECKIDENT
    • DBCC CHECKTABLE
  • Maintenance Statements
    • DBCC CLEANTABLE
    • DBCC DBREINDEX
    • DBCC DROPCLEANBUFFERS
    • DBCC FREEPROCCACHE
    • DBCC INDEXDEFRAG
    • DBCC SHRINKDATABASE
    • DBCC SHRINKFILE
    • DBCC UPDATEUSAGE
  • Miscellaneous Statements
    • DBCC dllname (FREE)
    • DBCC HELP
    • DBCC FLUSHAUTHCACHE
    • DBCC TRACEOFF
    • DBCC FREESESSIONCACHE
    • DBCC TRACEON
    • DBCC FREESYSTEMCACHE
    • DBCC CLONEDATABASE

دستوراتی که در گروه DBCC قرار دارند بعضا بر روی دیتابیس هایی با حجم زیاد، با تاخیر اجرا می شوند. به دلیل این که کلیه Page ها قرار هست مورد بررسی قرار گرفته شود. به همین دلیل سناریو های مختلفی هست که این سربار را به محیط های عملیاتی وارد نکنیم و در سرور های ثانیه این کار را انجام دهیم. کتاب موضوعی را با عنوان Offloading to a Secondary Server معرفی کرده است و مزایا و معایب این روش را برای بررسی این دستورات ارایه کرده است. برای مطالعه این مباحث و دستوراتی که در بالا اشاره شد می توانید از طریق لینک زیر جزییات هر دستور را مطالعه بفرمایید. در این فصل به مهمترین دستورات اشاره شده است و بعضا خیلی از دستورات دیگر توضیح داده نشده است:

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-transact-sql?view=sql-server-ver15

تا اینجا دو فصل اول کتاب را مورد بررسی قرار دادیم و ملاحظه فرمودید که عناوین کتاب چه قدر گسترده و کامل این موضوعات را مطرح کرده است. لذا حتما مباحثی که در این دو قسمت ارایه شد را به صورت مجزا در مستندات ماکروسافت نیز مطالعه فرمایید و با جنبه های دیگر این دستورات و کاربرد هر یک به خوبی اشنا بشوید. در ادامه کتاب مباحث پیشرفته تری ارایه شده است که به ان خواهیم پرداخت.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
دانلود مقاله
معرفی کتاب‌های تخصصی SQL Server | بخش سوم
فرمت PDF
26 صفحه
حجم 3 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران