تأثیر Data Typeهای جدید در سرعت SQL Server

بسته آموزشی "10 راهکار عالی برای افزایش سرعت و کارایی SQL Server" - بررسی Data Typeهای جدید SQL Server
بررسی Data Typeهای جدید SQL Server، قسمتي از بسته آموزشی "10 راهکار عالی برای افزایش سرعت و کارایی SQL Server" است، پيشنهاد مي شود، قبل از مطالعه ی Data Typeهای جدید SQL Server، قسمت های قبلی را مرور فرمایید.
3- تأثیر Data Typeهای جدید در سرعت SQL Server
مبحث Data Type یا نوع داده زمانی مطرح می شود که قرار است ما یک فیلد و یا متغییری در SQL Server تعریف نماییم. در این حالت بایستی به ازای فیلد و یا متغیر مورد نظر یک Data Type یا نوع داده تخصیص دهیم.
حالا شما به عنوان کسی که با SQL Server کار می کند هر چقدر با این Data Type ها و مباحث مربوط به آنها بیشتر آشنا باشید بهتر می توانید از قابلیت های آن جهت افزایش کارایی بانک اطلاعاتی سود ببرید.
در زیر انواع داده ها در SQL Server بصورت دسته بندی شده لیست شده است:
داده های متنی
char(n) | رشته ای با طول ثابت، حداکثر 8000 کاراکتر n می تواند عددی بین 1 تا 8000 باشد توجه: اگر 5=n باشد و 2 کاراکتر وارد کنید، 3 کاراکتر باقی مانده با Space پر می شود مزیت این نوع داده در جستجوی سریع آن است | n |
varchar(n) | رشته ای با طول متغیر، حداکثر 8000 کاراکتر توجه: اگر 5=n باشد و 2 کاراکتر وارد کنید، فقط به اندازه 2 کاراکتر فضا اشغال می شود (3 کاراکتر باقی مانده در نظر گرفته نمی شود) مزیت این نوع داده در میزان فضای استفاده شده است | |
varchar(max) | رشته ای با طول متغیر، حداکثر 1,073,741,824 کاراکتر به جای n در مورد قبلی می توان از عبارت max استفاده کرد تا حداکثر فضای امکان پذیر در دسترس باشد | |
text | رشته کاراکتر با طول متغیر، حداکثر 2GB داده متنی |
داده های متنی Unicode
nchar(n) | داده Unicode با طول ثابت، حداکثر 4,000 کاراکتر میزان مصرف این نوع داده دو بایت به ازای هر کاراکتر است. بخاطر این موضوع، n باید بین یک تا چهار هزار تعیین شود | |
nvarchar(n) | داده Unicode با طول متغیر، حداکثر 4,000 کاراکتر | |
nvarchar(max) | داده Unicode با طول متغیر، حداکثر 536,870,912 کاراکتر | |
ntext | داده Unicode با طول متغیر، حداکثر 2GB داده متنی |
داده های Binary
bit | 0، 1 یا NULL | |
binary(n) | داده باینری با طول ثابت حداکثر 8000 بایت | |
varbinary(n) | داده باینری با طول متغیر حداکثر 8000 بایت | |
varbinary(max) | داده باینری با طول متغیر حداکثر 2GB | |
image | داده باینری با طول متغیر حداکثر 2GB |
داده های عددی
tinyint | اعداد صحیح بین 0 تا 255 | 1 byte |
smallint | اعداد صحیح بین 32,767 تا 32,768- | 2 bytes |
int | اعداد صحیح بین 2,147,483,647 تا 2,147,483,648 - | 4 bytes |
bigint | اعداد صحیح بین 9,223,372,036,854,775,807 تا 9,223,372,036,854,775,808- که معادل از منفی 263 تا 263 منهای یک است | 8 bytes |
decimal(p,s) | اعداد با مقیاس (scale) و دقت (precision) ثابت | 5-17 bytes |
numeric(p,s) | اعداد با مقیاس (scale) و دقت (precision) ثابت | 5-17 bytes |
smallmoney | داده های ارزی بین 214,748.3648- تا 214,748.3647 | 4 bytes |
money | داده های ارزی بین 922,337,203,685,477.5808- تا 922,337,203,685,477.5807 | 8 bytes |
float(n) | برای نگهداری اعداد غیر صحیح با تعداد ارقام اعشار متغیر و یا تخمـینـی استفاده میشود (from -1.79E + 308 to 1.79E + 308) | 4 یا 8 bytes |
real | برای نگهداری اعداد غیر صحیح با تعداد ارقام اعشار متغیر و یا تخمـینـی استفاده میشود (from -3.40E + 38 to 3.40E + 38) | 4 bytes |
داده های تاریخ و زمان
این نوع فیلدها برای نگهداری تاریخ میلادی و ساعت استفاده میشود و برای تاریخ شمسی کاربردی ندارد.
datetime | از تاریخ اول January سال 1753 تا سی ویکم December سال 9999 با دقت 3.33 میلی ثانیه | 8 bytes |
datetime2 | از تاریخ اول January سال 0001 (01/01/0001) تا سی ویکم December سال 9999 (31/12/9999) با دقت 100 نانو ثانیه | 6-8 bytes |
smalldatetime | از تاریخ اول January سال 1900 تا ششم June سال 2079 با دقت یک دقیقه | 4 bytes |
date | فقط تاریخ را ذخیره می کند. از تاریخ اول January سال 0001 (01/01/0001) تا سی ویکم December سال 9999(31/12/9999) | 3 bytes |
time | فقط زمان را ذخیره می کند با دقت 100 نانو ثانیه | 3-5 bytes |
datetimeoffset | مشابه datetime2 می باشد به علاوه timeoffset را ذخیره می کند | 8-10 bytes |
timestamp | هر زمان سطری ایجاد یا تغییر داده می شود، یک عدد یکتا ذخیره می شود. داده timestamp وابسته به ساعت داخلی سیستم می باشد و با زمان واقعی مطابقت ندارد. هر جدولی ممکن است یک timestamp متفاوت داشته باشد. به عبارت دیگر در این فیلد ۸ بایتی، تایم لحظهای اجرای دستور نگهداری میشود و کاربرد آن کنترل بروزرسانی همزمان (Concurrency) اطلاعات توسط چند کاربر است. البته در تعداد رکوردهای پایین به کار نمیآید و بیشتر زمانی مورد نیاز است که تعداد رکوردها خیلی زیاد باشد مثلاً ۱۰۰ میلیون رکورد! |
انواع داده ای دیگر
نوع داده | توضیحات |
---|---|
sql_variant | این نوع فیلد، به جز داده های text, ntext, timestamp برای نگهداری انواع داده های دیگر استفاده میشود و نوع آن با توجه به اولین مقداری که در آن قرار میگیرد تعیین خواهد شد. (حداکثر 8000 بایت) چون نوع و حجم فیلد مشخص نیست، لذا تنها یک اشارهگر ۱۶ بایتی در آن قرار گرفته و داده اصلی در فایل جداگانه نگهداری میشود. استفاده از این نوع فیلد، توصیه نمیگردد. |
uniqueidentifier | این فیلد ۱۶ بایتی، به ما کدی Unique یا یکتا میدهد که به اصطلاح GUID میگویند. یکی از کاربردهای آن در Replication است. |
xml | داده هایی با فرمت XML را ذخیره می کند. (حداکثر 2GB) این فیلد بیشتر برای انتقال اطلاعات و دستورات تحت web استفاده میشود و شامل انواع MetaData های مختلف است. این فیلد در SQL 2005 معرفی گردید. |
cursor | این فیلد مربوط به كنترل Cursor است و مرجع یک Cursor در آن ذخیره می شود |
table | نتیجه یک کوری را برای عملیاتهای بعدی ذخیره می کند. |
در ادامه آموزش "تأثیر سخت افزار بر سرعت SQL Server" خواهيد ديد ...!
با خريد بسته آموزشي "تأثیر سخت افزار بر سرعت SQL Server" موارد زير را خواهيد ديد:
- برای استفاده از Data Typeهای رشته ای چه نکاتی را باید رعایت کرد تا کارایی بانک اطلاعاتی بالا رود؟
- روش های ذخیره و بازیابی تاریخ شمسی در بانک اطلاعاتی را معرفی کرده و همچنین اشاره کنید که چه نکاتی در این باره جهت افزایش کارایی بانک اطلاعاتی باید رعایت کرد؟
- کدامیک از Data Type های SQL Server منسوخ شده و نباید از آنها استفاده کرد؟
- و ...
مهندس مسعود طاهری، متخصص، مدرس و مشاور SQL Server و مباحث فوق پیشرفته بانک اطلاعاتی است و بعنوان کارشناس ارشد تحلیل و طراحی شرکت تجارت الکترونیک پارسیان (PECco) مشغول به فعالیت است. همچنین بعنوان مشاور SQL Server در شرکت مهندسی رایورز، مشاور SQL Server در سازمان کشتیرانی کل کشور، برنامه نویس و مدیر بانک اطلاعاتی شرکت ایده گستر (پیشرو در سیستمهای شهرداری و شهرسازی) به مدت ۶ سال فعالیت دارد.
توجه: کیفیت این محصول توسط بیـــاموز تضمین شده است. در صورت عدم رضایت شما، ۷۰ درصد مبلغ پرداختی به حساب بانکی شما بازگشت داده میشود.