Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Informacje o statystykach bazy danych
Statystyki optymalizacji zapytań to obiekty zawierające informacje statystyczne dotyczące rozkładu wartości w co najmniej jednej kolumnie tabeli lub widoku indeksowanego. Optymalizator zapytań używa tych statystyk do oszacowania kardynalności lub liczby wierszy w wyniku zapytania. Te szacunki kardynalności umożliwiają optymalizatorowi zapytań utworzenie planu zapytań wysokiej jakości.
Na przykład optymalizator zapytań może zwiększyć wydajność zapytań, używając oszacowań kardynalności, aby wybrać operator wyszukiwania indeksu zamiast bardziej zasobochłonnego operatora skanowania indeksu. W przeciwnym razie nieaktualne statystyki mogą zmniejszyć wydajność zapytań przy użyciu nieefektywnych planów zapytań.
Duże wdrożenia programu SharePoint w przedsiębiorstwie muszą mieć plany konserwacji bazy danych w celu zaktualizowania statystyk bazy danych dotyczących baz danych zawartości znajdujących się w programie Microsoft SQL Server. Klienci nie powinni polegać tylko na zadaniach konserwacji bazy danych opartych na programie SharePoint w celu wykonania tych zadań. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące programu SQL Server w farmie programu SharePoint Server.
Objawy
Gdy statystyki bazy danych staną się nieaktualne, w instalacjach programu SharePoint Server mogą pojawić się jeden lub więcej z następujących objawów:
Wolne czasy ładowania i zmniejszona wydajność, która może wygenerować błąd HTTP 500 podczas otwierania strony witryny
Niższa wydajność, która generuje komunikaty o błędach, takie jak następujący przykład:
Service unavailable Unknown SQL Exception 53 Server Error in '/' Application Runtime ErrorWykonywanie przeszukiwania powoduje nieoczekiwane działanie programu SQL Server, blokowanie i zablokowanie dostępu do bazy danych.
Długotrwałe zadania czasomierza, takie jak zadania przetwarzania danych użycia programu Microsoft SharePoint Foundation, które mogą trwać stopniowo dłużej podczas każdej iteracji.
Brak możliwości otwarcia witryny programu SharePoint i komunikat o błędzie podobny do następującego:
Unexpected System.Web.HttpException: Request timed outWitryna przekroczyła limit czasu renderowania podczas ładowania elementów nawigacyjnych i wyświetla następujący komunikat o błędzie:
PortalSiteMapProvider was unable to fetch children for nodeWysokie użycie procesora CPU na serwerze z uruchomionym programem SQL Server podczas przetwarzania zapytań programu SharePoint
Przyczyna
Te problemy mogą być spowodowane nieaktualnymi statystykami bazy danych. Program SharePoint codziennie uruchamia zadanie czasomierza w celu zaktualizowania statystyk bazy danych przy użyciu procedury proc_updatestatistics SQL. Jednak z różnych powodów to zadanie czasomierza może nie zostać ukończone lub nie może stale aktualizować wszystkich tabel. Jeśli na przykład kopia zapasowa jest uruchomiona względem bazy danych zawartości z programu SQL Server współbieżnie z zadaniem czasomierza programu SharePoint, zadanie nie będzie kontynuowane.
Po ukończeniu zadania czasomierza programu SharePoint, które aktualizuje statystyki, następujące zdarzenia mogą być zapisywane w dziennikach ULS:
- e9bf "Wystąpił błąd podczas aktualizowania statystyk w bazie danych" {0}
- cm1y "Aktualizowanie statystyk w bazie danych" {0}
- dbl2 "Pomijanie aktualizacji statystyk bazy danych {0} , ponieważ jej stan to {1}"
- cm1x "Aktualizowanie statystyk we wszystkich bazach danych w systemie {0}"
Jeśli te warunki nie są ściśle monitorowane i jeśli akcje naprawcze nie są podejmowane, statystyki bazy danych staną się nieaktualne, a problemy z wydajnością programu SharePoint w końcu wystąpią.
Rezolucja
Aby zapobiec tym objawom i potencjalnym awariom usług, należy wdrożyć plany konserwacji programu SQL Server, aby statystyki bazy danych zawartości programu SharePoint były aktualizowane przy użyciu opcji FULLSCAN. Aby uzyskać więcej informacji, zobacz Statystyki indeksu.
Podczas implementowania planu konserwacji programu SQL Server w celu zaktualizowania statystyk baz danych programu SharePoint nie jest wymagane wyłączenie zadania z programu SharePoint. Jednak ponieważ te zadania konserwacji wykonują podobne funkcje znad obu lokalizacji, można wyłączyć regułę "Bazy danych używane przez program SharePoint mają nieaktualne statystyki indeksu" Reguła analizatora kondycji z farmy SharePoint, jeśli bazy danych są zarządzane przez serwer SQL. Aby uzyskać więcej informacji na temat zarządzania zadaniem aktualizacji indeksu z programu SharePoint Server, zobacz Bazy danych używane przez program SharePoint mają nieaktualne statystyki indeksu (SharePoint 2013).
Więcej informacji
Aktualizowanie statystyk baz danych zawartości programu SharePoint przy użyciu opcji FULLSCAN codziennie z programu SQL Server jest zalecanym najlepszym rozwiązaniem. Aby uzyskać więcej informacji, zobacz Best practices for SQL Server in a SharePoint Server farm and Database maintenance for SharePoint Foundation 2010 (Najlepsze rozwiązania dotyczące programu SQL Server w farmie programu SharePoint Server i konserwacja bazy danych dla programu SharePoint Foundation 2010).
Jeśli jednak w farmie programu SharePoint występują obecnie problemy z wydajnością z powodu nieaktualnych statystyk, następujące informacje mogą służyć jako jednorazowy krok ograniczania ryzyka, aby złagodzić ten problem.
Aby wyświetlić informacje o statystykach bazy danych z określonej bazy danych, uruchom następujące zapytanie:
-- Checking the DB Stats
select a.id as 'ObjectID', isnull(a.name,'Heap') as 'IndexName', b.name as 'TableName',
stats_date (id,indid) as stats_last_updated_time
from sys.sysindexes as a
inner join sys.objects as b
on a.id = b.object_id
where b.type = 'U'
Aby uzyskać więcej informacji na temat przeglądu statystyk bazy danych, zobacz DBCC SHOW_STATISTICS.
Aby zaktualizować statystyki bazy danych dla pojedynczej bazy danych korzystającej z opcji FULLSCAN, uruchom następujące zapytanie:
-- Update DB Stats
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
Ważna uwaga: Opcja "sp_MSforeachtable" to nieudokumentowana procedura dostarczona w obecnej formie i powinna być używana tylko w celu zażegnania pilnego problemu. Nie zalecamy korzystania z tej procedury w ramach regularnego planu konserwacji. Zamiast tego zapoznaj się z naszą dokumentacją UPDATE STATISTICS (Transact-SQL), aby dowiedzieć się, jak wdrożyć plan AKTUALIZACJI STATYSTYK przy użyciu opcji FULLSCAN.
W zależności od tego, jak przestarzałe są statystyki bazy danych, może być konieczne wyczyszczenie pamięci podręcznej planu zapytań przez uruchomienie polecenia DBCC FREEPROCCACHE po zaktualizowaniu statystyk bazy danych. Składnię i argumenty tej procedury znajdziesz w artykule DBCC FREEPROCCACHE (Transact-SQL). Dzięki temu nowe zapytania korzystają z optymalnego planu wykonywania po zaktualizowaniu statystyk bazy danych. Zobacz na przykład następujące zapytanie:
-- Remove all elements from the plan cache
DBCC FREEPROCCACHE
Ważne
Uruchomienie polecenia DBCC FREEPROCCACHE powoduje wyczyszczenie pamięci podręcznej dla wszystkich planów zapytań w wystąpieniu SQL. To polecenie powinno być zrozumiałe przed wykonaniem go w godzinach produkcji.
Jeśli polecenie DBCC FREEPROCCACHE nie zostało wykonane po zaktualizowaniu nieaktualnych statystyk bazy danych, zapytania z nieefektywnymi planami wykonywania mogą nadal znajdować się w pamięci podręcznej i być używane. W takim przypadku wymuś ponowne skompilowanie określonej procedury składowanej przy użyciu procedury składowanej (zobacz sp_recompile (Transact-SQL)). Zobacz na przykład następujące zapytanie:
USE SP2013_Content_DB
GO
sp_recompile proc_getwebnavstruct
Uruchomienie polecenia sp_recompile w połączeniu z procedurą, funkcją lub parametrami tabeli ma na celu usunięcie pojedynczego elementu z pamięci podręcznej bez wpływu na całą instancję.
Nadal potrzebujesz pomocy? Przejdź do witryny SharePoint Community.