Udostępnij za pośrednictwem


Creating Distributed Partitioned Views

Przed zaimplementowaniem partycjonowanego widoku należy najpierw podzielić tabelę na partycje w poziomie.Podczas projektowania schematu partycjonowania należy wyraźnie określić, które dane należą do każdej z tabel członkowskich.Oryginalna tabela jest zamieniana na kilka mniejszych tabel członkowskich.Każda tabela członkowska ma taką samą liczbę kolumn jak oryginalna tabela, a każda kolumna ma takie same atrybuty jak odpowiadająca jej kolumna w oryginalnej tabeli, takie jak typ danych, rozmiar i sortowanie.W przypadku tworzenia rozproszonego widoku partycjonowanego każda tabela członkowska będzie znajdować się na osobnym serwerze członkowskim.Aby zwiększyć przejrzystość lokalizacji, warto określić takie same nazwy członkowskich baz danych na każdym serwerze członkowskim, mimo że nie jest to wymagane.Na przykład: Serwer1.Baza_danych_klientów, Serwer2.Baza_danych_klientów, Serwer3.Baza_danych_klientów.

Tworzenie tabel Członkowskich

Tabele element członkowski można zaprojektować w taki sposób, aby każda tabela przechowuje poziome część oryginalnej tabeli na podstawie zakres wartości klucz.Zakresy, do których są oparte na wartości danych kolumna partycjonowanie na partycje.Zakres wartości w każdej tabela element członkowski są wymuszane przez ograniczenie typu CHECK dla kolumna partycjonowania, a nie zachodzą na siebie zakresami.Na przykład nie masz jednej tabela do zakres od 1 do 200 000, a drugi z zakres od 150 000 do 300 000, ponieważ nie byłoby jasne tabel, które zawiera wartości z 150 000 do 200 000.

Na przykład użytkownik partycjonowanie Odbiorcy tabela na trzy tabele.Ograniczenie typu CHECK dla tych tabel realizowane jest następująca:

-- On Server1:
CREATE TABLE Customers_33
  (CustomerID   INTEGER PRIMARY KEY
                CHECK (CustomerID BETWEEN 1 AND 32999),
  ... -- Additional column definitions)

-- On Server2:
CREATE TABLE Customers_66
  (CustomerID   INTEGER PRIMARY KEY
                CHECK (CustomerID BETWEEN 33000 AND 65999),
  ... -- Additional column definitions)

-- On Server3:
CREATE TABLE Customers_99
  (CustomerID   INTEGER PRIMARY KEY
                CHECK (CustomerID BETWEEN 66000 AND 99999),
  ... -- Additional column definitions)

Definiowanie widoków partycji usługi

Po utworzeniu element członkowski tabel, definiowanie widokiem podzielonym na partycje rozproszonych na każdym element członkowski serwerem z każdego widoku o tej samej nazwie.Dzięki temu kwerendy, które odwołują się do nazwy widoku podzielonym na partycje rozproszonych na jeden lub więcej element członkowski serwerów.System działa tak, jakby kopię pierwotnej tabela na każdej element członkowski serwer, ale każdy serwer ma tylko element członkowski tabela i rozproszony podzielony na partycje widoku.Lokalizacja danych jest niewidoczny dla aplikacji.

Tworzenia rozproszonych widoki podzielonym na partycje, wykonując następujące czynności:

  • Dodawanie definicji serwer połączony na każdego serwera członkowskiego, który zawiera informacje o połączeniu, wymaganej do uruchomienia kwerendy rozproszone na inny element członkowski członkowski serwerów.Dzięki temu dostęp rozproszony widok partycjonowany danych na innych serwerach.

  • Ustawianie Sprawdzanie poprawności schematu opóźnieniem Opcja przy użyciu sp_serveroption, dla każdej definicji serwer połączony, który jest używany w rozpowszechniane widoki na podzielonym na partycje.Należy upewnić się, że procesor kwerend nie żąda metadane dla jednej z tabel połączonych, dopóki dane są faktycznie potrzebne ze zdalnego to optymalizuje wydajność element członkowski tabela.

  • Tworzenie rozproszony widok partycjonowany na każdym serwerze członkowskim.Używanie widoków rozpowszechniane instrukcji SELECT, aby uzyskać dostęp do danych z serwerów połączonych element członkowski i łączy rozproszonego wierszy z wierszy z tabela element członkowski członkowski lokalnej.

Do tworzenia rozproszonych widoków podzielonym na partycje w poprzednim przykładzie, należy wykonać następujące czynności:

  • Dodawanie definicji połączony serwer o nazwie Server2 z informacjami o połączeniu dla Server2, a definicji serwer połączony, o nazwie Server3 Aby uzyskać dostęp do Server3.

  • Utwórz następujący widok podzielonym na partycje rozproszonych:

    CREATE VIEW Customers AS
       SELECT * FROM CompanyDatabase.TableOwner.Customers_33
    UNION ALL
       SELECT * FROM Server2.CompanyDatabase.TableOwner.Customers_66
    UNION ALL
       SELECT * FROM Server3.CompanyDatabase.TableOwner.Customers_99
    
  • Wykonaj te same kroki procedury dotyczące Server2 i Server3.

Tabela reguł

element członkowski członkowski tabele są zdefiniowane w klauzula FROM w każdej instrukcja SELECT w definicji widoku.Każda tabela element członkowski członkowski muszą być zgodne z następującymi zasadami:

  • element członkowski tabel nie można odwoływać się więcej niż jeden czas w widoku.

  • element członkowski członkowski tabele nie mają indeksy utworzone na dowolnej kolumny obliczane.

  • Tabele element członkowski członkowski musi mieć wszystkie ograniczenia klucz podstawowy na tę samą liczbę kolumn.

  • Tabele element członkowski członkowski musi mieć ten sam ANSI, uzupełnienie ustawienie.Aby uzyskać więcej informacji na temat ustawienia dopełnienia ANSI zobacz ZESTAW ANSI_PADDING.

Reguły kolumna

Kolumny są zdefiniowane na liście select Każda instrukcja SELECT w definicji widoku.Każda kolumna muszą być zgodne z następującymi zasadami:

  • Wszystkie kolumny w tabela każdy element członkowski członkowski musi znajdować się na liście select.WYBIERZ * Z <Tabela element członkowski> jest dopuszczalne składni.

  • Kolumny nie mogą odwoływać się więcej niż jeden raz na liście select.

  • Kolumny muszą być w tej samej pozycji porządkowych na liście select

  • Kolumny na liście select Każda instrukcja SELECT musi być tego samego typu.Obejmuje to typ danych, precyzja, skala i sortowanie.Na przykład, następujące wyświetlić definicji nie powiedzie się, ponieważ pierwszej kolumna w obu SELECT instrukcje nie ma ten sam typ danych:

    CREATE VIEW NonUpdatable
    AS
    SELECT IntPrimaryKey, IntPartNmbr
    FROM FirstTable
      UNION ALL
    SELECT NumericPrimaryKey, IntPartNmbr
    FROM SecondTable
    

Reguły partycjonowanie kolumny

Tylko jedna kolumna może służyć do partycjonowanie i muszą znajdować się na każdej tabela element członkowski.Ograniczenia CHECK identyfikuje dane dostępne w każdej tabela element członkowski.Obowiązują następujące reguły dodatkowe:

  • Klucz zakresy ograniczeń CHECK w każdej tabela nie mogą nakładać się na zakresy z żadną inną tabelą.Wszystkie wartości określone partycjonowanie kolumny musi być mapowana na tylko jedną tabela.Ograniczenia CHECK można używać tylko tych operatorów: BETWEEN, IN, AND, OR, <, <=, >, >=, =.

  • partycjonowanie Kolumny nie może być tożsamości, domyślne lub Sygnatura czasowa kolumny.

  • partycjonowanie Kolumna musi być w tej samej lokalizacji porządkowa na liście select Każda instrukcja SELECT w widoku.Na przykład partycjonowanie kolumna jest zawsze pierwszą kolumnę w każdym liście lub w drugiej kolumnie w każdej liście i tak dalej.

  • partycjonowanie Kolumny nie można zezwolić na wartości null.

  • partycjonowanie Kolumna musi być częścią klucz podstawowy tabela.

  • kolumna partycjonowania Nie może być kolumna obliczana.

  • Musi istnieć tylko jedno ograniczenie na kolumnie partycjonowanie na partycje.Jeśli istnieje więcej niż jeden warunek ograniczający, SQL Server ignoruje wszystkie ograniczenia i nie będzie je uwzględniać, przy określaniu, czy widok jest widokiem podzielonym na partycje.

  • Niezalecane, nie są dostępne poziom serwera

kolumna partycjonowania, które spełniają wszystkie reguły będzie obsługiwał wszystkie optymalizacje, które są obsługiwane przez optymalizator kwerendy.Aby uzyskać więcej informacji zobacz Rozpoznawanie usługi widoki podzielonym na partycje.

Zasady ogólne

Uwaga

Następujące warunki nie mają zastosowania do lokalnie podzielonym na partycje widoki utworzone na tym samym serwerze.Jest to funkcja dla celów zachowania zgodności z poprzednimi wersjami.

Poniżej przedstawiono niektóre dodatkowe zasady należy wziąć pod uwagę:

  • rozproszony widok partycjonowany nie mogą być tworzone przy użyciu EXCEPT lub przecinają się operatorów.

  • Zagwarantowanie niepodzielność we wszystkich węzłach, które ma wpływ ta aktualizacja zostanie uruchomiony transakcja rozproszona.

  • Opcja XACT_ABORT zestaw, należy ustawić na ON.

  • Smallmoney and Smalldatetime mapowane jako kolumn w tabelach zdalnegopieniądze and Data/Godzina odpowiednio.Dlatego należy także odpowiadające im kolumny w lokalnych tabelach pieniądze and Data/Godzina.

  • Każdy serwer połączony nie może być sprzężenia zwrotnego serwera połączonego.Jest to serwer połączony, który wskazuje na ten sam wystąpienie z SQL Server.

Widok, że odwołania do tabel podzielonym na partycje niezgodnie z tymi zasadami może nadal być można aktualizować, jeśli istnieje OF an INSTEAD wyzwolenia w widoku.Jednak optymalizator kwerendy nie zawsze można zbudować planów wykonania dla widoku z wyzwalacz Z INSTEAD są tak wydajne jak plany widokiem podzielonym na partycje, znajdujący się wszystkie reguły.