خانه SQL Server Optimizing TempDB Performance SQL Server نوشته شده توسط: قاسم گل میری ۱۵ آذر ۱۳۹۴ زمان مطالعه: 6 دقیقه ۰ (۰) مقدمه اندازه و محل قرار فیزیکی از tempdb ده می تواند عملکرد سیستم یا به اصطلاح performance سیستم تاثیر داشته باشد. به عنوان مثال، اگر اندازه Tempdb بیش از حد کوچک باشد بخشی از بار سیستم پردازش ممکن است صرف autogrowing شود که هربار درخواست فضا زمان لازم دارد. فایل های TempDB را به چند فایل مساوی تقسیم کنید تا از حد اکثز پهنای باند storage خود استفاده کنید. توصیه میشود به تعداد هسته های cpu تا ۴ تا فایل بسازید اگر بالای ۸ تا هسته داشتید تعداد فایل برابر تعداد هسته ها تقسیم بر ۲ باشد. در زمان نصب SQL Server 2016 شما می توانید تعداد فایل های Tempdb را مشخص کنید. به طور پیش فرض مقدار آن ۸ است یا به اندازه تعداد هسته های پردازنده شما می باشد.که می تواند تا تعداد هسته های پردازنده افزایش داد. داشتن چندین فایل می تواند کمک کند که سیستم منتظر IO نماند و نیاز به آزاد کردن Buffer Pool بزرگ و حجیم نباشد الگوهای IO اساسا تصادفی منجر شود که استخر بافر نیاز به آزاد کردن فضای طریق lazywriter (ایست های بازرسی از Tempdb نمی صفحات داده خیط و پیت کردن) برای سیستم های با استخر بافر بسیار بزرگ نیست اما * تعداد زیادی از داده ها * از Tempdb. اگر زیر سیستم I / O می تواند بار در سراسر چندین فایل رسیدگی نمی کند، آن را شروع به کم کردن سرعت. recovery mode باید در حالت simple باشد. با توجه به اینکه اطلاعات موجود در TempDB مهم نیستند دلیل ندارد که حالت Full قرار داده شود و Log را بی مورد اشغال کند . بهتر است فایل ها بر روی سریعترین دیسک باشد ترجیحا raid صفر . در TempDB سرعت برای ما مهم است و خطر از دست رفتن دیتا مارو تهدید نمیکند چون دیتای با اهمیتی در این دیتابیس وجود ندارد بنابر این بهتر است فایل ها روی دیسکی که بصورت Raid صفر بسته شده اند ایجاد شوند. tempDB با شرینک خالی نمیشود و تنها راه خالی کردن آن restart کردن SQL Server است. Viewing tempdb Size and Growth Parameters SELECT name AS FileName, size*1.0/128 AS FileSizeinMB,CASE max_size WHEN 0 THEN 'Autogrowth is off.' WHEN -1 THEN 'Autogrowth is on.' ELSE 'Log file will grow to a maximum size of 2 TB.' END, growth AS 'GrowthValue', 'GrowthIncrement' = CASE WHEN growth = 0 THEN 'Size is fixed and will not grow.' WHEN growth > 0 AND is_percent_growth = 0 THEN 'Growth value is in 8-KB pages.' ELSE 'Growth value is a percentage.' END ;FROM tempdb.sys.database_files GO چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش برچسب ها # Buffer Pool# Performance# SQL Server# TempDB# آموزش SQL Server معرفی نویسنده مقالات 1 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده قاسم گل میری پروفایل نویسنده معرفی محصول مسعود طاهری آموزش ۳ در ۱ Performance Tuning در SQL Server 6.700.000 تومان 5.700.000 تومان مقالات مرتبط ۰۶ اردیبهشت SQL Server پایگاه داده برداری چیست؟ بررسی کاربردها، نحوه کار و آینده Vector Database تیم فنی نیک آموز ۰۲ اردیبهشت SQL Server تاثیر ایندکس های Computed-Column روی دستور DBCC CHECKDB تورج عزیزی ۲۶ فروردین SQL Server دستور SELECT TOP در SQL Server تیم فنی نیک آموز ۱۹ فروردین SQL Server راهنمای پیکربندی Authentication و Authorization در SQL Server به بهترین روش تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ بنیامین ۲۲ / ۰۲ / ۹۹ - ۰۲:۱۴ سلام و خسته نباشید ممنون در خصوص مقاله خوبتان ، سوال که دارم اینه که حجم کل دیتابیس temp رو معمولا چقد باید در نظر گرفت؟؟ با توجه به ایمکه شرایط کاری رو بسنجم و حجم دیتا ها و… آیا ۱۰ گیگ مثلا حجم مناسبیه؟؟ یا نه ؟ پاسخ به دیدگاه بنیامین ۲۲ / ۰۲ / ۹۹ - ۰۲:۱۴ سلام و خسته نباشید ممنون در خصوص مقاله خوبتان ، سوال که دارم اینه که حجم کل دیتابیس temp رو معمولا چقد باید در نظر گرفت؟؟ با توجه به ایمکه شرایط کاری رو بسنجم و حجم دیتا ها و… آیا ۱۰ گیگ مثلا حجم مناسبیه؟؟ یا نه ؟ پاسخ به دیدگاه مسعود طاهری ۲۲ / ۰۲ / ۹۹ - ۰۶:۵۷ افزایش دیتا فایل ها به نسبت CPU Core در نظر گرفتن سایز یکسان به ازای هر دیتا فایل (مثال ۵۱۲ مگ یا ۱۰۲۴ مگ) در نظر گرفتن رشد ثابت و نه به صورت درصدی (مثال ۵۱۲ مگ یا ۱۰۲۴ مگ) فعال کردن Trace Flag شماره ۱۱۱۷و۱۱۱۸ در نسخه های قبل از SQL Server 2016 پاسخ به دیدگاه ha_zarabi_vb6@outlook.com ۰۹ / ۰۶ / ۹۶ - ۰۶:۲۸ با سلام و خسته نباشید خدمت شما از بابت این مقاله مفید بسیار ممنونم البته یک نکته ای را بگم بعضی از کاربران سایت تجربیات خودشونو در اختیار کاربران دیگر قرار می دهند این خیلی خوب هست اما کسی که این مقاله یا مقاله هایی را به این شکل می خواند باید ایده را بگیرد و خودش به دنبال کامل بودن مطالب باشد چون در هیچ سایتی در مورد یک موضوع به صورت کامل توضیح نمی دهند آنهم به صورت رایگان هم باشد چون انقدر sql server وسیع هست که شاید بعضی از کاربران که می خواهند مقاله بنویسند از آن جزییات اطلاع نداشته باشند به نظر من بهتر است کاربران ایده را بگیرند و بعد مطالب خود را تکمیل کنند. با تشکر پاسخ به دیدگاه ha_zarabi_vb6@outlook.com ۰۹ / ۰۶ / ۹۶ - ۰۶:۲۸ با سلام و خسته نباشید خدمت شما از بابت این مقاله مفید بسیار ممنونم البته یک نکته ای را بگم بعضی از کاربران سایت تجربیات خودشونو در اختیار کاربران دیگر قرار می دهند این خیلی خوب هست اما کسی که این مقاله یا مقاله هایی را به این شکل می خواند باید ایده را بگیرد و خودش به دنبال کامل بودن مطالب باشد چون در هیچ سایتی در مورد یک موضوع به صورت کامل توضیح نمی دهند آنهم به صورت رایگان هم باشد چون انقدر sql server وسیع هست که شاید بعضی از کاربران که می خواهند مقاله بنویسند از آن جزییات اطلاع نداشته باشند به نظر من بهتر است کاربران ایده را بگیرند و بعد مطالب خود را تکمیل کنند. با تشکر پاسخ به دیدگاه moahammadbidgoli ۲۹ / ۰۳ / ۹۶ - ۰۸:۴۵ با توجه به اینکه اطلاعات tempdb مهم نیست و با ریست کردن پاک می شود درصورتی که در سرور تان رم به اندازه کافی دارین میتونی با استفاده از نرم افزارهایی که رم را به صورت یک هارد در اختیار کاربر میگذارند(مثل ramdisk) کل tempdb رو به داخل رم ببرین و افزایش کارایی را داشته باشین فقط یه مورد فنی که ممکنه پیش بیاد چون درایو های مجازی ساخته شده توسط این نرمافزار ها با ریست شدن پاک میشوند و مجدد هنگام بالا امدن سیستم عامل ساخته میشوند باید این فایل های دیتابیس در روت این درایو ریخته بشه و داخل پوشه ساخته نشود چون عملا بعد از راه اندازی ،ان پوشه وجود خارجی نخواهد داشت و اس کیو ال استارت نخواهد شد پاسخ به دیدگاه moahammadbidgoli ۲۹ / ۰۳ / ۹۶ - ۰۸:۴۵ با توجه به اینکه اطلاعات tempdb مهم نیست و با ریست کردن پاک می شود درصورتی که در سرور تان رم به اندازه کافی دارین میتونی با استفاده از نرم افزارهایی که رم را به صورت یک هارد در اختیار کاربر میگذارند(مثل ramdisk) کل tempdb رو به داخل رم ببرین و افزایش کارایی را داشته باشین فقط یه مورد فنی که ممکنه پیش بیاد چون درایو های مجازی ساخته شده توسط این نرمافزار ها با ریست شدن پاک میشوند و مجدد هنگام بالا امدن سیستم عامل ساخته میشوند باید این فایل های دیتابیس در روت این درایو ریخته بشه و داخل پوشه ساخته نشود چون عملا بعد از راه اندازی ،ان پوشه وجود خارجی نخواهد داشت و اس کیو ال استارت نخواهد شد پاسخ به دیدگاه zahra.ghiasvand88 ۳۱ / ۰۱ / ۹۶ - ۰۵:۱۶ سلام مقالتون خیلی خوب بود. پاسخ به دیدگاه zahra.ghiasvand88 ۳۱ / ۰۱ / ۹۶ - ۰۵:۱۶ سلام مقالتون خیلی خوب بود. پاسخ به دیدگاه vossoughi.h@gmail.com ۲۶ / ۰۹ / ۹۴ - ۰۵:۵۸ خیلی ممنون پاسخ به دیدگاه محمد ۱۶ / ۰۹ / ۹۴ - ۰۷:۱۳ سلام آقای گل میری عزیزتشکر از مقاله ای که ارائه دادید.ابتدای امر باید متذکر بشم که عنوان مقاله ی شما با محتوای مقاله از لحاظ فنی فاصله زیادی دارد.چون بحث بهینه سازی tempDB فقط این یک مورد نیست بلکه مسائل بسیار دیگری در آن دخیل می باشند.مانند Latch Contentionبررسی GAM,SGAM,PFSنحوه سایز دهی به دیتابیس TempDBتاثیر Aggregation Function ها بر TempDBمانیتورینگ و بحث مربوط به Wait هاو…بهتر بودمقاله رو یا بصورت سری ارائه می کردید یا اینکه عنوان رو تغییر میدادید.در ضمن پاراگراف پایین تصویر دارای اشکلات ترجمه ای و همینطور نوشتاری است لطفا آن را اصلاح بفرمایید.با سپاس پاسخ به دیدگاه فرشید علی اکبری ۱۸ / ۰۹ / ۹۴ - ۰۳:۰۶ سلام من هم با نظر آقای ((محمد)) موافقم ولی در هر صورت بابت مطلب تون ممنون… بازم این نکات برای خیلی از کاربران SQL SERVER قابل توجه خواهد بود. موفق باشید. پاسخ به دیدگاه قاسم گل میری ۱۷ / ۰۹ / ۹۴ - ۱۱:۲۸ سلام ممنون از توجهتون مواردی که متذکر شدید را بررسی میکنم . ولی ترجمه ای انجام نشده و این مقاله کوتاه تجربیات محدود بنده در این زمینه بوده است. سپاسگزارم پاسخ به دیدگاه 1 2