Поток выполнения запросов SQL Server

Я ищу информацию о том, как SQL Server на самом деле обрабатывает выполнение запроса в мельчайших деталях (например, какие данные хранятся в буфере / памяти и как он решает получать свежие данные, даже если в одном столбце таблицы задействовано изменение обновления) в запросе и т. д.)

Если кто-нибудь знает источники, пожалуйста, дайте мне знать?


У нас есть веб-приложение, использующее sql server 2000, оно часто читает почти 70% таблиц (приборной панели) каждые 30 секунд. и в то же время происходит много записей.

Пожалуйста, дайте мне знать какие-либо советы по оптимизации вышеуказанного сценария?

5 ответов

Решение

Никто не сможет дать вам ответ о том, как решить вашу проблему оптимизации. Это требует доступа к вашему серверу базы данных. Чтобы решить ваши проблемы, вам нужно примерно понять, как работает база данных, и для этого вам нужно немного почитать.

Ресурсы онлайн в порядке, однако следующие три книги бесценны. Первые две книги содержат очень подробную информацию о том, как работает SQL Server. Последние из них представляют собой руководство о том, как писать запросы, но с обсуждением того, как механизм также просматривает запросы.

  1. Кален Далней: Sql Server 2008 Internals
  2. SQL Server 2005: Практическое устранение неполадок:
  3. Бен Ган и др. Внутри SQL Server 2008: запросы T-SQL

Чтобы ответить на типовые вопросы внутренних пользователей, потребовалось бы много постов, я предлагаю вам начать читать некоторые официальные документы / блоги и некоторые книги.

В 2000 году архитектура SQL Server Кена Хендерсона даст вам глубокие внутренние подробности, для более поздних выпусков SQL он выполнил практическую работу по устранению неполадок 2005 года, что неплохо, и книга Калена Делани по SQL 2008 Internals очень хороша.

Что касается внешних источников, у MSDN есть всеобъемлющий ресурс по оптимизации установки SQL Server 2000, в частности документ " Образцы и практики" по производительности и масштабируемости.

Если вы знаете, с чего начать, воспользуйтесь подходом снизу вверх, изучив профили SQL и планы запросов, как уже упоминалось. В противном случае начните сверху вниз и узнайте о затратах, связанных с перекомпиляцией запросов, о том, как эффективно индексировать и как оптимизатор запросов использует статистику.

Вы должны изучить план выполнения.

Нажмите Ctrl-L в SSMS или проблема SET SHOWPLAN_TEXT ON перед выполнением запроса.

Это даст вам подробную информацию о том, какие индексы используются, какие алгоритмы объединения применяются и т. Д.

Вы также можете посмотреть статистику:

SET STATISTICS TIME ON
SET STATISTICS IO ON

, которая даст вам информацию о том, сколько операций чтения было выполнено из фактических таблиц, кэша и т. д. и сколько времени (фактического и CPU время) каждый запрос занял.

Об управлении буферами SQL Server 2008: http://msdn.microsoft.com/en-ca/library/aa337525.aspx

Затем вы можете просмотреть на левой боковой панели информацию о других предметах.

Другие вопросы по тегам