Новость из категории: Информация

Табличные переменные и временные таблицы в SQL Server 2014

Содержание:
1. Типы таблиц, оптимизированных для размещения в оперативной памяти, и параметры TVP (Вы читаете данный раздел);
2. Параллельная инструкция SELECT INTO;
3. Кардинальность с флагом трассировки 2453.
Табличные переменные и временные таблицы в SQL Server 2014

Как это ни странно, но поддержка типов таблиц (http://msdn.microsoft.com/en-us/Iibrary/ms175007.aspx) и возвращающих табличное значение параметров (TVP) (http://msdn.microsoft.com/en-us/library/bb510489.aspx) появилась только в SQL Server 2008. До выхода версии SQL Server 2014 табличная переменная на основе табличного типа всегда была представлена как набор страниц в tempdb. К таблицам, оптимизированным для размещения в оперативной памяти, и хранимым процедурам, скомпилированным в собственном коде, реализованным в SQL Server как часть In-Memory OLTP, специалисты Microsoft добавили поддержку типов таблиц, оптимизированных для размещения в оперативной памяти, и параметров TVP. Первоначально предполагалось обеспечить возможность объявлять табличную переменную типа таблиц, оптимизированных для размещения в оперативной памяти, заполнять ее строками и передавать как параметр TVP хранимой процедуре, скомпилированной в собственном коде. Но ничто не мешает создать табличные переменные на основе типов таблиц, оптимизированных для размещения в оперативной памяти, и использовать их для других целей, в том числе передавать в качестве параметров TVP регулярным процедурам. Таким образом можно реализовать преимущества производительности, свойственные структурам, оптимизированным для размещения в оперативной памяти, и избежать дискового представления в tempdb. Просто помните, что начальная реализация компонента In-Memory OLTP в SQL Server 2014 с использованием в запросе таблиц, оптимизированных для размещения в оперативной памяти, мешает параллелизму. Поэтому обязательно проведите тестирование, чтобы сравнить типы дисковых таблиц и параметры TVP с соответствующими элементами, оптимизированными для размещения в оперативной памяти, и выяснить, какие из них больше подходят для вашего случая.

Табличные переменные и временные таблицы в SQL Server 2014
Проверка существования папки IMOLTP

Для использования этих возможностей необходимо добавить в базу данных файловую группу для данных, оптимизированных для размещения в оперативной памяти (отмеченную как CONTAINS М EMORY OPTI М IZED DATA), и контейнер, указывающий на папку в файловой системе, подобно тому как это делается в FILESTREAM. Родительская папка уже должна существовать, а дочерняя папка не должна существовать во время добавления контейнера. Поэтому, прежде чем выполнить программный код, убедитесь, что папка C:IMOLTP существует, а папка C:IMOLTPPerformanceV3_dir не существует (или измените имена папок по своему выбору) (см. код выше).

Табличные переменные и временные таблицы в SQL Server 2014
Создание типа таблицы OrderlDs

Чтобы создать тип таблицы, оптимизированной для размещения в оперативной памяти, добавьте параметр MEMORYOPTIMIZED = ON к определению типа. В качестве примера код выше создает тип таблицы OrderlDs, который представляет собой набор идентификаторов заказов.

Таблица, оптимизированная для размещения в оперативной памяти, должна располагать хотя бы одним индексом, чтобы получить доступ к строкам в памяти. Это может быть индекс BW-Tree (разновидность индекса B-tree без блокировок, без защелок), как приведенный в моем примере, или хеш-индекс. Первый эффективен для действий в диапазоне и по порядку. Второй оптимален для точечных запросов. Чтобы сделать индекс в нашем примере хеш-индексом, добавьте
HASH WITH (BUCKET_COUNT = <count>) 

непосредственно после ключевого слова NONCLUSTERED. Специалисты Microsoft рекомендуют указать число контейнеров, равное или вдвое превышающее число различных значений, предполагаемых в столбце.

Табличные переменные и временные таблицы в SQL Server 2014
Использование типа табличных переменных

Определив тип таблицы, можно использовать его в качестве типа табличных переменных, например, как в коде выше.

Табличные переменные и временные таблицы в SQL Server 2014
Создание процедуры GetOrders для получения информации о заказах

Как отмечалось выше, еще можно использовать тип таблицы, оптимизированной для размещения в оперативной памяти, как тип для параметров TVP. Например, в программном коде выше создается процедура, принимающая параметр @OrderlDs типа OrderlDs с входным набором идентификаторов заказов. Возвращается информация о запрошенных заказах. Используйте программный код ниже для выполнения процедуры с набором идентификаторов заказов {1759, 1760, 1761} в качестве входных данных. В приведенной ниже таблице показаны выходные данные.

Табличные переменные и временные таблицы в SQL Server 2014
Выходные данные процедуры GetOrders

Табличные переменные и временные таблицы в SQL Server 2014
Запуск процедуры GetOrders для конкретных заказов

После завершения выполните программный код ниже для очистки.

Табличные переменные и временные таблицы в SQL Server 2014
Очистка данных

В SQL Server 2014 нельзя удалить файловую группу, оптимизированную для размещения в оперативной памяти. Чтобы это сделать, нужно удалить и повторно создать тестовую базу данных.

Далее мы поговорим о параллельной инструкции SELECT INTO, а сейчас я рекомендую вам заглянуть на www.nanokeramika.ru/brands/undefasa/ (http://www.nanokeramika.ru/brands/undefasa/). Здесь вы найдете роскошную керамическую плитку, которая станет настоящим украшением интерьера вашего дома.

Рейтинг статьи

Оценка
4/5
голосов: 1
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Перевести статью:

Похожие новости

Комментарии

Информация

^ Наверх