"Küçültmek" istediğimiz bu büyük veri tabanımız (> 1 TB) var. Veritabanı bir ana varlık etrafında döner, buna "Ziyaret" diyelim. Tartışma için, bunun tıbbi bir uygulama için bir veritabanı olduğunu varsayalım.
Her biri "Ziyaret" için bir alt tablo olan, örneğin "ziyaret_immuno" olmak üzere, prosedür, yıllık, takip, bağışıklama vb. Gibi toplam 30 ziyaret "tipi" vardır.
Veritabanı 2000 yılından bu yana yaklaşık 12 yıllık veri biriktirmiştir. Birisi "canlı" versiyonda yaklaşık 3 yıllık veri tutmamızı ve gerisini "old_data" veritabanında yayınlamayı önermiştir. Tarih SADECE normalleştirildiği için "Ziyaret" tablosunda saklanır. Ziyaret tablosu ayrıca bir ROWVERSION
sütun ve BIGINT
sahte kimlik (kümelenmiş) sütun içerir. Tüm niyetler ve amaçlar için, kümeleme anahtarının bir SEQUENCE (SQL Server 2012 Enterprise) tarafından doldurulduğunu varsayalım - buna ad vereceğiz cid
.
Her visit.date
zaman kümeleme anahtarıyla aynı sırada değildir, örneğin bir doktor genişletilmiş ziyaretlere gittiğinde ve onun "evrak çantası" ile döndüğünde, ana tabloya birleştirilir. "Ziyaret" tablosunda, ROWVERSION
sütunun hem cid
ve hem de date
sütunlarla senkronize olmamasına neden olacak bazı güncellemeler de vardır - basitçe söylemek gerekirse, bu nedenle ROWVERSION
ne cid
uygun bölme anahtarları ne de yapar.
"Canlı" veri kaldırmanın iş kuralı, visit.date
36 aydan uzun olması ve bir alt visit_payment
kayıt bulunması gerektiğidir. Ayrıca, "old_data" veritabanı dışında temel tabloları içermez visit%
.
Sonuç olarak:
Canlı DB (günlük kullanım) - Tüm tablolar Eski Veri DB - visit%
tablolar için eski veriler
Teklif , iki veritabanındaki tablolar arasında BİRLİKTE TÜM temel tablolarda (hariç ) artı Görünümler içinde TÜM taban tablolara Eş Anlamlılar içeren bir kabuk olan bir Kombine DB'yi çağırır .Live DB
visit%
visit%
DB'de aynı dizinlerin oluşturulduğu varsayıldığında, Old-Data
sorgular UNION-ALL Görünümlerinde iyi performans gösterecek mi? UNION-ALL Views için yürütme planını ne tür sorgu modelleri tetikleyebilir ?