مقدمه

SQL Server یک پلتفرم مدیریت پایگاه داده قدرتمند و غنی است که می ‌تواند از طیف گسترده‌ ای از برنامه‌ ها پشتیبانی کند، اما اگر پرس و جوها (Query) به خوبی انجام نشوند یا حجم کاری با بن‌ بست، مشکلات تأخیر و سایر اختلالات در سرویس مواجه شود، هیچ کس به نحوه عملکرد پلتفرم اهمیت نخواهد داد. تنها نگرانی آن ‌ها عملکرد برنامه خواهد بود. این مقاله ۴ روش برتر برای بهبود عملکرد SQL Server را شرح می‌ دهد.

بهترین راه برای اطمینان از اینکه SQL Server می ‌تواند الزامات عملکرد خود را برآورده کند، پیاده‌ سازی یک استراتژی تنظیم عملکرد قوی است که تمام جنبه‌ های محیط SQL Server را در نظر می ‌گیرد. این نه تنها شامل فهرست ‌ها و پرس و جوها که اغلب اهداف اولیه تلاش ‌های تنظیم هستند می ‌شود، بلکه زیرساخت‌های سخت ‌افزار، تنظیمات سرور و پایگاه داده، گزارش ‌ها و فایل‌ های داده، و هر مؤلفه دیگری که از محیط پشتیبانی می‌ کنند را نیز در بر می ‌گیرد.

در این مقاله، ۴ روش برتر برای انجام تنظیمات عملکرد در محیط SQL Server ارائه می‌ دهیم. هر روش به خودی خود یک موضوع به اندازه کافی گسترده است که نیاز به مقاله ‌ای مستقل داشته باشد. به همین دلیل، این شیوه‌ ها – یا دستورالعمل ‌ها – باید تنها به عنوان نقطه شروع در نظر گرفته شوند، با این درک که باید عمیق‌ تر به هر موضوع بپردازید تا درک واضح ‌تری از مسائل به دست آورید. این دستورالعمل‌ ها فقط برای هدایت شما در مسیر تنظیم عملکرد مؤثر هستند و پایه ‌ای برای شروع کار در اختیار شما قرار می‌ دهند.

۱- برنامه‌ ریزی سخت ‌افزار بر اساس الزامات عملکرد

مشکلات عملکرد اغلب می ‌تواند به زیرساخت سخت ‌افزاری نسبت داده شود که از محیط SQL Server شما پشتیبانی می ‌کند. هرچه زیرساخت ‌های خود را بهتر برنامه‌ ریزی کنید، احتمال جلوگیری از مشکلات عملکرد مرتبط با سخت ‌افزار که ممکن است با هر یک از منابع زیر رخ دهد، بیشتر می ‌شود:

  • محاسبه: SQL Server یک برنامه کاربردی با منابع فشرده است که برای مدیریت داده‌ ها و هدایت حجم کاری آن، اعم از تراکنشی، تحلیلی، هوش تجاری، بارهای انبوه یا ترکیبی در نوسان، به قدرت پردازش و حافظه کافی نیاز دارد. هنگامی که پردازنده‌ ها یا حافظه نمی ‌توانند کار خود را به درستی انجام دهند، برنامه‌ ها کمتر پاسخگو خواهند بود و حتی ممکن است از کار بیفتند.

 

  • ذخیره‌ سازی: SQL Server به راه‌حل‌ های ذخیره‌ سازی نیاز دارد که بتواند مقادیر پیش ‌بینی ‌شده داده را مدیریت کند و در عین حال از راه ‌های مختلف دسترسی به داده‌ ها پشتیبانی نماید. در بازار امروز، سازمان ‌ها می ‌توانند از میان طیف وسیعی از گزینه ‌های ذخیره ‌سازی انتخاب کنند، اما تنها برخی از آن‌ ها برای SQL Server عملی هستند. سازمان ‌ها هر چه انتخاب کنند، راه‌ حل ‌های ذخیره‌ سازی آن ‌ها باید بتوانند عملیات ورودی/خروجی لازم را در هر ثانیه (IOPS) ارائه دهند و در عین حال نرخ تأخیر را به حداقل برسانند.

 

  • شبکه: در صورتی که شبکه نتواند با تقاضای بار کاری مطابقت داشته باشد، مشکلات عملکرد نیز ممکن است ایجاد شود. ممکن است SQL Server به خوبی اجرا شده و پرس و جوها برای عملکرد بهینه شده باشند، اما تنگناهای شبکه می‌ توانند زمان پاسخگویی طولانی را ایجاد کنند که برنامه ‌ها را کُند کرده و حتی منجر به وقفه‌ های زمانی شود.

هنگامی که در حال برنامه ‌ریزی برای اجرای SQL Server هستید، باید اطمینان حاصل کنید که زیرساخت شما می ‌تواند عملکرد لازم برای پشتیبانی از تمام بارهای کاری ارائه دهد. اگر قبلاً SQL Server را پیاده‌ سازی کرده ‌اید و با مشکلات عملکردی مواجه هستید، باید سخت‌ افزار موجود خود را ارزیابی کنید تا تعیین نمایید که آیا ممکن است منبع مشکلات شما باشد یا خیر.

۲- هنگام تنظیم نمونه SQL Server خود، عملکرد را مد نظر داشته باشید

مانند سخت افزار، شما باید از ابتدا به عملکرد فکر کنید و این شامل زمانی است که برای اولین بار نمونه‌ های SQL Server خود را راه‌ اندازی می ‌کنید. برای مثال، احتمالاً می ‌خواهید نمونه ‌هایی را برای محیط‌ های مختلف، مانند توسعه و تولید، مستقر سازید یا SQL Server را بر روی دستگاهی که مخصوص آن نمونه اختصاص ‌داده ‌شده است، نصب کنید.

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

هنگام تغییر تنظیمات باید مراقب باشید. به عنوان مثال، شما ممکن است تعداد بالایی از حداکثر تاپیک‌ های کارگر را مشخص کنید زیرا فکر می ‌کنید که عملکرد را بهبود می ‌بخشد، اما متوجه می ‌شوید که برنامه را با مشکل مواجه کرده است. یا شاید فشرده‌ سازی پشتیبان را اجرا کنید و سپس متوجه شوید که این فرآیند از منابع ارزشمند CPU استفاده می‌ کند و بر عملیات هم‌زمان تأثیر می ‌گذارد. هنگام تنظیم پرچم ‌های ردیابی نیز باید با دقت پیش بروید. اگرچه آن ‌ها می‌ توانند برای عیب ‌یابی عملکرد مفید باشند، اما می ‌توانند عملیات را مختل کنند، به همین دلیل است که شما باید قبل از اجرای آن ‌ها در تولید، تغییراتی را که ایجاد می ‌کنید کاملاً مورد آزمایش قرار دهید.

۳- هنگام پیکربندی پایگاه داده خود، عملکرد را در نظر بگیرید.

SQL Server همچنین راه های مختلفی را برای رسیدگی به عملکرد در سطح پایگاه داده ارائه می ‌دهد. به عنوان مثال، می ‌توانید فایل‌ های گزارش و داده‌ های خود را در درایوهای فیزیکی مختلف پیدا کنید، که می‌ تواند اختلاف بین فایل‌ ها را از بین ببرد و در عین حال الگوهای دسترسی مختلف را نیز در نظر بگیرد. علاوه بر این، ممکن است بسته به حجم کاری خود، تنظیمات فایل Autogrowth و Maxsize را برای این فایل‌ ها اعمال کنید.

SQL Server همچنین به شما امکان می ‌دهد تنظیمات را در سطح پایگاه داده پیکربندی کنید، درست مانند آنچه در سطح سرور انجام می‌ دهید. برای مثال، می ‌توانید گزینه‌ های ایجاد خودکار آمار و به ‌روزرسانی خودکار آمار را فعال یا غیرفعال و همچنین به ‌روزرسانی ‌های آمار ناهمزمان را تنظیم کنید. همچنین می ‌توانید سطح سازگاری پایگاه داده را تغییر دهید، که پس از به روز رسانی SQL Server به نسخه جدیدتر مفید واقع خواهد شد.

هنگام پرداختن به مسائل مربوط به عملکرد در سطح پایگاه داده، شما به پایگاه‌ های داده کاربر و ویژگی‌ های آن ‌ها محدود نمی ‌شوید. همچنین ممکن است بتوانید با بهینه‌ سازی پایگاه داده سیستم tempdb، عملکرد را بهبود دهید، که می ‌تواند به روش‌ های غیرمنتظره ‌ای بر عملکرد تأثیر بگذارد، مانند ایجاد مشاجره فراداده یا مشاجره تخصیص شیء. یکی از راه‌ های بهینه ‌سازی پایگاه داده، قرار دادن فایل‌ های آن بر روی دیسک ‌هایی جدا از پایگاه‌ های داده کاربر یا سیستم‌ عامل زیربنایی است. روش‌ های دیگر شامل تنظیم تعداد فایل‌ های داده tempdb یا اندازه آن ‌ها می ‌باشد.

۴- پایگاه داده خود را با در نظر گرفتن عملکرد طراحی کنید.

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

هنگام طراحی پایگاه داده، همچنین مطمئن شوید که مناسب ‌ترین نوع داده را انتخاب کنید؛ مانند استفاده از char به جای varchar برای مقادیر رشته ‌ای که هر دو کاراکتر هستند. همچنین باید نوع داده‌ هایی را که در SQL Server ذخیره می ‌کنید در نظر بگیرید. به عنوان مثال، اغلب بهتر است مسیر تصویر را در پایگاه داده ذخیره کنید تا خود تصویر. استفاده مناسب از کلیدهای خارجی و سایر محدودیت ‌ها نیز می ‌تواند برای عملکرد مفید باشد.

علاوه بر جداول، باید در نظر بگیرید که چگونه سایر اشیاء پایگاه داده می ‌توانند بر عملکرد تأثیر بگذارند. به عنوان مثال، اغلب می ‌توانید با قرار دادن آن پرسش‌ ها در نماها و سپس نمایه‌ سازی نماها (با در نظر گرفتن بهترین شیوه ‌های نمایه ‌سازی) از پرس‌و‌جوهای پیچیده اجتناب کنید. مثال دیگر رویه ذخیره‌شده است که اغلب می ‌تواند عملکرد بهتری نسبت به یک پرس و جوی قابل مقایسه ارائه دهد. با این حال، هنگام ایجاد رویه ‌های ذخیره‌ شده، مطمئن شوید که بهترین روش‌ ها را دنبال می ‌کنید، مانند در بر گرفتن عبارت SET NOCOUNT ON یا عدم استفاده از پیشوند sp_ هنگام نام ‌گذاری رویه‌ ها.

جمع‌ بندی

تنظیم عملکرد یک عملیات یکباره نیست که زودتر انجام دهید و تا زمانی که همه چیز خراب شود آن را به فراموشی بسپارید. این یک تلاش مداوم است که مستلزم توجه دقیق به تمام جنبه ‌های محیط SQL Server در طول عمر آن می ‌باشد. تنظیم عملکرد شامل زیرساخت‌ هایی است که محیط را میزبانی می ‌کند، پرسش‌ هایی که به داده‌ ها دسترسی دارند، فهرست ‌هایی که از پرس‌و‌جوها پشتیبانی می ‌کنند، تنظیمات سرور و پایگاه‌ داده که بر عملکرد تأثیر می ‌گذارند و … .

با این حال هنگام تنظیم محیط باید با احتیاط پیش بروید، تغییراتی را در مراحل قابل مدیریت ایجاد کنید و قبل از اجرای آن‌ ها در تولید، آن تغییرات را به طور کامل آزمایش کنید. مهم ‌تر از همه، تنظیم عملکرد باید به عنوان بخشی جدایی ‌ناپذیر از مدیریت و تلاش‌ های بهینه ‌سازی شما باشد که از اولین راه‌ اندازی محیط SQL Server شروع می‌ شود و تا زمانی که محیط از کار بیفتد ادامه می ‌یابد.