Unique Identifier یا همون GUID خودمان یکی از Data Typeها (نوع داده) مشهور در SQL Server است. هدف این Data Type ذخیره کردن شناسههای 16 بایتی Unique (یکتا) میباشد.
در SQL Server برای اینکه بتوانید مقادر GUID یا Global Unique Identifier را ذخیره نمایید. کافی است همانند دستورات زیر بر حسب نیاز یک متغییر و یا یک فیلد از نوع Unique Identifier تعریف نمایید.
DECLARE@XUNIQUEIDENTIFIER SET@X=NEWID() SELECT@XAS'Sample GUID' SELECTDATALENGTH(@X)AS'Data Length' GO
خوب تا اینجا با GUID آشنا شدیم. اما چالش اصلی GUID مربوط به زمانی است که بخواهیم آن را به عنوان Primary Key در جداولمان در نظر بگیریم. این موضوع بیشتر مابین Developerهایی مشاهده میشود که از Entity Framework به عنوان ORMاستفاده میکنند
این افراد ممکن است در شرایطی بخواهند Primary Key(کلید اصلی) جدولشان را از نوع GUID/UniqueIdentifierدر نظر بگیرند.
انتخاب یک فیلد GUID به عنوان Primary Key دارای مشکلات خاصی از لحاظ Performance و کارایی بانک اطلاعاتی میباشد.
در این فیلم آموزشی این مشکل به طور کامل بررسی شده و راهحلی جهت رفع آن ارائه شده است.
نکاتی که در این فیلم آموزشی شما یاد خواهید گرفت عبارتند از:
- آشنایی با Data Type (نوع داده) UniqueIdentifier در SQL Server
- آشنایی با نحوه تخصیص مقدار به یک فیدل GUID
- آشنایی با توابع NewID و NewSequentailID
- آشنایی با مفهوم Default Value
- آشنایی با Clustered Index
- آشنایی با مفهوم Index Fragmentation
- آشنایی با دستور Set Statistics IO ON
- آشنایی با نحوه مشاهده Execution Plan Query
- آشنایی با نحوه تحلیل و بررسی Execution Plan
[دانلود یافت نشد]
5 دیدگاه
سید مهدی ناظم السادات
سلام خدمت استاد ظاهری عزیز :
سید مهدی ناظم السادات
البته جدول NONCLUSTERED هست رو میدونم ولی میخوام بدونم راهش چیه که نظم و ترتیب داشته باشه
مسعود طاهری
در ضمن برای ترتیب می توانید از این نوع ایندکس استفاده کنید
CREATE TABLE [dbo].[Peyment]
(
[Id_Peyment] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
[Ads_Id] [uniqueidentifier] NOT NULL,
[Price] [decimal](18, 5) NOT NULL,
[PaymentDay] [datetime] NOT NULL DEFAULT (getdate()),
[UpdateDate] [datetime] NOT NULL DEFAULT (getdate()),
PRIMARY KEY nonclustered(
[Id_Peyment]
)
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
اما به یاد داشته باشید ساختار این نوع ایندکس با هش ایندکس متفاوت است و هر کدام از آنها معایب و مزایایی دارند
برای کسب اطلاعا تبیشتر به این محصول مراجعه کنید
nikamooz.com/what-is-the-guid-in-sql-server/nikamooz.com/product/using-sql-server-2014-c-sharp/
مسعود طاهری
چند تا نکته
1- در Memory Optimized ما مانند جداول Disk based مفهوم Fill factor+ Fragmentation را نداریم.
2- در Memory Optimized زمانی که از هش ایندکس استفاده می کنید ما یک Bucket داریم که هر عنصری که قرار است در آن درج شود توسط Hash Function یک مقداری به ازای کلید هش ایندکس بدست می آورد و در Bucket درج می شود قرار نیست این درج به ترتیب باشد. موقع خواندن هم عناصر موجود در این Bucket مورد بررسی قرار گرفته شود و… (می توانید مثال خود را با حالت Identity تست کنید )
برای کسب اطلاعات بیشتر در این خصوص می توانید به این محصول مراجعه کنید
nikamooz.com/product/using-sql-server-2014-c-sharp/
در این محصول انواع ایندکس ها در Memory Optimized + معماری آنها + معایب و مزایا و… بررسی شده است
Morteza
سلام بر استاد عزیز
مهندس کارت مثل همیشه عالی بود
shariaty.ir
درود
خطای دانلود میدهد.