Что может увеличить задержку в 3-4 раза для SQL FCI базы данных?
У нас есть базовые группы доступности SQL Server, настроенные для запуска базы данных SQL, работающей на локальном накопителе Intel SSD. Меня попросили переместить базу данных в экземпляр отказоустойчивого кластера SQL Server (FCI), чтобы повысить производительность SQL Server: запустить базу данных поверх виртуального диска высокой доступности, работающего от программно-определяемого хранилища. Из моего опыта гиперконвергентный VSAN должен удвоить операции чтения, поэтому задержка ввода-вывода SQL (для операций чтения из базы данных) должна уменьшиться в два раза.
Таким образом, два сценария были сопоставлены: SQL BAG и SQL FCI. В этих двух случаях максимальный объем памяти сервера в 512 ГБ ОЗУ был установлен на SQL Server, чтобы исключить кэширование и выполнять операции честного чтения из таблицы базы данных.
Management Studio SQL и 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) через жесткие диски Intel SSD. Таким образом, виртуальный диск был представлен отказоустойчивому кластеру как диск кластера. Для тестирования Cluster Disk я использовал diskpd
Результаты по diskpd следующие:
Случайное чтение 4K - 7600 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 с
Вопросы:
Почему задержка одинакова для SQL BAG и SQL FCI, которые сравниваются с помощью Management Studio?
Что может увеличить задержку в 3-4 раза для SQL FCI базы данных?
1 ответ
FCI - это история, придерживайтесь групп доступности AlwasysOn (AG) для новых развертываний. Это намного быстрее (потому что SQL Server знает, что копировать), и по крайней мере Basic AG включены в стандартную версию SQL Server.