16.1.23

Исполнения T-SQL команд на удаленном сервере с помощью EXECUTE AT

http://blogs.technet.com/lyudmila_fokina/archive/2007/06/14/t-sql-execute-at.aspx


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

Ну, вот. С индексами разобрались. Теперь, как и обещала, короткие (и не очень) сообщения в стиле «Tips & Tricks». Знаете ли вы, что… В предыдущих версиях SQL Server (до SQL Server 2005) команду EXECUTE можно было выполнять только на локальном сервере. В SQL Server 2005 команда EXECUTE имеет параметр AT, который используется для выполнения EXECUTE на удаленном linked сервере.

Построение индексов – часть 7: Фоновое построение индексов (Часть 2)

http://blogs.technet.com/lyudmila_fokina/archive/2007/06/06/7-2.aspx


Lyudmila Fokina

Последовательность фонового построения индекса:

    1.   Ждем пока завершаться исполняющиеся на данный момент DML операции;

  1. Берем Intend Share (IS) блокировку на таблицу - эта блокировка будет держаться до конца построения индекса, что ограничивает набор операций выполняемых в параллель с построением индекса. (Например: truncate table, BCP операции будут недоступны); 
  2. Берем Share (S) блокировку, чтобы просканировать таблицу. Эта блокировка держится в течении короткого времени; любые параллельные операции на данных невозможны в этот период;
  3. Отпускаем Share блокировку; 
  4. Собственно построение индекса – сканирование, сортировка, построение индексного дерева; 
  5. Если нужно перестроит некластерные индексы* – возвращаемся к шагу 2 и повторяем для каждого индекса;
  6. Заканчиваем построение:

Построение индексов – часть 7: Фоновое построение индексов (Часть 1)

http://blogs.technet.com/lyudmila_fokina/archive/2007/05/25/7-1.aspx


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

В SQL Server 2005 стало возможно строить, перестраивать и удалять* индексы фоновом режиме. Это позволяет проводить текущее обслуживание, не прерывая основной работы. Опция «ONLINE» делает возможным параллельный доступ к данным таблицы/индекса во время построения/перестроения индекса. Например, когда один пользователь перестраивает кластерный индекс, другой пользователь может получать и обновлять данные таблицы, для которой перестраивается индекс. Для сравнения: при автономном построении индекса, построитель индекса держит эксклюзивную блокировку на таблицу и индекс в течение всего времени построения, что не дает получать или обновлять данные таблицы/индекса.

Запоздалое вступление - Типы построения индексов - Часть 2 (секционированные индексы)

http://blogs.technet.com/lyudmila_fokina/archive/2006/11/21/524236.aspx

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

-         Построение секционированных или построение несекционированных индексов:

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

Запоздалое вступление - Типы построения индексов - Часть 1

http://blogs.technet.com/lyudmila_fokina/archive/2006/11/21/523219.aspx


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

Коллеги! Мне тут было сделано справедливое замечание (offline J), что я начала рассказывать о различных планах построения индексов, не дав краткого предварительного обзора того, какие типы индексов (с точки зрения их построения) существуют и чем они отличаются. Например, фоновое построение индекса и секционированные индексы – это новые возможности SQL Server 2005, и не у всех была возможность с ними уже ознакомиться.

Построение индексов – часть 6: построение секционированного индекса (Продолжение – Невыровненные индексы)

http://blogs.technet.com/lyudmila_fokina/default.aspx

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

Параллельное построение невыровненных секционированных индексов

В одном из предыдущих постов я писала, что существуют две категории секционированных индексов:

Построение индексов – Часть 6. (План для индексирования представления без гистограмм)

http://blogs.technet.com/lyudmila_fokina/archive/2006/12/21/565167.aspx


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

Если гистограммы не доступны на момент построения индекса (например, при построении индекса для представления) – т.е. мы не можем получить статистику о распределении данных (собрать статистику возможно только для «реального» объекта, и пока кластерный индекс для представления не построен, ее нет, поэтому выбирается другой план) – SQL Server не может воспользоваться планом построения индекса описанном в раньше (см. ноябрьские посты об интервальном секционировании). SQL Server выбирает в данном случае план с обычным параллельным сканированием, который ничего не знает о распределении данных.

Построение индексов – Часть 5. Интервальное секционирование* (для высокопроизводительных машин)

http://blogs.technet.com/lyudmila_fokina/archive/2006/09/30/460034.aspx


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

Схематично параллельный план построения индекса для высокопроизводительных машин можно представить следующим образом:

Построение индексов – Часть 4. Параллельное, автономное построение несекционированного индекса (Offline, Parallel, No Partitioning)


http://blogs.technet.com/lyudmila_fokina/archive/2006/09/26/458993.aspx


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

Существует 3 основных категории паралльных планов построения индекса:

  1. Интервальное секционирование (для машин малой мощности);
  2. Интервальное секционирование (для высокопроизводительных машин);
  3. План для индексирования представления без гистограм (No histogram Indexed view).

Построение индексов – Часть 3. Использование опции Sort_In_Tempdb


http://blogs.technet.com/lyudmila_fokina/archive/2006/09/13/455747.aspx


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

В предыдущем сообщении я упоминала использование опции Sort_In_Tempdb при создании индексов. Эта опция заставляет SQL Server использовать базу данных tempdb для хранения промежуточных результатов сортировки. Немнго подробнее о том, когда это может быть полезно...

Построение индексов – Часть 2

http://blogs.technet.com/lyudmila_fokina/archive/2006/09/07/454514.aspx


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

Чтобы построить индекс необходимо сначала отсортировать heap. Таким образом, процесс построения индекса будет выглядеть следующим образом: сканирование «кучи», сортировка (если возможно – в оперативной памяти*) и собственно построение дерева индекса на основании результатов сортировки. Эти промежуточные результаты требуют дополнительного места (либо в памяти, либо на диске). SQL Server, тем не менее, освобождает каждый экстент структуры, используемой для хранения этих промежуточный результатов, как только все данные из него будут добавлены в дерево индекса. Таким образом, общий объем дискового пространства (в случае, если сортировка в памяти невозможна), необходимого для построения индекса уменьшается с 3х («куча» + сортировочная стрктура + дерево индекса) до 2,2х (приблизительно).

Построение индексов – Часть 1

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

Небольшое вступление... При работе с большими базами данных время построения/перестроения индкса может стать узким местом. Особенно критично это для баз данных который должны быть доступны постоянно. Как организовать текущее обслуживание индексов в таких базах данных? Здесь необходимо ответить на несколько вопросов: