Вопрос

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

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


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

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

Это было полезно?

Решение

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

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

  1. Кален Далени:Внутренние компоненты Sql Server 2008
  2. Sql Server 2005:Практическое устранение неполадок:
  3. Ben Gan et al:Внутри SQL Server 2008:Выполнение запросов T-SQL

Другие советы

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

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

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

Пресса 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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top