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