27.1.23

Внутренняя оптимизация для индексов в «широком» плане запроса

Автор оригинала: Craig Freedman

В предыдущей статье было показано как SQL Server выполняет изменения в некластерных индексах, но пока только в тех случаях, когда данные в индексе действительно изменяются. В примере из прошлой статьи использовался простой оператор UPDATE, который порождает построчный или «узкий» план запроса. В этой статье будет показано как оптимизируется план с изменениями данных с индексами в «широком» плане запроса.

Релиз SQL Server Management Studio 19.0

SSMS 19.0 является последней общедоступной версией. Если у вас установлена предварительная версия SSMS 19, ее следует удалить перед установкой SSMS 19.0.

·  Номер выпуска: 19.0
·  Номер сборки: 19.0.20196.0
·  Дата выпуска: 26 января 2023 г.

Подробности выпуска тут: https://learn.microsoft.com/ru-ru/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16&tabs=command-line

SQL Server Management Studio 19.0.1:
Китайский (упрощенное письмо) | Китайский (традиционное письмо) | Английский (США) | Французский | Немецкий | Итальянский | Японский | Корейский | Португальский (Бразилия) | Русский | Испанский

20.1.23

Внутренняя оптимизация операций изменения для индексов

Автор оригинала: Craig Freedman

Планы запросов на вставку, изменение и удаление состоят из двух частей. Первая часть называется курсор чтения, и она определят то множество строк, которое необходимо вставить, изменить или удалить. Вторая часть называется курсор записи, и в этой части непосредственно происходит вставка, изменение или удаление данных. Давайте рассмотрим простой пример:

SQL Server 2012 Database Engine Task Scheduling

Дата публикации: 13 августа 2013г.

Автор: Боб Дорр – главный эскалационный инженер поддержки SQL Server
По материалам статьи: How It Works: SQL Server 2012 Database Engine Task Scheduling

В течении последних лет в разных источниках были описаны алгоритмы работы планировщика SQL Server. В частности, в статье «The Guru’s Guide to SQL Server Architecture and Internals» есть глава, написанная разработчиком планировщика (Sameer) и Кеном Хендерсеном. Автор этой статьи иранее описывал некоторые технические детали алгоритмов планирования задач SQLServer.

Эта статья посвящена некоторым изменениям, которые появились в SQL Server 2012. Статья не претендует на охват всех нюансов (коих слишком много), вместо этого будет частично проиллюстрирована работа алгоритма в его современной реализации, что позволит вам лучше понимать поведение планировщика SQLServer . Автор допускает по тексту несколько вольную трактовку в описании алгоритмов, преследуя цель избавить статью от лишней официальности.

Хитрость №3. Проектирование DWH и кубов на MS SQL/SSAS: оптимизация больших кубов

http://www.sql.ru/blogs/dwh/1232

Автор: Критик

Часто через 3-4-5 лет после начала работы ОЛАП-отчетности, система начинает работать несколько медленнее, что раньше. Вобщем-то понятно почему - объемы данных растут, а оборудование как правило остается тем же самым.

Хитрость №2. Проектирование DWH и кубов на MS SQL/SSAS: оптимизируем процессинг DC-групп мер

http://www.sql.ru/blogs/dwh/1231

Автор: Критик

Когда мы создаем в SSAS меру типа distinct count, она по-умолчанию создается в новой группе мер, причем метаданные источника данных копируется из исходной группы мер. То есть, если исходная группа мер содержала в себе 50 секций, то определения(запросы) этих секций абсолютно таком же виде скопируются в новую группу мер.

Хитрость №1. Проектирование DWH и кубов на MS SQL/SSAS: мера по-умолчанию

http://www.sql.ru/blogs/dwh/1228

Автор: Критик

За долгое время накопилась куча весьма простых хитростей, которые не достойны отдельной статьи, но способны существенно облегчить жизнь разработчикам, а в некоторых случаях даже существенно повысить производительность.

Поэтому я решил их опубликовать с кратким описанием. Часть где-то найдена, часть придумана. Возможно кому-то пригодится. Необходимое ПО - SSAS 2005+

19.1.23

Рисуем графики в SQL Server Management Studio

http://www.sql.ru/blogs/decolores/1885

добавлено: 29 ноя 14

Автор: DeColo®es

Отображение каких-либо данных в виде графиков - это часто понятнее и нагляднее, чем таблицы.
Для того, чтобы представить какие-либо данные в виде того или иного графика существуют множество инструментов, начиная простого и мощного Excel, который почти всегда под рукой. 
Но что если Excel не установлен или не доступен?

И даже если установлен - часто разработчик или администратор базы данных имеет некий набор скриптов, которые позволяют быстро оценить текущее состояние системы и создавать отдельный dashboard в Excel или где-то еще не хочется.
В общем - если очень хочется, то графики можно рисовать и в SSMS.

Смотрим текущую активность SQL Server

http://www.sql.ru/blogs/decolores/1871

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

Боремся с неявным приведением типов в SQL Server

http://www.sql.ru/blogs/decolores/1112

Автор: DeColo®es

Неявное приведение типов данных, которое в определенных случаях допускается в T-SQL - очень удобная штука. Для новичка. С приобретением опыта, разработчики стараются держать все под контролем и чаще скорее сами стараются определить, каким образом значение должно преобразовываться из одного типа в другой. Дело дошло до того, что возможность полного запрета на неявную конвертацию регулярно запрашивается сообществом пользователей SQL Server у разработчиков...
Чем же так плохо наличие вроде бы очень удобного, прощающего ошибки и сокращающего код функционала СУБД?

Анализ использования параметров процедур в SQL Server

 http://www.sql.ru/blogs/decolores/1089

Автор: DeColo®es

В большинстве баз данных, которые мне доводилось видеть, встречаются "универсальные" процедуры со множеством параметров. Как правило, это процедуры поиска чего-либо в базе данных или же процедуры, формирующие набор данных для отчета. При этом чем больше параметров, тем меньше их используется.

Просмотр списка баз на сервере и пути последних бэкапов SQL Server

http://www.sql.ru/blogs/decolores/1067

добавлено: 27 окт 11

Автор: DeColo®es

Как-то, для систематизации бэкапов баз, потребовалось составить список баз с информацией о том, когда и куда был сделан последний бэкап, текущем размере базы и т.д.

Собственно, делюсь скриптами.
Скрипты разные для версии 2000 и всех от 2005 и старше.
Тот, который написан для 2000 конечно будет работать и на 2005+, но он медленнее из-за необходимости обновления информации о реальном распределении пространства внутри файла данных.

Не очень известный факт о кластерном индексе

Ray D's blog

Казалось бы все уже давно разжевано, однако об одном интересном факте мало кто знает - если кластерный индекс уникальный, то при создании неуникальных некластерных индексов, ключ кластерного индекса будет не только на листовом уровне дерева, но и в промежуточных узлах.

Даем возможность пользователю создавать логины в SQL Server, не давая прав администратора.

http://www.sql.ru/blogs/decolores/950

добавлено: 08 апр 11
Автор: DeColo®es

Очень популярный на форумах по SQL Server вопрос - "Как защититься от администратора?".
Самый популярный ответ "А не надо пущать!"
Но что делать, когда кто-то должен все-таки управлять сервером?
Например, создавать логины новых пользователей...

17.1.23

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

По материалам статьи Randy Dyess " Documented and Undocumented Trace Flags for SQL Server 2000 and 7.0"

Информация в этой статье относится к Microsoft SQL Server 7.0/2000 (все издания)

Флаги трассировки (Trace flags) обычно используются для временного отключения некоторых функций базы данных, что позволяет изменять заданное по умолчанию поведение СУБД или наблюдать её обычно скрытые проявления. Как правило, их действие остаётся в силе пока они не будут выключены вручную, или не будет перезапущен SQL сервер. Имейте в виду, что большинство флагов не документированны и Microsoft может изменять их поведение в последующих версиях SQL сервера или с выходом сервисных пакетов и заплат. Флаг может быть установлен или при запуске SQL сервера, используя опцию -Ttrace#, или с помощью команды DBCC TRACEON. Для отключения флага в первом случае нужно перезапустить SQL сервер, а во втором случае используется команда DBCC TRACEOFF.

Обоснование использования динамических SQL запросов

По материалам статьи Robert Marda на сайте sqlservercentral.com: When to Use Dynamic SQL

Динамический SQL запрос - это некоторый код, который создаётся и сохраняется в переменной, пока не возникнет необходимость его выполнения. Большинство DBA и разработчиков предпочитают не использовать динамические SQL запросы по целому ряду причин. Среди наиболее типичных таких причин то, что план выполнения динамического запроса не будет кэшироваться и то, что безопасность должна устанавливаться другими способами. Тем не менее, автор использует динамические запросы всякий раз, когда, считает, что это лучший способ получения результата, и твёрдо полает, что для динамических запросов есть место почти в каждой базе данных.

Древовидные структуры в SQL

По материалам статьи Joe Celko на intelligententerprise.com " Trees in SQL"

Обзор некоторых общих вопросов, касающихся древовидных структур и иерархии в SQL.

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

Цепочки владения в SQL Server

По материалам статьи Amol Kulkarni: Ownership Chains in Yukon

Перевод Виталия Степаненко

Когда объекты базы данных последовательно обращаются друг к другу, такая последовательность называется "цепочкой". Хотя эти цепочки не существуют независимо, когда SQL Server рассматривает ссылки в цепочке, то он оценивает права пользователя на доступ к объектам иначе, чем если бы пользователь обращался к ним по отдельности. Эти различия имеют большое влияние на управление безопасностью.

В этой статье мы рассмотрим, как работают цепочки владения в Yukon. Для демонстрации, мы используем троих пользователей (Mary, John и Scott) и рассмотрим три сценария.

Отсутствующие значения

Глава из книги Кена Хендерсона: Профессиональное руководство по Transact-SQL. Для профессионалов

Авторы блога благодарят издательским домом ПИТЕР за предоставленные к публикации материалы.

Аннотация издательства

Кен Хендерсон хотел написать самую лучшую из возможных книг о практическом программировании на Transact-SQL. И ему это удалось. «Профессиональное руководство по Transact-SQL» будет для вас чем-то вроде путеводителя. Эту книгу легко читать, в ней много новых интересных идей и примеров кода. Хотя она посвящена исключительно Transact-SQL, вы увидите, что многие из подходов и методов будут работать с любым SQL-продуктом, ведь здесь описывается разработка высококачественного кода, независимо от его применения. Автор поставил перед собой задачу написать не только полезную, но и интересную книгу для программистов, в которой не было бы формализмов и от которой не веяло бы нафталином. Кен Хендерсон уверен, что технический писатель должен писать так, как говорят читатели. Так что читайте и наслаждайтесь!

Введение

Из тридцати шести альтернатив лучшей является побег. (Китайская пословица)

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

Новшества SQL Server 2005 для поддержки современных серверных платформ

По материалам статьи Slava Oks: A new platform layer in SQL Server 2005 to exploit new hardware capabilities and their trends

Тенденции развития аппаратных средств вычислительной техники оказывают влияние на то, как мы проектируем и разрабатываем программное обеспечение. Для сегодняшнего состояния рынка, персональные компьютеры с большим числом процессоров больше не редкость - это действительность.
Наличие таких возможностей как симметричная многопоточность (SMT), много-ядерные процессоры, слабо совместимые модели, память и процессоры с горячей заменой - становятся все более важны для достижения требуемых уровней производительности систем, их масштабируемости и администрирования. Есть две основные проблемы, связанные с проектированием программного обеспечения для современных аппаратных средств: недостаток хороших инструментов и неадекватный опыт разработчиков. Сервера базы данных пытаются использовать новые возможности серверных платформ, т.к. они стали доступны. Обычно сервер базы данных содержит встроенный уровень поддержки платформы, который скрывает от большинства разработчиков сервера базы данных специальные сообщения от аппаратных средств. SQL Server в предыдущих версиях имел довольно простой уровень поддержки платформы с ограниченной функциональностью. В SQL Server 2005 мы создали новый уровень поддержки платформы, который позволяет максимально задействовать параллелизм, секционирование и размещение. Этот уровень называется SQLOS. SQLOS - операционная система непривилегированного режима, которая встроена в иерархию дизайна сервера баз данных, точно также, как в эту иерархию входят аппаратные средства, на которых запускается сервер. Основные объекты SQLOS, это узлы, планировщики и задачи. SQLOS может подстраиваться и корректироваться под имеющуюся аппаратную конфигурацию сервера, на который он устанавливается. Это реализуется за счёт довольно сложного дизайна API, который позволяет разработчикам получать максимум преимуществ аппаратной платформы при написании программ, как на высоком, так и на низком уровне. Имеется встроенная поддержка размещения, параллелизма, и администрирования. SQLOS позволяет существенно поднять производительность и масштабируемости SQL Server 2005. В новой версии DBA получили возможность балансировать нагрузку SQL Server между компонентами имеющейся аппаратной конфигурации, в соответствии со своими бизнес задачами. В процессе разработки SQLOS мы получили очень много ценной информации и наметили ряд возможных усовершенствований на будущее.

Поддержка и разрешение проблем процессорной архитектуры NUMA в SQL Server 2005

По материалам статьи Slava Oks: SQL Server 2005 NUMA support & troubleshooting


SQL Server 2005 был разработан с учётом того, чтобы использовать в своей работе возможности и интерфейсы NUMA, которые поддерживаются современными серверными платформами и операционной системой Windows. Есть несколько проблем, о которых Вы должны знать при попытке запуска SQL Server на поддерживающих NUMA платформах.
В этой статье я хотел бы сделать обзор поддержки NUMA в Windows и SQL Server, описать их возможные конфигурации, и дать несколько советов относительно разрешения возможных проблем.
В последнем июньском SQL Server 2005 CTP реализовано большинство из необходимого для поддержки NUMA, так что Вы уже можете опробовать эти возможности и лично убедиться в том, как поддержка NUMA используется на практике. Если Вас больше интересует поиск и устранение проблем, без необходимости вникнуть в причины проблемы, Вы можете сразу перейти к разделу разрешения проблем в этой статье.
Уровень изложения материала: я ожидаю, что Вы имеете представление о классической архитектуре ccNUMA, и поэтому я не буду вдаваться в её подробности и объяснять её принципы.

Тюнинг SQL Server 2005 для программной поддержки NUMA

По материалам статьи Slava Oks: Configuring SQL Server 2005 for Soft NUMA

Недавно, в статье http://blogs.msdn.com/slavao/articles/441058.aspx я рассмотрел вопросы обеспечения поддержки NUMA на программном уровне. На этой неделе один из наших клиентов столкнулся с интересной проблемой. Клиенту необходимо было балансировать загрузку процессоров в рамках одного экземпляра SQL Server. Приложение клиента было гетерогенным. Часть запросов этого приложения была схожа с запросами эталонного теста TPCH, а другая часть предназначена для загрузки данных. В распоряжении клиента имеется NUMA система, с 2 узлами по четыре процессора в каждом. Клиент хотел оставить под загрузку данных два процессора, а остальные процессоры предоставить для исполнения запросов. Возможно ли это реализовать?

Секционированные таблицы и индексы SQL Server 2005

По материалам статьи Kimberly L. Tripp: SQL Server 2005. Partitioned Tables and Indexes

Перевод Алексея Сафонова

Не смотря на то, что секционированные таблицы и индексы всегда были неотъемлемой частью больших баз данных, призванной улучшать их производительность и управляемость, в Microsoft SQL Server 2005 появились новые возможности, упрощающие процесс разработки таких решений. Данный доклад посвящен эволюции секционирования таблиц в SQL Server: от ручного секционирования данных путем предварительного создания таблиц в качестве подготовительного шага (в SQL Server 7.0 и SQL Server 2000) до процедур реального секционирования таблиц. В SQL Server 2005 новые табличные функции секционирования значительно упрощают разработку и администрирование секционированных таблиц, в месте с тем еще более увеличивая их производительность. Основная задача статьи - составить для Вас представление о секционировании в SQL Server 2005, о том зачем, где и как применять его с большей пользой для Ваших сверхбольших баз данных (VLDB - Very Large Database). Но несмотря на то, что секционирование в SQL Server 2005 нацелено прежде всего на работу с VLDB, следует помнить, что не все базы данных большие с самого начала. SQL Server 2005 обеспечивает гибкость и производительность, значительно упрощая создание и обслуживание секционированных таблиц. Прочтите эту статью, чтобы получить подробную информацию о том, почему Вам стоит знать о секционированных таблицах, что они могут Вам предложить, и, наконец, как разрабатывать, реализовывать и обслуживать секционированные таблицы.

AWE и locked pages in memory на 64-х битной платформе

По материалам статьи Slava Oks: Be Aware: Using AWE, locked pages in memory, on 64 bit


Мы уже говорили о механизме Windows AWE на 32-х битной платформе и как SQL Server его использует. Сегодня я хотел бы пробежаться по AWE и связанным с ним механизмам на 64-х битной платформе.
Многие наверняка удивлены тем, что механизм AWE здесь все еще используется и оказывается полезным и на 64-х битных платформах. Вы уже знаете, что этот механизм состоит из двух частей, распределяющих физическую память и отображающую её на VAS данного процесса. Преимущество механизма распределения состоит в том, что если физическая память распределена, то операционная система уже не сможет её затребовать, пока использующий её процесс не будет завершён или это процесс освободит память, вернув её операционной системе. С помощью такого подхода приложение может управлять и даже полностью предотвращать листание. Преимущество механизма mapping/unmapping в том, что одна и та же физическая страница может быть отображена на разные участки VAS. Как Вы догадываетесь, на 64-х битных платформах в unmapping нет необходимости, поскольку VAS мы имеем достаточно, чтобы вместить всю имеющуюся физическую память.

Размер стека IA64

По материалам статьи Slava Oks: Be Aware: IA64 Stack Size


Тема стека в операционной системе Windows всегда вызывает интерес. С ней связано много интересных технических проблем. В какие-то моменты Вы думаете, что полностью понимаете всё о стеке, но потом внезапно обнаруживаете ещё одну тайну.

Кэширование в SQLOS

 По материалам статьи Slava Oks: SQLOS Caching


Эта статья рассказывает о том, как изменился механизм кэширования в SQL Server 2005.

Отличия в кэшировании SQL Server 2000 и SQL Server 2005

Управление памятью SQL Server 2005 отличается от SQL Server 2000 более сложной структурой кэширования. В SQL Server 2000 реализовано два основных кэша: кэш страницы данных, называемый Buffer Pool, и кэш процедур, кэш планов исполнения запросов. Buffer Pool и кэш процедур очень сильной связаны между собой. Например, кэш процедур использует механизм выселения буферного пула, чтобы управлять его размером, не смотря на то, что оба кэша имеют собственные политики оценки. Использование связанных BP и кэша процедур значительно упрощает механизм кэширования SQL Server 2000, с которым мы, как правило, имеем дело при разрешении проблем.
Эта модель очень хорошо работала в SQL Server 2000, но она непригодна для SQL Server 2005. С появлением в SQL Server 2005 новых функциональных возможностей и новых требований, появилась необходимость увеличения числа кэшей. Связь всех кэшей с Buffer Pool стала не только проблематичной, но даже и невыполнимой. Стало очевидно, что мы должны создать общую структуру кэширования. Ключевой идеей этой структуры является однородный механизм и общая политика оценки.

Обзор механизмов виртуальной памяти Windows (продолжение "Обзор Virtual Address Space")

 По материалам статьи Slava Oks: A look at Windows Virtual Memory mechanisms (continuation of "A look at Virtual Address Space - VAS")

Как я обещал в прошлый раз, это будет следующая статья о памяти. Как Вы помните, моей целью является демонстрация того, как в SQL Server устроено управление использованием памяти. Но для читателя, чтобы в этом хорошо разобраться, я думаю важно также уяснить, как управляет памятью операционная система Windows. Важно понимать детали такого управления памятью, однако сейчас я хочу, чтобы Вы поняли заложенные в это концепции! В некоторых случаях я нарочно буду пропускать подробности, потому что в данном случае они не очень важны, и многие из них могут отличаться в разных версиях операционной системы. И так, позвольте приступить!

Деревья в поддерживающих стандарты SQL базах данных

По материалам статьи Eugene Lepekhin: Trees in SQL databases


Статья рассказывает о том, как улучшить производительность деревьев в SQL.

Введение

Рано или поздно в своём проекте баз данных Вы столкнетесь с необходимостью хранения иерархической информации. Например: структура предприятия, категории товаров, каталог изделий или папок с документами; всё это хорошие примеры иерархических структур. Конечно же, можно реализовать их хранение в виде самосвязанной таблицы. Проблемы начнутся, когда нужно будет создавать запросы к иерархическим данным. Например: "Что, если мы имеем дело со структурой предприятия, и хотим узнать, сколько служащих подчиняются менеджеру X?". Такие решения подобных проблем уже были описаны. Например, можно посмотреть книгу и статьи Joe Celko, в которых есть подробные описания таких решений.
Упомянутые выше методы хороши, когда необходимо только читать данные, но когда потребуется изменять дерево, может наблюдаться значительное снижение производительности.
Автор собирается предложить свой метод, сравнимый по производительности чтения, но более производительный при модификации дерева.

Менеджер памяти SQLOS: диагностика вытеснения памяти

По материалам статьи Slava Oks: SQLOS's memory manager: responding to memory pressure


При настройке SQL Server очень важно понимать, как он реагирует на вытеснение памяти. Я уже посветил довольно много времени описанию разных типов вытеснения памяти. В этой статье Вы узнаете, почему это так важно. Вытеснение памяти можно классифицировать двумя основными группами: вытеснение VAS и вытеснение физической памяти. Вытеснение физической памяти может быть спровоцировано операционной системой, мы назвали его внешним, или оно может быть спровоцировано процессом, такое вытеснение мы называем внутренним.
SQLOS использует специализированную структуру, которая занимается обслуживанием любого из типов вытеснения памяти процесса. В основе этой структуры находится Resource Monitor (RM). RM контролирует состояние внешних и внутренних индикаторов памяти. Когда один из них изменяется, RM отслеживает состояние всех индикаторов. При этом соответствующее оповещение отображает состояние индикатора. Такое оповещение рассчитано на то, что оно будет разослано всем клеркам памяти (Memory Clerks).

Контроль VAS в SQL Server 2005, продолжение…

По материалам статьи Slava Oks: Tracking VAS in Yukon, cont...


Некоторые из Вас, возможно, скучали, читая мою предыдущую статью "Обзор Virtual Address Space - VAS". Я понимаю, что тема VAS до этого была многократно освещена множеством авторов и ей было уделено много времени, и Вы наверняка знаете об этом больше, чем даже хотелось бы знать. Однако, наберитесь, пожалуйста, терпения. Я хочу дать достаточный предварительный обзор темы, что бы читатель смог легко ориентироваться в предлагаемом ему материале. Мне хотелось бы показать ту часть внутренней организации операционной системы, без которой будет сложно охватить тему, о которой Вы хотите узнать побольше: "Управление памятью в SQL Server". Поэтому я продолжу эту тему в следующий раз.

Основы I/O в SQL Server

По материалам статьи Bob Dorr: SQL Server 2000 I/O Basics


Изучение требований к операциям ввода-вывода (I/O) с файлами баз данных Microsoft SQL Server поможет Вам поднять производительность системы и избежать ошибок, связанных с I/O.

ВВЕДЕНИЕ

Поскольку на рынке продолжают появляться новые устройства и решения для дисковых хранилищ, условия, в которых работает Microsoft SQL Server, стали чрезвычайно разнообразным. Чтобы гарантировать целостность данных, которые обслуживает SQL Server, очень важно, что бы подсистема I/O обладала соответствующими функциональными возможностями.
Цель этой статьи состоит в том, чтобы описать требования к I/O для операций с файлами баз данных SQL Server, на основании чего поставщики решений и пользователи могли бы проанализировать и оптимизировать свои системы с SQL Server.

Важно: При планировании, развертывании и поддержке Microsoft SQL Server, убедитесь, что система ввода-вывода удовлетворяет всем факторам, на которые акцентируется внимание в этой статье.

Microsoft Knowledge Base и Microsoft SQL Server Books Online (BOL) содержат много подробной информации, связанной с операциями I/O в SQL Server. В тексте, при необходимости, автором указываются ссылки на информацию, которая важна для понимания предлагаемого в этой статье материала.
Важно: Автор рекомендует полностью ознакомиться с материалом, на который он ссылается, перед тем, как Вы начнёте изучать следующие за ссылкой главы.
Справочная система Books Online (BOL): Все ссылки на BOL, используемые в этой статье, взяты из Microsoft SQL Server 2000 Books Online (обновлённая редакция, с учётом новшеств SP3), который можно скачать по этой ссылке: http://www.microsoft.com/sql/techinfo/productdoc/2000/books.asp. Если в открывшейся странице нажать на ссылку Product Documentation, можно выбрать альтернативный вариант просмотра BOL в интерактивном режиме.

Обзор Virtual Address Space - VAS

По материалам статьи Slava Oks: A look at Virtual Address Space - VAS


Память представляет собой набор разделяемых между приложениями, их компонентами и операционной системой ресурсов. Нужно чётко себе представлять, что происходит при обращении к каждому конкретному ресурсу памяти. Очень часто, разработчики, пользователи или администраторы баз данных ошибочно считают, что при обращении к разным ресурсам памяти используется один универсальный раздел памяти. Такое представление было справедливым для DOS, когда всё было просто и не существовало даже понятия виртуальной памяти, а приложения не разделяли ресурсы компьютера между собой. С тех пор многое изменились.

Контроль VAS в SQL Server

По материалам статьи Slava Oks: Tracking VAS in Yukon


Когда разработчики приступили к работе над следующей версией SQL Server - Yukon, они осознавали, что развитые средства поддержки являются одним из ключевых моментов успешности проекта. Своей целью автор ставит охват тем, описывающих "нижние" уровни организации СУБД, которые многим из Вас, как он уверен, действительно интересны, то есть это управление памятью и планирование ресурсов. В этой статье представлен беглый обзор того, как можно контролировать и диагностировать виртуальное адресное пространство - Virtual Address Space (VAS), используемое SQL Server. Автор надеется, что Вы понимаете что такое VAS и как оно организовано в Windows. Надеясь на Ваше терпение, автор постарается побыстрее описать всю исходную информацию, что бы в ближайшем будущем мы могли подробно поговорить о менеджере памяти SQL Server.
Представленный ниже запрос можно выполнять на сервере периодически, чтобы отслеживать возможные отклонения, связанные с VAS. Постоянное отклонение VAS от нормы может указывать на потенциальную проблему. Не смотря на то, что Yukon умет восстанавливаться после вытеснения VAS намного лучше, чем SQL Server 2000, если в реальности существует утечка памяти, спровоцированная внешними компонентами загруженными в наше VAS, поделать с этим будет практически ничего нельзя...

Изменения dbcc memorystatus в SQL Server 2005

По материалам статьи Slava Oks: Changes in dbcc memorystatus in Yukon


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

Утечка памяти - определение и классификация

По материалам статьи Slava Oks: Look at Memory Leaks - Classify and Identify


В своей предыдущей статье автор говорил о типах вытеснения памяти. Сейчас он хотел бы обратиться к близкой теме - "Утечка Памяти". Прежде, чем продолжить изложение материала, автор хочет предупредить Вас, что он рассчитывает на то, что читатель знаком с механизмами и принципами управления памятью в Windows.

Вытеснение памяти - классификация

По материалам статьи Slava Oks: Memory Pressure - Classified


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

Менеджер памяти SQLOS и SQL Server Buffer Pool

По материалам статьи Slava Oks: SQLOS's memory manager and SQL Server's Buffer Pool


В SQL Server 2005 менеджер памяти SQLOS состоит из нескольких компонент, таких как: Узлы памяти (Memory Nodes), Клерки памяти (Memory Clerks), Кэши памяти (Memory Caches) и Объекты памяти (Memory Objects). На Рисунке 1 изображёны компоненты менеджера памяти и их связи:

Знакомьтесь - SQLOS

По материалам статьи Slava Oks: SQLOS - unleashed


Если Вы изучали SQL Server 2005 Beta 1 и Beta 2 Вы могли заметить, что в каталоге bin больше нет файла ums.dll. Причина этого проста, его больше не существует. В SQL Server 2000 библиотека ums.dll обеспечивала работу SQL Server в непривилегированным режиме и неприоритетное планирование ресурсов (non-preemptive scheduling). Так что же произошло с ней в новой версии? Теперь больше не используется неприоритетное планирование? Ответом на это будет - "Нет", SQL Server 2005 по-прежнему использует такое планирование ресурсов и, как показывают многие исследования в области реляционных баз данных, для повышения производительности и обеспечения требований масштабирования, нужно и дальше развивать возможности использования неприоритетного планирования.

SQL Server 2005. Snapshot - изоляция транзакций

По материалам статьи Narasimha Rao AV: Snapshot Isolation

Эта статья описывает разные уровни изоляции, использующиеся в SQL Server, а также освещает одно из новшеств следующей версии этой СУБД под кодовым название Yukon, Snapshot - изоляцию. Описание Snapshot – изоляции будет сопровождаться примерами, и некоторыми фактами, которые могут показаться неожиданными при использовании этого нового для SQL Server уровня изоляции транзакций.

Поддержка XML в Microsoft SQL Server 2005

По материалам статьи XML Support in Microsoft SQL Server 2005



Перевод Виталия Степаненко

В этой статье рассматривается добавленная в SQL Server 2005 поддержка XML. В статье также показано, как эта поддержка интегрируется с программной поддержкой со стороны клиента в .NET Framework V2.0 и в родном коде, как OLEDB и SQLXML.

Ключи к базе данных

Джо Селко (Joe Celko)

Microsoft вовсю рекламирует применение CLR в следующей версии SQL Server 2005. Например: «Используя интеграцию с com­mon language runtime (CLR), вы сможете программировать ваши хранимые процедуры, функции и триггеры на любом из языков, поддерживающих .Net Framework» (msdn.microsoft.com/sql/default.aspx?pull=/library/en­us/dnsql90/html/sql_ovyukondev.asp).

Использование статистики оптимизатором запросов Microsoft SQL Server 2005

По материалам статьи Eric N. Hanso: Statistics Used by the Query Optimizer in Microsoft SQL Server 2005

Microsoft SQL Server 2005 собирает статистику по индексам и полям данных, хранимых в базе. Эта статистика используется оптимизатором запроса SQL Server при выборе оптимального плана исполнения запросов на выборку или обновление данных. В этой статье описывается то, какие данные собираются сервером, где они хранятся, и какие команды нужно использовать для обновления и удаления статистики. По умолчанию, SQL Server 2005 создает и обновляет статистику автоматически, когда решит, что это будет полезным. В этой статье описано, как можно изменять заданные по умолчанию значения конфигурации сбора статистики на разных уровнях (столбец, таблица и база данных).

16.1.23

Фильтрация секретов в SQL Server во время трассировки и аудита

http://blogs.technet.com/b/lyudmila_fokina/archive/2010/05/27/sql-server.aspx

Людмила Фокина

Когда речь идет о конфиденциальных данных (пароли, например), хочется быть уверенным, что они не попадают в SQL Trace и SQL аудит.

SQL Server автоматически распознает и отфильтровывает DDL и встроенные функции, которые могут содержать секретную информацию (например: OPEN SYMMETRIC KEY, EncryptByKey и т.д.).