Поток выполнения запроса SQL Server
-
22-09-2019 - |
Вопрос
Я ищу информацию о том, как SQL Server на самом деле обрабатывает выполнение запроса в более мелких деталях (например, какие данные хранятся в буфере / памяти и как он решает получить свежие данные, даже если есть изменение обновления только в одном столбце таблицы, участвующей в запросе и т.д.)
Если кто-нибудь знает источники, пожалуйста, дайте мне знать?
У нас есть веб-приложение, использующее sql server 2000, оно выполняет интенсивные частые чтения почти 70% таблиц (dashboard) каждые 30 секунд.и в то же время происходит много записей.
Пожалуйста, дайте мне знать какие-либо советы по оптимизации вышеуказанного сценария?
Решение
Никто не сможет дать вам ответ о том, как решить вашу проблему оптимизации.Для этого требуется доступ к вашему серверу базы данных.Чтобы решить ваши проблемы, вам нужно примерно понять, как работает база данных, а для этого вам нужно немного почитать.
Онлайновые ресурсы - это нормально, однако следующие три книги бесценны.Первые две книги содержат очень подробную информацию о том, как работает SQL Server.Последние - это руководство по написанию запросов, но с обсуждением того, как движок также просматривает запросы.
Другие советы
Потребовалось бы много постов, чтобы ответить на вопросы внутреннего типа, я предлагаю вам начать читать некоторые официальные документы / блоги и некоторые книги.
В 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 и планы запросов, как уже упоминалось.В противном случае начните сверху вниз и узнайте о затратах, связанных с перекомпиляцией запросов, о том, как эффективно индексировать и как оптимизатор запросов использует статистику.