Post on 18-Jul-2015
Андрей
Коршиков
korshikov@sqlpass.org
@AndreyKorshikov
PASS Regional Mentor for
Central Eastern Europe
• Минимальные требования: Windows 7 SP1 или Windows Server 2008 R2.
• SysPrep поддерживается для любых видов установки, в том числе failover cluster.
• Обновление с SQL Server 2005 поддерживается (базы данных должны иметь уровень совместимости 100), но установка side-by-side не поддерживается.
• Stardard Edition теперь поддерживает 128 GB оперативной памяти (было 64 GB).
Установка SQL Server 2014
• Buffer pool – область памяти, используемая SQL Server для кэширования страниц данных, индексов, служебных страниц
• Если нужные данные не найдены в Buffer pool, они должны быть помещены туда после чтения с диска
• Чем больше памяти доступно, тем больше вероятность повторного обращения к странице в пяти без ожидания IO
Что такое Buffer Pool
• «Актуальные» страницы располагать в быстром кэше автоматически
• Не переделывать схему БД
• Должно работать прозрачно на уровне сервера
Хорошо бы…
• Поддерживается в Enterprise, Business Intelligence и Standard редакциях.
• Позволяет решить проблему нехватки оперативной памяти для кэширования часто используемых данных (в основном случайное чтение) за счет использования SSD.
Buffer Pool Extension
https://www.techdays.ru/videos/8907.html
https://msdn.microsoft.com/ru-ru/library/dn133176.aspx
ALTER SERVER CONFIGURATION
SET <optionspec>
[;]
<buffer_pool_extension>::=
BUFFER POOL EXTENSION
{ ON ( FILENAME = 'os_file_path_and_name' , SIZE = <size_spec> )
| OFF }
<size_spec> ::=
{ size [ KB | MB | GB ] }
Buffer Pool Extension
• Один файл расширения
• Объем активных данных меньше чем объем BPE
• Ускоряется чтение, на запись не влияет
• Ограничение по объему расширения – 32х, рекомендовано 4х-8х от объема RAM
• Снижение производительности при отключении BPE до перезагрузки сервера
Недостатки и ограничения
• Основные моменты:• Операция COMMIT не ждет записи в журнал транзакций.• Одновременно выполняемые транзакции с меньшей долей
вероятности буду соперничать за IO операции при записи в журнал транзакций (запись идет позже большими блоками).
• Доступен во всех редакциях SQL Server 2014.
• У вас по прежнему могут быть проблемы при записи в журнал транзакций, если вы пишите быстрее, чем успевает записывать дисковый массив.
Delayed Durability (Lazy Commit)
http://channel9.msdn.com/Events/Data-Platform-Day-2014/Data-Platform-Day-2014/Delayed-Durability
Отложенная устойчивая транзакция
• Вы готовы потерять часть данных в случае сбоя!!!
• У вас наблюдается узкое место при записи в журнал транзакций (отложенная запись большими блоками может быть эффективнее, чем много маленьких)
• Наблюдается высокий уровень конкуренции. Блокировки удерживаются до конца транзакции. DD уменьшает время выполнения операции COMMIT.
Использование Delayed Durability
ALTER DATABASE … SET DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
• DISABLED – отключена, все транзакции логируютсяперед завершением
• ALLOWED – контроль над durability осуществляется на уровне транзакции
• FORCED – все транзакции используют DD
Настройка на уровне БД
COMMIT [ { TRAN | TRANSACTION } ] [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]
Transact-SQL
CREATE PROCEDURE <procedureName> …WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNERAS BEGIN ATOMIC WITH (
DELAYED_DURABILITY = ON,TRANSACTION ISOLATION LEVEL = SNAPSHOT,LANGUAGE = N'English'…
)END
Natively Compiled Stored Procedures
Параметр фиксации/параметр базы
данных DELAYED_DURABILITY = DISABLED DELAYED_DURABILITY = ALLOWED DELAYED_DURABILITY = FORCED
DELAYED_DURABILITY = OFF
In-Memory OLTP только транзакции.
Транзакция является полностью
устойчивой.
Транзакция является полностью
устойчивой.
Транзакция является отложенной
устойчивой.
DELAYED_DURABILITY = ON
In-Memory OLTP только транзакции.
Транзакция является полностью
устойчивой.
Транзакция является отложенной
устойчивой.
Транзакция является отложенной
устойчивой.
DELAYED_DURABILITY = OFF
Межбазовые или распределенные
транзакции.
Транзакция является полностью
устойчивой.
Транзакция является полностью
устойчивой.
Транзакция является полностью
устойчивой.
DELAYED_DURABILITY = ON
Межбазовые или распределенные
транзакции.
Транзакция является полностью
устойчивой.
Транзакция является полностью
устойчивой.
Транзакция является полностью
устойчивой.
https://msdn.microsoft.com/ru-ru/library/dn449490.aspx
• Когда буфер заполняется и идет запись его в журнал транзакций.
• Вызов sp_flush_log.
• Если выполняется транзакция с полным логированием, то все транзакции до нее, которые были выполнены как DD – тоже записываются в журнал.
Запись транзакций в журнал
• Resource Governor был изначально представлен в SQL Server 2008 и позволял управлять потреблением ресурсов между различными пользователями.
• В SQL Server 2014 добавлена поддержка управления IO ресурсами.
IO Resource Governance
https://msdn.microsoft.com/ru-ru/library/bb933866.aspx
Конфигурация ресурсных пуловALTER RESOURCE POOL Customer2Pool WITH (MIN_IOPS_PER_VOLUME=650);
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
• Одно из ключевых изменений
• Появляются абсолютно новые структуры для хранения данных в памяти
• Добавляется возможность создавать хранимые процедуры, которые будут компилироваться
• Прирост производительности может составлять до 30 раз
In-Memory OLTP
https://www.techdays.ru/videos/8906.html
• Играет ключевую роль при выборе плана выполнения для запроса.
• Требует уровня совместимости БД 120.• Если БД находится в уровне совместимости 110, можно использовать trace
flag 2312.
• Trace flag 9481 можно использовать для принудительного использования версии 70.
Cardinality Estimation
Приносит некоторые улучшения в предыдущую версию, например:• Для только что добавленных строк по возрастающему
значению использует значение среднего количества строк.
• Предполагает, что предикаты на одной таблице коррелированы.
SELECT year, purchase_price FROM dbo.Cars WHERE Make=‘Honda’ AND Model=‘Civic’
• Если в запросе участвуют 2 и более таблиц, то предикаты на них считаются независимыми.
Cardinality Estimation
• Возможность размещать файлы данных в Windows Azure
• Создание резервных копий в Windows Azure
• Мастер переноса баз данных в Windows Azure (в SQL Server Management Studio 2014)
CloudOS
Файлы данных в Windows Azure
• Максимальное количество реплик увеличено с 4 до 8
• Добавлена поддержка реплик в Windows Azure(доступен мастер для настройки)
• Вторичная реплика при отключении от первичной или при потере кластером кворума остается доступной на чтение
AlwaysOn
• Предоставляет дополнительную защиту для ваших резервных копий, в том числе тех, которые создаются в Windows Azure.
• Поддерживаются следующие алгоритмы: AES 128, AES 192, AES 256, and Triple DES. Шифрование происходит с помощью сертификата или ассиметричного ключа.
• Можно интегрировать ключи шифрования с провайдерами Extended Key Management (EKM).
Backup Encryption
BACKUP DATABASE [MYTestDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\MyTestDB.bak'
WITH
COMPRESSION,
ENCRYPTION
(
ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupEncryptCert
),
STATS = 10
GO
Backup Encryption
• $encryptionOption = New-SqlBackupEncryptionOption -Algorithm Aes256 -EncryptorType ServerCertificate -EncryptorName "BackupCert”
• Backup-SqlDatabase -ServerInstance . -Database "MyTestDB" -BackupFile "MyTestDB.bak" -CompressionOption On -EncryptionOption$encryptionOption
Backup Encryption (Powershell)
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name
SWITCH [ PARTITION source_partition_number_expression ]
TO target_table [ PARTITION target_partition_number_expression ] [ WITH ( <low_lock_priority_wait> ) ]
<low_priority_lock_wait>::=
{
WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ], ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}
Переключение секций и онлайн перестроение индексов
• sys.dm_exec_query_profiles – мониторинг в реальном времени текущего состояния выполнения запросов.
• SELECT … INTO – может выполняться параллельно
• Columnstore Indexes – теперь обновляемые
• Статистика может создаваться для отдельных секций
Еще немного вкусностей