Wymagania statystyk dystrybucji dla dostawców OLE DB

Poprawa optymalizacji kwerendami rozproszonymi SQL Server definiuje rozszerzenia ze specyfikacją OLE DB, dostawców OLE DB można używać do raportu statystyk dystrybucji zestawów wierszy lub tabel, że Uwidacznianie.Chociaż te rozszerzenia są definiowane w SQL Server dokumentacji, Każdy deweloper dostawca OLE DB musi kod obsługę rozszerzeń w ich dostawców, jeśli mają być dostępne informacje SQL Server.Jeżeli dostawca ma kod, który obsługuje rozszerzenia, SQL Server można używać rozszerzeń, aby zoptymalizować wydajność kwerend rozproszonych.Jeśli dostawca nie obsługuje rozszerzeń, SQL Server używa prostego szacunki statystyk dystrybucji.

Ostrzeżenie

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

Rozszerzenia statystyk dystrybucji są z myślą o nazwie Statystyka jednostki.Każda tabela może mieć zero lub więcej statystyki i każdej statystyki raportów danych dla jednej lub kilku kolumn.Statystyka rejestruje następujące czynności:

  • Kardynalność wartości lub liczbę unikatowych wartości w każdym kolumna objętych statystyki.

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

  • Opcjonalnie histogram wykazywania informacji na temat różnych zakresów klucz wartości w pierwszej kolumnie objętych statystyki.Wartości raportowane może zawierać liczbę wierszy każdego zakres klucz, liczbę unikatowych wartości w każdym zakresie klucz lub liczbę wierszy w tabela, którego wartości klucz są mniejsze lub równe najwyższym wartość klucz w zakresie.

Oto przykład tabela.

ColumnA

ColumnB

"abc"

"xyz"

"abc"

"xyz"

"def"

"xyz"

"mno"

"xyz"

"mno"

"mmm"

"tuv"

"xyz"

Statystyki, która obejmuje ColumnA i ColumnB, kardynalność połączone wartości dwóch kolumn jest 5.Oznacza to brak 5 unikatowych kombinacji wartości dla ColumnA i ColumnB , ponieważ dwa pierwsze wiersze mają taką samą wartość Scalonej ("abc" + "xyz").

Relacja ColumnA samodzielnie jest 4 i Kardynalność ColumnB samodzielnie jest 2.Proste, czterech kroków histogram na ColumnA może raportu.

Zakres wartości

Procent tabela wiersze wzakres

"aaa" do "hzz"

50%

"iaa" do "nzz"

33%

"oaa" do "rzz"

00%

"taa" do "zzz"

17%

Statystyk dystrybucji na różnych kombinacji kolumn rejestrowania różnych źródeł danych OLE DB i zestaw danych statystycznych zgłoszonych 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:

  • Jeden statystyki dla każdego indeksu zdefiniowane w tabela.

  • Statystyka jeden dla każdej Tworzenie statystyki instrukcja.

  • Statystyka jeden dla każdej statystyki, który jest generowany automatycznie.

Kolumna ma wysoki stopień selektywności, jeżeli jest prawdopodobne powrócić do niewielkiej liczby wierszy dla określonej wartości określonej w argumencie predykatu.Statystyk dystrybucji można oszacować stopień selektywności:

  • kolumna z wysokim Kardynalność mają więcej wartości danych i wszystkich wartości danych prawdopodobnie odpowiadają mniejszej liczby wierszy niż kolumn Kardynalność niski.

  • Jeśli dostawca OLE DB dostarcza histogram zgłoszenie rozkład wartości kolumna, SQL Server Optymalizator również można oszacować, jeżeli wartość argumentu predykatu jest w zakres ma dobra lub słaba selektywności.

Posiadające dobrą dystrybucji statystyki serwer połączony może także pomóc Optymalizator zbudować efektywne wykonanie planu lokalną część zapytanie rozproszone.

SQL Server Optymalizator używa statystyk dystrybucji próbę aby zredukować ilość danych, które muszą być przekazywane między dostawca OLE DB i SQL Server.Na przykład podczas wykonywania rozproszonej łączyć między TableA na serwerze lokalnym i TableB serwer połączony SQL Server można używać statystyk dystrybucji do określenia, który z tych procesów jest najbardziej efektywne:

  • Wyślij wiersze z TableA odpowiada predykaty nonjoin do serwer połączony i połączony serwer wykonuje łączyć.

  • Pobieranie wierszy z TableB nonjoin to dopasowanie predykaty do lokalnego serwera i wykonywać łączyć na lokalnym serwerze.

Jeśli dostawca OLE DB nie zgłasza Kardynalność informacji o kolumna, SQL Server Optymalizator szacunków Kardynalność niski.Jeśli dostawca nie zgłasza histogram dystrybucji statystyki, Optymalizator działa tak, jakby wartości równomiernie rozmieszczona w wierszach tabela.

SQL Serverużywa następujących rozszerzeń z dostawców OLE DB do statystyk dystrybucji raportu:

  • właściwość źródło danych, DBPROP_TABLESTATISTICS, wskazuje w statystyk dostawca raporty dystrybucji.

  • IDBSchemaRowset, TABLE_STATISTICS, wyświetla listę dostępnych statystyk dotyczących określonego tabela bazowa.Obejmuje to kolumna i Kardynalność wierszy.

  • IOpenRowset::OpenRowset akceptuje identyfikujący statystykę listy argumentów.Po określeniu statystyki OpenRowset zwraca histogram zestawu zestaw wierszy, która pokazuje rozkład wartości w pierwszym kolumna objętych statystyczne 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 specyfikacja OLE DB 2.6.

Dostawca OLE DB można zaimplementować ulepszenie wydajności części wiersze w tabela bazowa do określenia statystyk dystrybucji i histogramów do pobierania próbkowanie.Tych dostawców należy przeskalować ich Kardynalność i dane histogramu w celu odzwierciedlenia wartości sum dla tabela przed zgłoszeniem ich w TABLE_STATISTICS i histogramu zestawów wierszy.

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

Ostrzeżenie

Aby utworzyć najlepsze planów kwerend podczas korzystania z tabela serwer połączony, procesor kwerend musi mieć statystyk dystrybucji danych z serwer połączony.Użytkownicy, którzy mają ograniczone uprawnienia dla każdej kolumny tabela może nie masz wystarczających uprawnień do uzyskania wszystkich statystyk przydatne może odbierać mniej wydajne planu kwerend i niska wydajność.Jeśli wystąpienie serwer połączony SQL Server, aby uzyskać wszystkie dostępne statystyki, użytkownik musi własnej tabela lub być element członkowski z sysadmin stałej roli serwera db_owner stałej rola bazy danych lub db_ddladmin stałej rola bazy danych serwer połączony.