Назад | Перейти на главную страницу

Что может увеличить задержку в 3-4 раза для SQL FCI базы данных?

У нас есть базовые группы доступности (BAG) SQL Server, настроенные для запуска базы данных SQL, работающей на локальном SSD-диске Intel. Меня попросили переместить базу данных в экземпляр отказоустойчивого кластера SQL Server (FCI), чтобы повысить производительность SQL Server: запустить базу данных на виртуальном диске высокой доступности, работающем на программно-определяемом хранилище. По моему опыту, гиперконвергентный VSAN должен удваивать операции чтения, поэтому задержка ввода-вывода SQL (для чтения из базы данных) должна уменьшиться вдвое.

Таким образом, были протестированы два сценария: SQL BAG и SQL FCI. Для этих двух случаев максимальный объем оперативной памяти сервера 512 ГБ был установлен на SQL Server, чтобы исключить кэширование и выполнять операции справедливого чтения из таблицы базы данных.

SQL Management Studio и SQLQueryStress использовались для тестирования. Оператор SQL SELECT TOP (500000) ... FROM [SQL].[dbo].[table] для чтения первых 500К строк.

Результаты запроса SQL BAG следующие:

Management Studio SQL: время запроса = 15 с.

SQLQueryStress:

Количество потоков = 1: время запроса = 2 секунды
Количество потоков = 2: время запроса = 2 секунды
Количество потоков = 4: время запроса = 2 секунды
Количество потоков = 8: время запроса = 2 секунды
Количество потоков = 10: время запроса = 3 секунды
Количество потоков = 12: время запроса = 4 секунды

Сценарий SQL FCI был построен на отказоустойчивом кластере Windows из двух идентичных аппаратных узлов под управлением Windows Server 2016. Хранилище было настроено с использованием программно-определяемого хранилища (гиперконвергентного VSAN) на SSD-дисках Intel. Таким образом, виртуальный диск был представлен в отказоустойчивом кластере как диск кластера. Для тестирования Cluster Disk я использовал diskspd

Результаты diskspd следующие:

Случайное чтение 4k - 76K IOPS (SSD), 153K IOPS (гиперконвергентный VSAN - кластерный диск)
Случайное чтение 8k - 45K IOPS (SSD), 89K IOPS (гиперконвергентный VSAN - кластерный диск)

Как я и ожидал, гиперконвергентная VSAN удвоила производительность хранилища. В дальнейшем SQL FCI был настроен для хранения файлов базы данных на этом кластерном диске. Еще одна копия базы данных была загружена на сервер, и были выполнены те же тесты.

Результаты запроса SQL FCI следующие:

Management Studio SQL: время запроса = 15 с.

SQLQueryStress:

Количество потоков = 1: время запроса = 9 секунд
Количество потоков = 2: время запроса = 8 секунд
Количество потоков = 4: время запроса = 9 секунд
Количество потоков = 8: время запроса = 8 секунд
Количество потоков = 10: время запроса = 10 секунд
Количество потоков = 12: время запроса = 12 секунд

Вопросы следующие:

  1. Почему задержка одинакова для SQL BAG и SQL FCI, проверенных с помощью Management Studio?

  2. Что может увеличить задержку в 3-4 раза для SQL FCI базы данных?

FCI - это история, придерживайтесь AlwasysOn Availability Groups (AG) для своих новых развертываний. Это намного быстрее (потому что SQL Server знает, что реплицировать), и, по крайней мере, базовые группы доступности включены в стандартную версию SQL Server.

https://blogs.technet.microsoft.com/msftpietervanhove/2017/03/14/top-5-questions-about-basic-availability-groups/