Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сведения о статистике базы данных
Статистика оптимизации запросов — это объекты, содержащие статистические сведения о распределении значений в одном или нескольких столбцах таблицы или индексированного представления. Оптимизатор запросов использует эти статистические данные для оценки кратности или количества строк в результатах запроса. Эти оценки кратности позволяют оптимизатору запросов создать высококачественный план запроса.
Например, оптимизатор запросов может повысить производительность запросов с помощью оценки кратности, чтобы выбрать оператор поиска индекса вместо оператора проверки индекса с большим объемом ресурсов. В противном случае устаревшая статистика может снизить производительность запросов с помощью неэффективных планов запросов.
Крупные корпоративные развертывания SharePoint должны иметь планы обслуживания базы данных для обновления статистики базы данных о базах данных контента, которые находятся в Microsoft SQL Server. Клиенты не должны полагаться только на задания обслуживания базы данных на основе SharePoint для выполнения этих задач. Дополнительные сведения см. в статье Рекомендации по использованию SQL Server в ферме SharePoint Server.
Симптомы
Когда статистика базы данных устарела, установка SharePoint Server может столкнуться с одним или несколькими из следующих симптомов:
Время медленной загрузки и снижение производительности, которая может создать ошибку HTTP 500 при открытии страницы сайта
Низкая производительность, которая создает сообщения об ошибках, например следующий пример:
Service unavailable Unknown SQL Exception 53 Server Error in '/' Application Runtime ErrorВыполнение обхода поиска приводит к неожиданным проблемам с производительностью SQL Server, блокировке и конфликтам при доступе к базе данных.
Длительные задания таймера, такие как задания "Microsoft SharePoint Foundation Usage Data Processing", с каждой итерацией требуют все больше времени на выполнение.
Неспособность открыть сайт SharePoint и сообщение об ошибке, похожее на следующее:
Unexpected System.Web.HttpException: Request timed outВремя ожидания отрисовки сайта при загрузке навигации и следующее сообщение об ошибке:
PortalSiteMapProvider was unable to fetch children for nodeВысокая загрузка ЦП на сервере под управлением SQL Server при обработке запросов SharePoint
Причина
Эти проблемы могут быть вызваны устаревшей статистикой базы данных. SharePoint ежедневно выполняет задание таймера для обновления статистики базы данных с помощью процедуры proc_updatestatistics SQL. Однако по разным причинам это задание таймера не может быть завершено или не может постоянно обновлять все таблицы. Например, если резервное копирование выполняется в базе данных контента из SQL Server параллельно с заданием таймера SharePoint, задание не будет продолжаться.
Когда задание таймера SharePoint, обновляющее статистику, будет завершено, в журналы ULS могут быть записаны следующие события:
- e9bf "Произошла ошибка при обновлении статистики в базе данных" {0}
- cm1y "Обновление статистики в базе данных", {0}
- dbl2 "Пропуск обновления статистики базы данных{0}, так как его состояние "{1}
- cm1x "Обновление статистики во всех базах данных на {0}"
Если эти условия не отслеживаются и если корректирующие действия не выполняются, статистика базы данных становится устаревшей, и проблемы с производительностью SharePoint в конечном итоге возникают.
Резолюция
Чтобы предотвратить эти симптомы и потенциальные сбои служб, следует реализовать планы обслуживания SQL Server, чтобы обеспечить обновление статистики базы данных содержимого SharePoint с помощью параметра FULLSCAN. Дополнительные сведения см. в разделе "Статистика индекса".
При реализации плана обслуживания SQL Server для обновления статистики в базах данных SharePoint не требуется отключить задание из SharePoint. Однако, поскольку эти задачи обслуживания выполняют аналогичные функции из обоих расположений, можно отключить правило "Базы данных, используемые SharePoint, имеют устаревшую статистику индекса" из фермы SharePoint, если базы данных управляются SQL. Дополнительные сведения об управлении заданием обновления индекса из SharePoint Server см. в статьях Базы данных, используемые SharePoint, имеют устаревшую статистику индексов (SharePoint 2013).
Дополнительная информация
Обновление статистики баз данных содержимого SharePoint из SQL Server с использованием параметра FULLSCAN на ежедневной основе является рекомендуемой передовой практикой. Дополнительные сведения см. в рекомендациях по SQL Server в ферме SharePoint Server и обслуживании базы данных для SharePoint Foundation 2010.
Однако если в настоящее время в ферме SharePoint возникают проблемы с производительностью из-за устаревших статистических данных, следующие сведения можно использовать в качестве однократного шага по устранению этой проблемы.
Чтобы отобразить данные статистики базы данных из определенной базы данных, выполните следующий запрос:
-- 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'
Дополнительные сведения о проверке статистики базы данных см. в SHOW_STATISTICS DBCC.
Чтобы обновить статистику базы данных в одной базе данных, которая использует параметр FULLSCAN, выполните следующий запрос:
-- Update DB Stats
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
Важно отметить, что параметр "sp_MSforeachtable" — это незадокументированная процедура, которая предоставляется "как есть" и должна использоваться только для устранения немедленной проблемы. Мы не рекомендуем использовать эту процедуру в рамках плана регулярного обслуживания. Вместо этого ознакомьтесь с нашей документацией про команду UPDATE STATISTICS (Transact-SQL) о том, как разработать план обновления статистики с помощью параметра FULLSCAN.
В зависимости от того, как устарела статистика базы данных, может потребоваться очистить кэш плана запросов, выполнив команду DBCC FREEPROCCACHE после обновления статистики базы данных. Вы найдете синтаксис и аргументы для этой процедуры в DBCC FREEPROCCACHE (Transact-SQL). Это гарантирует, что новые запросы используют оптимальный план выполнения после обновления статистики базы данных. Например, см. следующий запрос:
-- Remove all elements from the plan cache
DBCC FREEPROCCACHE
Это важно
Выполнение команды DBCC FREEPROCCACHE очищает кэш для всех планов запросов в экземпляре SQL. Эта команда должна быть хорошо понятна, прежде чем выполнять ее в рабочие часы.
Если команда DBCC FREEPROCCACHE не была выполнена после обновления устаревшей статистики базы данных, запросы с неэффективными планами выполнения могут по-прежнему находиться в кэше и использоваться. Если это так, принудительно выполните повторную компиляцию указанной хранимой процедуры с помощью хранимой процедуры (см. sp_recompile (Transact-SQL)). Например, см. следующий запрос:
USE SP2013_Content_DB
GO
sp_recompile proc_getwebnavstruct
Выполнение команды sp_recompile вместе с параметрами процедуры, функции или таблицы предназначено для одного элемента в кэше для удаления без влияния на экземпляр.
Все еще нужна помощь? Перейдите в сообщество SharePoint.