Distribution Statistics Requirements for OLE DB Providers

Aby poprawić optymalizacji kwerend rozproszonych SQL Server Określa rozszerzenia do specyfikacji OLE DB, dostawców OLE DB można użyć do dystrybucji statystyki zestawów wierszy raportu lub tabel, które narażają ich. Mimo że rozszerzenia te są zdefiniowane w SQL Server dokumentację, Każdy deweloper dostawca OLE DB musi kodem obsługę rozszerzeń w ich dostawców, jeśli chce się udostępnić informacje SQL Server. Jeżeli dostawca ma kod, który obsługuje rozszerzenia, SQL Server można użyć rozszerzenia znajdujące się w celu zoptymalizowania wydajności z kwerendami rozproszonymi. Jeśli dostawca nie obsługuje rozszerzeń, SQL Server używa prostego oszacowań statystyk dystrybucji.

Uwaga

The Microsoft SQL Server Native Client OLE DB Provider and the Microsoft OLE DB Provider for Oracle support distribution statistics.

Rozszerzenia statystyk dystrybucji jest zbudowana wokół jednostki nazywane statystykę listy.Każda tabela może mieć zero lub więcej danych statystycznych i każdego statystyki raporty danych dla jednej lub większej liczbie kolumn.Statystykę listy rejestruje następujące czynności:

  • Relacja wartości lub liczba unikatowych wartości w każdym kolumna objętych statystyki.

  • Relacja są połączone wartości wszystkich kolumn objętych statystyki.

  • Opcjonalnie histogramu raportowanie informacji o różnych zakresów wartości kluczy w pierwszej kolumnie objętych statystyki.Zgłoszone wartości mogą zawierać liczby wierszy w poszczególnych zakresów klucz, liczbę unikatowych wartości w każdym zakresie klucz lub liczbę wierszy w tabela, którego wartości klucz są mniejsze niż lub równe największej wartości klucz w zakresie.

Oto przykład tabela.

ColumnA

ColumnB

"abc"

"xyz"

"abc"

"xyz"

"def"

"xyz"

"mno"

"xyz"

"mno"

"mmm"

"tuv"

"xyz"

Statystyki, które obejmuje ColumnA i ColumnB relacja połączonych wartości w dwóch kolumnach jest 5.Oznacza to, istnieją 5 unikatowe kombinacje wartości ColumnA i ColumnB, ponieważ dwa pierwsze wiersze mają taką samą wartość połączone ("abc" + "xyz").

Relacja ColumnA samodzielnie jest 4, a relacja ColumnB samodzielnie jest 2.Proste, składającą się z czterech kroków histogram na ColumnA można zgłosić.

Zakres wartości

Procent tabeli wiersze w zakres

aaa do "hzz"

50%

iaa do "nzz"

33%

oaa do "rzz"

00%

taa do "zzz"

17%

Dystrybucji statystyk dotyczących różnych kombinacji kolumn rejestrowania różnych źródeł danych OLE DB, a zestaw statystyki zgłaszanych przez dostawca OLE DB jest implementacją zdefiniowane.For example, SQL Server versions 6.5 and earlier build distribution statistics only for columns covered by indexes and have one statistic for each index defined on a table.SQL Server version 7.0 and later builds the following statistics:

  • Statystyka jeden dla każdego indeksu zdefiniowane w tabela.

  • Statystyka jeden dla każdej instrukcja CREATE statystyki.

  • Jeden statystyki dla każdego statystyk, który jest generowany automatycznie.

Kolumna ma wysoki stopień selektywności, jeśli jest prawdopodobne powrócić do niewielkiej liczby wierszy dla określonej wartości określonej w argumencie predykatu.Statystyk dystrybucji mogą służyć do szacowania stopień selektywności:

  • O wysokiej Kardynalność kolumna ma więcej wartości danych, a każda wartość danych jest prawdopodobne odpowiadała mniejszej liczby wierszy niż kolumna z niskich liczebność.

  • Jeśli dostawca OLE DB dostarcza histogramu raportowania, jak wartości są rozdzielane w kolumna, SQL Server Optymalizator również można oszacować, jeśli określoną wartość w argumencie predykatu znajduje się w zakresie, który ma selektywności dobra lub słaba.

O dobrej dystrybucji statystyki serwer połączony może także pomóc Optymalizator zbudować plan efektywne wykonywanie lokalnego części kwerenda rozproszona.

The SQL Server optimizer uses the distribution statistics in an attempt to reduce the amount of data that must be communicated between the OLE DB dostawca and SQL Server. Na przykład, podczas wykonywania rozproszonych łączyć TableA na serwerze lokalnym i TableB serwer połączony SQL Server można użyć statystyk dystrybucji do określenia, który z tych procesów jest najbardziej efektywne:

  • Wysyłanie wierszy z TableA zgodnymi predykaty nonjoin do połączonego serwera i serwer połączony łączyć wykonane.

  • Pobieranie wierszy z TableB spełniających inne niż łączyć predykaty na serwerze lokalnym i wykonywać łączyć na serwerze lokalnym.

Jeśli dostawca OLE DB nie zgłasza Kardynalność informacje kolumna, SQL Server Optymalizator oszacowań jest niski. Jeśli dostawca nie zgłasza histogramu dystrybucji dla statystykę listy, Optymalizator działa podobnie jak w przypadku wartości równomiernie rozmieszczona w wierszach tabela.

SQL Server używane są następujące rozszerzenia z dostawców OLE DB dla statystyk dystrybucji raportu:

  • Właściwość urządzenie źródłowe danych DBPROP_TABLESTATISTICS, wskazuje w statystyk dystrybucji Raporty dostawca.

  • An IDBSchemaRowset, TABLE_STATISTICS, lists the statistics available for a specified tabela bazowa. Dotyczy to również kolumna i wiersz liczebność.

  • IOpenRowset::OpenRowset akceptuje identyfikujący statystykę listy argumentów.Jeśli określono statystykę listy OpenRowset Zwraca zestaw wierszy histogramu, pokazujący rozkład wartości w pierwszym kolumna objętych statystyki określone w StatisticID.

Te rozszerzenia OLE DB są uwzględniane w OLE DB w wersja 2.6 lub nowszej.Aby uzyskać informacje dotyczące tych rozszerzeń statystyk dotyczących dystrybucji, zobacz specyfikację OLE DB 2.6.

dostawca OLE DB można zaimplementować poprawy wydajności tylko część wierszy w tabela bazowa do określenia statystyk dystrybucji i histogramów do pobierania próbkowanie.Tych dostawców należy skalowanie ich liczebność i histogramu danych w celu odzwierciedlenia wartości sum w tabela przed ich raportowania w zestawy wierszy TABLE_STATISTICS i histogramu.

Czy dostawca OLE DB przechowuje dane w TABLE_STATISTICS i zestawu zestaw wierszy histogramu aktualne bieżącą zawartość tabela bazowa jest implementacją zdefiniowane.

Uwaga

Aby utworzyć najlepsze planów kwerend, podczas pracy z tabelą serwer połączony, procesor kwerend muszą mieć statystyk dystrybucji danych z serwer połączony.Użytkownicy, którzy mają ograniczone uprawnienia dla każdej kolumny w tabela nie ma wystarczających uprawnień do uzyskania wszystkich statystyk użyteczne i może odbierać mniej wydajne planu kwerend i niska wydajność.Jeśli serwer połączone jest dane wystąpienie składnika SQL Server, uzyskać wszystkich dostępnych statystyk, użytkownik musi własnej tabela lub należeć do roli sysadmin stałych serwera, the db_owner ustalonego rola bazy danych lub roli db_ddladmin stałej bazy danych serwer połączony.