بهینه سازی نوع داده های SQL – بخش اول

 
amirpetrucci0261
amirpetrucci0261
کاربر طلایی1
تاریخ عضویت : تیر 1388 
تعداد پست ها : 27726
محل سکونت : http://zoomstar.ir/

بهینه سازی نوع داده های SQL – بخش اول

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

ملاحظاتی درمورد کلید اولیه

شاخصهای دسته ای برای فیلدهای کلید اولیه در نرم افزار SQL server پیش فرض می باشند . که گفته میشود چندین فاکتور درمورد انواع داده ها مهم هستند . برای این بحث، ما فرض می کنیم کلید اولیه شما شبیه شاخص دسته ای است چون آن دیدگاهی برتر می باشد.


هر نوع داده ای که شما برای کلید اولیه تعیین می کنید (معمولا شاخص دسته ای) شامل هر شاخص غیر دسته ای بصورت ارجاعی همانند بازگشت به ردیف اولی است .


برای مثال اگر شما نوع داده ای تاریخ و ساعت را نسبت به نوع عدد صحیح به عنوان کلید اولیه تعیین کنید هر یک از شاخصهای غیر دسته ای افزوده ای چهار بایت بیشتر در هر ردیف خواهد بود زیرا شاخص غیر دسته ای باید مقدار کلید اولیه را در خود نگه دارد. در جداولی با بیش از دو بیلیون ردیف، این سریعا می تواند بیش از 4.2 گیگا بایت را در هر شاخص غیر دسته ای افزایش دهد. شما تاثیری را روی CPU ،ورودی، خروجی و RAM مشاهده خواهید کرد که سریعا در این سناریو انباشته خواهند شد .

ملاحظاتی درمورد انواع خاص داده ها

در حال حاضر ما در اینجا از انواع داده های بد استفاده شده صرف نظر می کنیم .


معمولا به هنگام ذخیره کردن مقدار تاریخ و ساعت، هرکس به عنوان پیش فرض در نظر می گیررد نوع داده های datetime را بدون توجه به smalldatetime . نوع داده ای datetime بصورت دو عدد صحیح ذخیره میشود با دقت معادل 3.33 میلی ثانیه از یک ژانویه 1753 تا سی و یک دسامبر 9999. با این وجود، برای بسیاری از عملیات بانک اطلاعاتی، اینگونه محدوده و عدد و رقم دقیق ضروری نیست. نوع داده های smalldatetime بصورت یک عدد صحیح ذخیره میشود دقیق معادل یک دقیقه و در حد فاصل یک ژانویه، 1900 تا شش ژانویه، 2079.


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


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


انواع اعداد صحیح عبارتند از : عدد صحیح خرد0-255، (1 بایت)، عدد صحیح کوچک (-32،768-32،767،2 بایت) ، عدد صحیح 2،147،483،648-2،147،483،647) 4 بایت( و عدد صحیح بزرگ ) 9،223،372،035،854،775،808-9،223،372،036،854،775،807، 8 بایت).


این اعداد صحیح اغلب در کلیدهای اولیه و شاخصهای غیر دسته ای بکار می روند بنابراین، انتخاب کوچکترین نوع داده های موجود از لیست بسیار مهم است .


فقط انتخاب یک نوع داده بزرگ در نرم افزار SQL server وسوسه انگیز است، اما این کار برای برنامه ریزی کردن روی نیازهای ضروری در پنج تا ده سال آینده بهتر است . پس هنگامی که CPU ها، ورودی، خروجی و RAM پهنای باند بیشتری برای پشتیبانی از انواع بزرگتر داده ها دارند، شما همواره می توانید نوع داده را به یک نوع داده بزرگ تبدیل کنید .

جمعه 12 آذر 1389  3:18 AM
تشکرات از این پست
دسترسی سریع به انجمن ها