|
Resmi belgeler
Bölüm tablosu oluşturmak için yüksek düzey adımlar 1. Bir dosya grubu oluşturun (oracle tablosuna benzer), tabii ki oluşturamazsınız, tüm bölümleri tek bir dosya grubuna koyabilirsiniz 2. Bir bölümleme fonksiyonu oluşturun ve verileri hangi aralığa göre dağıtın 3. Bir bölümleme şeması oluşturun, bölüm fonksiyonunu ve dosya grubunu ilişkilendirin, bölüm fonksiyonu veriyi birkaç aralığa böler, birkaç dosya grubunu ilişkilendirmeniz gerekir, tabii ki, bu bölüm aralıklarını aynı dosya grubuna da koyabilirsiniz 4. Bir tablo oluşturun ve imar düzenini ilişkilendirin
Karşılaşılan bir hata Tablo yapısını dışa aktarmak için doğrudan sağ tıkladığınızda, bölüm bilgisini dışa aktaramazsınız ve tablonun bölüm bilgilerini yalnızca veritabanı görevi oluşturan betikten sağ tıklayarak dışa aktarabilirsiniz
Bölüm tablosundan bazı sonuçlar: 1. Bölünmüş alanların mutlaka indekslenmesi gerekmez 2. Bölümlenmiş alanlar, kümelenmiş indeksler veya nokümelenmiş indeksler olarak oluşturulabilir 3. Bölümlenmiş alanlar, ister kümelenmiş indeksler olsun ister kümelenmiş indeksler, ilişkili bölme şemaları olmadan kümelenmiş indekslere yeniden inşa edilir ve bölümlenmiş tablo bölünmemiş bir tablo haline gelir 4. Sıradan bir tabloyu bölümlenmiş bir tabloya dönüştürün, sadece tabloda kümelenmiş bir indeks oluşturun ve kümelenmiş indeks üzerindeki bölme şemasını kullanın. Örneğin, bölünmemiş bir tablonun 1. alanı kümelenmiş bir indeks oluşturduğunda ve bir bölümleme şemasıyla ilişkilendirildiğinde, tablo bölünmüş bir tabloya dönüştürülür ve bölünmüş alan alan 1 olur. 5. Bölümlenmiş tabloyu normal bir tabloya dönüştürün; eğer indeksli bir bölüm alanı varsa, bölümlenmiş alanı kümelenmiş bir indeks olarak yeniden oluşturun ve bölüm şemasıyla ilişkilendirilmeyin; eğer bölüm alanının indeks yoksa, bölüm alanı yeni kümelenmiş bir indeks oluşturabilir ve bölüm şemasıyla ilişkilendirilmez 6. Normal bir tabloyu bölüm tablosuna veya bölüm tablosunu sıradan bir tabloya dönüştürmek ancak kümelenmiş indeksler kullanılarak sağlanabilir; çünkü kümelenmiş indekslerde endeks organizasyon tabloları kullanılır ve tabloların yeniden dağıtımı kümelenmiş indekslerin yeniden inşası yoluyla gerçekleşir. Sıradan tablo bölümlenmiş bir tablo olursa, bölüm alanını kümelenmiş bir indekse yeniden yapılandırın ve bunu bölüm şemasıyla ilişkilendirin; eğer bölüm tablosu normal bir tablo olursa, bölüm alanını bölme şemasını ilişkilendirmeden kümelenmiş bir indekse yeniden inşa edin. 7. Bir bölüm tablosu oluşturmak için, benzersizlik kısıtlaması bir bölme sütunu içermelidir 8. Bir bölümleme şeması oluşturulurken, dosya gruplarının sayısının bölüm fonksiyonunun bölüm aralığı segmentiyle eşleştiğinden emin olmak gerekir ve dosya grubu adının çoğaltılması fark etmez. 9. Bölümleme fonksiyonları ve bölme şemaları bir veritabanındadır, tüm örnekle yüzleşmez 10. Bölme tablosu çok büyük ve disk alanı kaplamak için boyut değişmiyor ve bazı alanlar silindikten sonra da boyut değişmiyor
Bir bölüm tablosu oluşturma adımları 1.1. Dosya grubu oluşturma örneği veritabanını alter test1 dosya grubu bölüm1 ekle; veritabanı test1'i alter dosya grubu part1000 ekle; alter database test1 add filegroup part2000; alter database test1 file group part3000 ekle; alter database test1 dosya grubu part4000 ekle; 1.2. Bir dosya örneğini oluştur ve bir dosya grubunu ilişkilendir VERITABANINI DEĞIŞTIR TEST1 DOSYA GRUBUNA DOSYA(NAME = TEST1part1,FILENAME = 'G:\test1part1.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DOSYA GRUBUNA 1 EKLE; VERITABANINI DEĞIŞTIR TEST1 DOSYA GRUBUNA DOSYA (NAME = TEST1part1000,FILENAME = 'G:\test1part1000.ndf',SIZE = 5MB, MAXSIZE = 100MB,FILEGROWTH = 5MB) DOSYA GRUBUNA PART1000 EKLE; VERITABANINI DEĞIŞTIR TEST1 DOSYA GRUBUNA (NAME = TEST1part2000,FILENAME = 'G:\test1part2000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) DOSYA GRUBUNA PART2000 EKLE; VERITABANINI DEĞIŞTIR TEST1 DOSYA GRUBUNA DOSYA(NAME = TEST1part3000,FILENAME = 'G:\test1part3000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) DOSYA GRUBUNA PART3000 EKLE; VERITABANINI DEĞIŞTIR TEST1 DOSYA GRUBUNA DOSYA(NAME = TEST1part4000,FILENAME = 'G:\test1part4000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DOSYA GRUBUNA PAR4000 EKLE; 2. Bir bölme fonksiyonu kurmanın bir örneği olan bölüm fonksiyonu partfun1 olarak adlandırılır BÖLÜM FONKSIYONU OLUŞTUR partfun1 (int) DEĞERLER IÇIN SOL ARALIKTA ('1000','2000','3000','4000') --VALUES ('1000', '2000', '3000', '4000') tablonun 5 bölgeye ayrılacağını gösterir; bu bölgeler tablo alanlarındaki değerlerin büyüklüğüne göre bölünür, beş bölge en küçüktür - 1000, 1000-2000, 2000-3000, 3000-4000, 4000-en büyük 3. Bir şema kurma örneği, partfun1 bölüm fonksiyonunu ve dosya grubunu ilişkilendirin BÖLÜM ŞEMASI OLUŞTUR partschema1 BÖLÜM OLARAK partfun1 TO (bölüm 1, bölüm 1000, bölüm 2000, bölüm 3000, bölüm 4000); --Part 1, part1000, part2000, part3000, part 4000 dosya grupları üzerine inşa edilmiştir BÖLÜM ŞEMASI OLUŞTUR partschema2 BÖLÜM OLARAK partfun1 TO (BÖLÜM 1,[ILK],[ILK],[ILK],[ILK];[PRIMARY]); --Part 1, [PRIMARY] dosya grubu üzerine inşa edilmiş, bölüm 1'i [PRIMERARY] ile değiştirmek sorun olmaz, böylece [PRIMARY] dosya grubu üzerine inşa etmeye benzer olur BÖLÜM ŞEMASI OLUŞTUR partschema3 BÖLÜM OLARAK partfun1 ALL TO (bölüm 1); --hepsi part1 dosya grubu üzerine inşa edilmiştir BÖLÜM ŞEMASI OLUŞTUR partschema4 BÖLÜM OLARAK partfun1 HEPSI ([PRIMARY]); --hepsi [PRIMARY] dosya grubu üzerine inşa edilmiştir 4. Bir bölme tablosu oluşturma örneği TABLO OLUŞTUR PARTTABLE1( [ID] [int] NULL DEĞİL, [IDText] [nvarchar] (max) SIFIR [Tarih] [tarih saati] NULL) ON [partschema1](ID); parttable1'e değerler (1,'1',getdate()-4 ekleyin; parttable1 değerlerini (1001,'1001',getdate()-3'e ekle; parttable1 değerlerini (2001,'2001',getdate()-2'ye ekleyin; parttable1'e değerler (3001,'3001',getdate()-1) ekleyin; parttable1 değerlerini (4001,'4001',getdate()) içine ekle; 5. Bölüm tablosunun verilerini doğrulayın SEÇ * PARTTABLE1'DEN; --Bölüm tablosunun tüm satırlarını döndürür SEÇ farklı $PARTITION. [partfun1] (4) PARTTABLE1'DEN; --ID alanı değeri 4 olan satırı bölmeye ayıran döndürmeler PARTTABLE1'den * SEÇİN, burada $PARTITION. [partfun1] (ID)=2 --2. bölümdeki tüm satırları döndürür, ID bölüm alanı ID'sidir Not: SELECT * FROM parttabletable1 tuşunu kullanamazsınız, $PARTITION. [partfun1] (ID)=2 sonucuna sahip olursa, bu bir bölümlenmiş tablo olduğu anlamına gelir ve bu makalenin son test 7'si bölümlenmemiş bir tablodur, ancak SELECT * FROM parttable1 burada $PARTITION. [partfun1] (ID)=2 hala bir sonuç var
Yeni bölümler 1. Bölüm şeması için kullanılabilecek bir dosya grubu belirtin (bölüm şeması için bir dosya grubu ekleyin). 2. Bölümleme fonksiyonunu değiştirin (bölüm fonksiyonunun veri aralığını ekleyin) DEĞİL BÖLÜM ŞEMASI BÖLÜMCİKİŞİKİ KULLANIM [ÖNCELİ] ALTER PARTITION FUNCTION partfun1() SPLIT RANGE ('4500') sys.indexes i'den p.partition_number,p.rows iç birleştirme sys.partitions p on p.object_id = i.object_id ve i.object_id = object_id('parttable2') sırasını 1 olarak seçin --İlk ifade, eğer bölüm şeması ALL TO ([primary]) kullanıyorsa, bu ifadenin çalıştırılması gerekmez --İkinci ifadeye yeni bir bölüm ekleniyor, aralık 4000-4500 arasındadır --Üçüncü cümle, yeni bölümün var olup olmadığını ve satırlar olup olmadığını doğrular.
Delete\Merge partition ALTER PARTITION FUNCTION partfun1() MERGE RANGE ('2000') 1000-2000 bölünmesi silindi ve 1000-3000 ile birleştirildi --Oracle gibi ALTER TABLE TABLENAME DROP PARTITIONNAME çalıştırılamak;
Bölüm tablosunu ve ilgili dosya grubunu sil Silme sırası şudur: bölüm tablosunu sil, bölüm şemasını sil, bölüm fonksiyonunu sil ve son olarak dosya grubunu sil, dosya grubu silindikten sonra ilgili dosya silinir
Bölümlenmiş bir tabloyu normal bir tabloya, normal bir tabloyu ise bölümlenmiş bir tabloya dönüştürme örneği AÇIK TABLO parttable1; TABLO OLUŞTUR PARTTABLE1( [Id] [int] IDENTITY(1,1) NOT NULL, [İsim] [varchar] (16) BOŞ DEĞIL, [Id2] [int] NOT NULL ) ON partschema1(Id2); parttable1 değerlerini ('1',1) ekleyin; parttable1 değerlerini ('1001',1001) ekleyin; parttable1 değerlerini parça tablosuna ekleyin ('2001',2001); parttable1 değerlerini ('3001',3001) içine ekleyin; parttable1 değerlerini ('4001',4001) içine ekleyin; 1. Bölüm tablosunda oluşturulan benzersiz kısıtlama, bir bölüm sütunu içermelidir. ALTER TABLO PARTTABLETABLE1 KISITLAMA EKLE PK_prattable1_id BIRINCIL ANAHTAR KÜMELENMIŞ ([ID] ASC) Hata Sütunu 'Id2', 'PK_prattable1_id' indeksinin bölümleme sütunudur. Benzersiz bir indeks için bölüm sütunları, indeks anahtarının bir alt kümesi olmalıdır. 2. Bölüm sütununda id2'de yeni bir kümelenmiş indeks oluşturun, parttable1 hâlâ bölümlenmiş bir tablo olarak kalır parttable1(id2)'de kümelenmiş indeks CI_prattable1_id2 oluşturun; 3. Bölüm sütunu id2 kümelenmiş olmayan bir indeks oluşturur ve parttable1 hâlâ bölümlenmiş bir tablodur Part table1'de drop index CI_prattable1_id2; parttable1(id2)'de kümelenmiş olmayan indeks NCI_prattable1_id2 oluşturun; 4. Bölünmemiş sütun id sütunu, kümelenmiş bir indeks, parttable1 veya bölümlenmiş bir tablo oluşturur; bu da bölünmemiş sütunun küme indeks sütunu olabileceğini gösterir parttable1(id)'de kümelenmiş indeks CI_prattable1_id oluşturun; 5. Bölüm sütunu ID2, kümelenmiş olmayan bir indeks olarak yeniden oluşturulmuş ve bir bölümleme şeması kullanmaz; parttable1 hâlâ bir bölüm tablosudur parttabletable1(id2) ÜZERINDE (DROP_EXISTING = ON) ILE [PRIMER] ÜZERINDE KÜMELENMIŞ OLMAYAN INDEKS NCI_prattable1_id2 OLUŞTURUN; 6. Bölüm sütunu id2, ON koşulu olmadan kümelenmiş bir indekse yeniden oluşturulur ve parttable1 hâlâ bir bölüm tablosu olarak kalır parttable1'de drop index CI_prattable1_id; Part table1'de drop index NCI_prattable1_id2; parttable1(id2)'de kümelenmiş indeks CI_prattable1_id2 oluşturun; parttabletable1(id2)'de (DROP_EXISTING = ON) ILE kümelenmiş indeks CI_prattable1_id2 oluşturun; 7. Bölümlenmiş sütun id2, ON koşuluyla ancak bölme şeması kullanılmadan kümelenmiş bir indeks haline getirilir ve parttable1 bölünmemiş bir tablo haline gelir parttabletable1(id2) ÜZERINDE (DROP_EXISTING = AÇIK) ILE [PRIMERARY]'DA KÜMELENMIŞ INDEKS CI_prattable1_id2 OLUŞTURUN; 8. Bölüm sütunu id2 kümelenmiş bir indeks haline getirilir ve bölümleme şeması kullanılarak parttable1 bölümlenmiş bir tablo haline gelir partstable1(id2)'de (DROP_EXISTING = ON) ile parttable1(id2)'de kümelenmiş indeks CI_prattable1_id2 oluşturmak; 9. Yukarıdaki 8'deki kümelenmiş indeks silindikten sonra, parttable1 hâlâ bölümlenmiş bir tablo olarak kalmıştır Part table1'de drop index CI_prattable1_id2; 10. Bölüm sütunu ID2, kümelenmiş bir indeks olarak oluşturulur ve bölümleme şemasını kullanmaz; parttable1 ise bölünmemiş bir tablo haline gelir parttabletable1(id2) üzerinde [PRIMERARY] üzerinde kümelenmiş indeks CI_prattable1_id2 oluşturun; 11. Yukarıdaki 10'un kümelenmiş indeksi silindikten sonra, parttable1 hâlâ bölünmemiş bir tablodur Part table1'de drop index CI_prattable1_id2; 12. Bölüm sütunu id2, yeni olarak kümelenmiş olmayan bir indeks olarak oluşturulmuştur, ancak bölme şeması kullanılsa da, yine de bölünmemiş bir tablodur partstabletable1(id2)'de kümelenmiş olmayan indeks NCI_prattable1_id2 oluşturmak; partschema1(id2)'de;
Bölümlenmiş tablo normal bir tabloya dönüştürülürse, birincil anahtar kısıtlaması silinir ve küme indeksi orijinal birincil anahtarın alanları için birincil anahtara yeniden inşa edilir veya yeniden oluşturulur, ancak bu bölümleme şemasıyla ilişkili değildir TABLO Table_name KISITLAMAYI BIRAKMAK PK_NAME (> PK_NAME Table_name(SÜTUN) ÜZERINDE ([BIRINCIL] ÜZERINDE; veya TABLO Table_name DEĞIŞTIRIN PK_NAME BIRINCIL ANAHTAR KÜMELENMIŞ (sütun) ILE ([ÖNCELIK] ÜZERINDE;
Normal tablo bölümlenmiş bir tabloya dönüştürülürse, orijinal birincil anahtar korunacaksa, birincil anahtar kısıtlaması silinir ve ardından birincil anahtar toplanan bir indeks olarak belirlenmeden oluşturulur, ardından yeni bir toplu indeks oluşturulur ve toplu indekste bölümleme şeması kullanılır TABLO Table_name KISITLAMAYI BIRAKMAK PK_NAME (> TABLO Table_name DEĞIŞTIRIN PK_NAME BIRINCIL ANAHTAR KÜMESIZ(sütun) ILE ([ÖNCELIK] ÜZERINDE; --Birincil anahtar oluşturun, ancak kümelenmiş bir indeks olarak ayarlanmamış Table_name(sütun) ÜZERINDE KÜMELENMIŞ İNDEKS index_name OLUŞTUR Bölüm Şeması (Bölümleme Alanı) --Bir bölümleme şemasının kullanıldığı yeni bir kümelenmiş indeks oluşturun
Bölümlenmiş bir tablonun toplam satır sayısını ve boyutunu sorgulayın, örneğin tablo CRM'dir. E-posta Günlüğü Yönetici sp_spaceused 'CRM. EmailLog';
Bölümlenmiş bir tablonun bilgilerini, her bölümün kaç satır olduğunu sorgulayın, örneğin tablo CRM'dir. E-posta Günlüğü Select convert(varchar(50), ps.name ) partition_scheme olarak, p.partition_number, dönüştürücü(varchar(10), ds2.name ) dosya grubu olarak, convert(varchar(19), isnull(v.value, ''), 120) olarak range_boundary, str(p.rows, 9) sıralar olarak sys.indexes i'den sys.partition_schemes ps ile i.data_space_id = ps.data_space_id DDS'sys.destination_data_spaces katıl ps.data_space_id = dds.partition_scheme_id sys.data_spaces DS2'ye katılın dds.data_space_id = ds2.data_space_id join sys.partitions p on dds.destination_id = p.partition_number ve p.object_id = i.object_id ve p.index_id = i.index_id sys.partition_functions pf'ye katıl ps.function_id = pf.function_id SOL KATIL sys. Partition_Range_values v on pf.function_id = v.function_id ve v.boundary_id = p.partition_number - pf.boundary_value_on_right BURADA i.object_id = object_id('crm. E-posta Günlüğü') ve (0, 1) içinde i.index_id Sipariş p.partition_number
Sorgu bölümleme fonksiyonları Seç * sys.partition_functions
Bölüm mimarisini görüntüleyin Seç * arasından sys.partition_schemes Orijinal adres:Bağlantı girişi görünür.
|