Kümelenmiş dizin oluşturma artık şart - neden?


9

Daha önce, bana (her zaman) kümelenmiş dizinlerin dahil edilip edilmeyeceğine / önleneceğine dair tartışmalar / tartışmalar vardı.

Eh, bazen uygun + spesifik amaçlar ve bağlam ile kullanılacaklarını anladım.

SQL Azure Veritabanı Kümelenmiş Dizin Gereksinimi :

"SQL Azure, kümelenmiş dizinleri olmayan tabloları desteklemiyor. Tablonun kümelenmiş bir dizini olmalıdır. Kümelenmiş bir kısıtlama olmadan bir tablo oluşturulursa, tabloya bir ekleme işlemine izin verilmeden önce kümelenmiş bir dizin oluşturulmalıdır"

önceki sonuçlara, gerekçe ve açıklamalara uymuyor.

Herhangi bir istisnasız, kümelenmiş dizinlerin her yerde sık sık dayatılmasının önceki açıklamalarından kaçırdığımın mantığı nedir?


4
SQL Azure, bildiğiniz gibi SQL Server'dan farklıdır. Azure, verilerinizi birden fazla fiziksel makinede depolayan dağıtılmış bir veritabanıdır. Bu yüzden.

1
Azure SQL Veritabanı Hizmeti'nin v12'sinde, kümelenmiş dizin içermeyen bir tablonuz olabileceğini unutmayın.
Troy Hunt

Yanıtlar:


11

SQL Azure İçinde Oku :

SQL Azure, uygulama veri depolaması için mantıksal veritabanları sağlar. Gerçekte, her abonenin verileri, birden çok kez depolanır ve tek bir veri merkezinde üç fiziksel sunucuya dağıtılan üç SQL Server veritabanında çoğaltılır. Birçok abone aynı fiziksel veritabanını paylaşabilir.

Kümelenmiş anahtarlar, verilerinizin üç kopyasının senkronize tutulabilmesi için gereklidir. W / oa anahtarı, hangi satırların güncellendiğini bilmek mümkün değildir. Yığınlar (kümelenmiş dizin içermeyen tablolar) yalnızca fiziksel 'anahtarlara' (fileid: pageid: slot) sahiptir ve 3 mantıksal veritabanının kopyaları fiziksel veritabanını diğer mantıksal veritabanlarıyla paylaştığından , bir sunucudaki fiziksel adresin bir anlamı yoktur dolayısıyla yığınlar çoğaltılamaz.


Kümelenmiş bir dizinde (mantıksal) anahtarın bulunması gerekmez. Kümelenmemiş olabilir. Belki de (muhtemelen benzersiz?) Kümelenmiş bir dizinin gerekli olmasının gerçek nedeni, yığınların RID'leri kullanması, oysa benzersiz kümelenmiş dizinlerin kullanılmamasıdır. Demek istediğin bu muydu?
'20:23

3
Bağlantılı belgeden: "SQL Azure'daki temel yüksek kullanılabilirlik ve çoğaltma teknolojisi, B-Ağacı satırlarını çoğaltmaya dayanır.". Bir öbek bir NC anahtarına sahip olsa bile, yalnızca NC'yi çoğaltabilirsiniz, ancak yığının kendisini değil.
Remus Rusanu


1

Azure, uzak sunucularda dağıtılmış, bulut tabanlı bir sistemdir. Veriler muhtemelen birden fazla sürücüde / sunucuda depolanacak ve bunu bir yığın üzerinde yapmak son derece verimsiz olacaktır (çünkü sistem hangi makineyi kontrol edeceğini bilmeli ve kümelenmiş bir dizin olmadan bu kaynak yoğun bir işlemdir) .

Kümelenmiş dizin, tablodaki tüm satırlar ve diğer tüm dizinler için bir arama sağlar, bu nedenle masmavi her işlem yapılmadan birden çok makinede tablo taraması olur.


2
Bu doğru olabilir , ama şu anda doğru değil. Bağladığım makaleyi okuyun, istek yönlendirmenin nasıl çalıştığını ve sorgularınızın neden her zaman tek bir kutuda çalıştığını ve asla birden fazla sunucuya yayılmadığını açıklar. Yani. parçalanma yok.
Remus Rusanu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.