Udostępnij za pośrednictwem


Tworzenie rozproszonych na partycje widoków

Przed zaimplementowaniem widokiem podzielonym na partycje należy najpierw partycji tabela w poziomie.W projektowaniu schemat partycjonowanie na partycje, musi być wyraźnie jakie dane należy do tabela każdego element członkowski.Oryginalna tabela jest zastępowany kilka mniejszych tabel element członkowski.Każda tabela element członkowski posiada taką samą liczbę kolumn w pierwotnej tabeli, a każda kolumna ma takie same atrybuty jak odpowiedniej kolumny w tabeli pierwotnej, takie jak typ danych, rozmiar i sortowanie.Jeśli tworzysz rozproszony widok partycjonowany tabela każdego element członkowski znajduje się na serwerze odrębnym członkiem.Największej przejrzystości lokalizacji nazwę element członkowski bazy danych powinien być taki sam w każdej element członkowski serwera, chociaż nie jest to wymagane.Na przykład: Server1.CustomerDB, Server2.CustomerDB, Server3.CustomerDB.

Tworzenie tabel członka

Projektowanie tabel Członkowskich tak, aby każda tabela przechowuje poziomej część na podstawie zakres wartości klucz tabeli pierwotnej.Zakresy są oparte na wartości danych w kolumna partycjonowania.Zakres wartości w tabela każdy element członkowski jest wymuszana przez ograniczenie typu CHECK na kolumna partycjonowania, a nie nakłada się na zakres.Na przykład nie może mieć jednej tabeli z zakres od 1 do 200 000, a drugi z zakres od 150 000 poprzez 300000, ponieważ nie byłoby wyczyść która tabela zawiera wartości z 150 000 do 200 000.

Na przykład, są partycjonowanie klienta tabela na trzy tabele.Ograniczenie typu CHECK dla tych tabel 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 rozproszonych

Po utworzeniu element członkowski tabel, należy zdefiniować rozproszony widok partycjonowany na każdym serwerze członkowskim z każdym widokiem o tej samej nazwie.Dzięki temu kwerendy odwołujące się do nazwy rozproszony widok partycjonowany na jeden lub więcej element członkowski serwerów.System działa tak, jakby kopię pierwotnej tabela jest na każdym serwerze członkowskim, ale każdy serwer ma tabela element członkowski i rozproszony widok partycjonowany.Lokalizacja danych jest niewidoczny dla aplikacji.

Tworzenia rozproszonych widoków partycji, wykonując następujące czynności:

  • Dodawanie serwer połączony definicje na każdym serwerze członkowskim, zawierający informacje o połączeniu, wymaganej do uruchomienia kwerendy rozproszone na innego element członkowski serwerów.Daje to rozproszony widok partycjonowany dostępu do danych na innych serwerach.

  • Ustawienie sprawdzania poprawności schematu opóźnieniem opcji za pomocą sp_serveroption, dla każdej definicji serwer połączony, używany w widokach rozproszonych 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 z tabela element członkowski zdalnych to optymalizuje wydajność.

  • Tworzenie rozproszonych na partycje widok na każdym element członkowski serwera.Widoki za pomocą instrukcji SELECT rozproszonych dostęp do danych z połączonych element członkowski serwerów i scala rozproszonych wierszy z wierszy z lokalnym element członkowski tabela.

Do tworzenia rozproszonych widoków partycji 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 Server2i serwer połączony definicji o nazwie Server3 dostępu do Server3.

  • Utwórz następujący rozproszony widok partycjonowany:

    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
    
  • Wykonywać czynności na Server2 i Server3.

Tabela reguł

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

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

  • Członek tabele nie mają indeksy utworzone na dowolnej kolumny obliczane.

  • Członek tabel musi mieć wszystkie ograniczenia klucza podstawowego na tę samą liczbę kolumn.

  • Członek tabele muszą być tego samego ANSI uzupełnienie ustawienie.Aby uzyskać więcej informacji na temat ANSI uzupełnienie ustawienia, zobacz USTAWIĆ ANSI_uzupełnienie.

Reguły kolumny

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

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

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

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

  • Kolumny na liście wybierz 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 kończy się niepowodzeniem, ponieważ pierwszy kolumna w obu SELECT sprawozdania nie mają ten sam typ danych:

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

Zasady podziału kolumny

Tylko jedna kolumna może służyć do partycjonowanie na partycje i musi istnieć w tabela każdego element członkowski.Ograniczenia CHECK zidentyfikować dane dostępne w tabela każdego element członkowski.Obowiązują następujące reguły dodatkowe:

  • klucz zakresy ograniczeń CHECK w każdej tabela nie pokrywają się z zakresów drugiej tabela.Wszelkie określonej wartości kolumna partycjonowania musi być mapowane tylko jedną tabela.Ograniczenia CHECK można używać tylko tych operatorów: BETWEEN, IN, AND, OR, <, <=, >, >=, =.

  • kolumna partycjonowania Nie może być tożsamości, domyślne lub sygnatury czasowej kolumna.

  • kolumna partycjonowania Musi być w tej samej lokalizacji porządkowa na liście wybierz Każda instrukcja SELECT w widoku.Na przykład kolumna partycjonowania jest zawsze pierwsza kolumna na każdej liście select lub drugą kolumnę w każdym liście itd.

  • kolumna partycjonowania Nie zezwalaj na wartooci Null.

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

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

  • Musi istnieć tylko jedno ograniczenie na kolumna partycjonowania.Jeśli istnieje więcej niż jedno ograniczenie SQL Server ignoruje wszystkie ograniczenia i nie uznają je przy określaniu, czy widok jest widok podzielonym na partycje.

  • Nie ma żadnych ograniczeń na updatability z kolumna partycjonowania.

A kolumna partycjonowania spełniające wszystkie przepisy te będą obsługiwać optymalizacje, które są obsługiwane przez optymalizator kwerendy.Aby uzyskać więcej informacji, zobacz Rozwiązywanie widoki podzielony na partycje rozproszonych.

Zasady ogólne

Ostrzeżenie

Następujące warunki nie dotyczą lokalnie podzielonym na partycje widoki utworzone na tym serwerze.Jest to funkcja dostępna dla celów zgodności z poprzednimi wersjami.

Oto niektóre dodatkowe reguły, należy rozważyć:

  • A rozproszony widok partycjonowany nie powstały przy użyciu oprócz lub operatory PRZECIĘCIA.

  • Zagwarantowanie niepodzielność we wszystkich węzłach, których dotyczy aktualizacja zostanie uruchomiony transakcja rozproszona.

  • XACT_ABORT zestaw opcja musi być zestaw on.

  • Smallmoney i smalldatetime kolumn w tabelach zdalnego są mapowane jako pieniędzy i datetime odpowiednio.Dlatego też powinny być odpowiednich kolumn w tabelach lokalnych pieniędzy i datetime.

  • Każdy serwer połączony nie może być sprzężenia zwrotnego serwera połączonego.To wskazuje na wystąpienie tego samego serwer połączony SQL Server.

Widok, że odwołania do tabel partycji bez przestrzegania tych zasad może nadal był aktualizowalny, jeśli INSTEAD OF wyzwolenia w widoku.Jednakże optymalizator kwerendy nie zawsze można zbudować wykonanie planów widoku z wyzwalacza INSTEAD OF są efektywne planów widokiem podzielonym na partycje i wszystkie reguły.