C#, .NET, .Net Core
ASP.NET MVC, ASP.NET Web Forms, ASP.NET Core
HTML 5, CSS 3, Javascript, jQuery, Bootstrap
Entity Framework, NHibernate, Dapper
Sql Server, MySql, Oracle
Windows Server, Ubuntu, Debian, Pardus
Xamarin Forms, Android Studio
--- The future of the open web platform is looking very bright!
--- .NET is a free, cross-platform, open source developer platform for building any app.
Google Analytics İzleme
08 Temmuz 2012
sql server - Otomatik guid üretmek (Uniqueidentifier)
SQL Server’da özellikle dağıtık bir veritabanı yapısı (merge replication kullanan tasarımlarda olduğu gibi) tasarlıyorsanız, uniqueidentifier tipini kullanmak istersiniz. Uniqueidentifier tipindeki kolonlarda default değeri NEWID fonksiyonuyla oluşturursunuz. NEWID ile oluşturulan GUID değerlerinin MAC adresi olan network kartlı makinelerde çakışma yapmaması garanti edilmiştir. Böylelikle veritabanları arasında satır aktarımlarında ID çakışmaları sözkonusu olmaz.
Ama eğer uniqueidentifier tipindeki kolonunuzda bir clustered (sıralı) index varsa, önemli bir sorunla karşı karşıyasınız demektir: Oluşturulan her satır, NEWID rassal olarak değer oluşturduğundan ve verinin bu kolona göre sıralı olması gerektiğinden, tablonun herhangi bir yerine insert edilmek zorunda kalabilir. Bu da hem insert performansı üzerinde ve hem de zamanla indeksin yapısını bozduğundan select performansı üzerinde çok kötü bir etki yapacaktır.
SQL 2005′te bu durumu aşmanızı sağlayabilecek bir güzellik var: Kolonun default değeri olarak NEWID fonksiyonu yerine NEWSEQUENTIALID’yi kullanabilirsiniz. Yine bir GUID üretilir. Ama bu yeni değerin özelliği, kolon için önceden oluşturulmuş GUID’lerden büyük olmasının garantilenmesidir. Böylelikle clustered index’te bu kayıt her zaman sona eklenecektir. Yani daha önce bahsi geçen performans sıkıntılarının sebebi ortadan kalkmış olur.
Kaynak:
http://www.webmahsulleriofisi.com/veritabani-2/sql/sql-de-otomatik-guid-uretmek-uniqueidentifier/
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder