Автонастройка базы данных SQL Azure - разрабатывать, не беспокоясь об индексах? - PullRequest
0 голосов
/ 10 мая 2018

Функция базы данных SQL Azure для автоматической настройки создает и удаляет индексы на основе использования базы данных.Я импортировал старую базу данных в Azure, в которой не были определены полные индексы, и, похоже, она проделала большую работу по сокращению использования ЦП и DTU за относительно короткий промежуток времени.

Это кажется неправильным - ноОзначает ли это, что я могу развиваться, не определяя индексы?Кто-нибудь делает это?Редактор индексов SSMS довольно труден для изменения.Отсутствие необходимости беспокоиться / поддерживать индексы ускорит время разработки.

1 Ответ

0 голосов
/ 10 мая 2018

При автоматической настройке используются три вещи: магазин запросов, отсутствующие индексы и машинное обучение.

Во-первых, последний известный хороший план - это оружие в магазине запросов. Это происходит как в Azure, так и в SQL Server 2017. Он обнаружит запросы, у которых производительность снизилась после изменения плана (и довольно много выполнений, а не только одного), и вернется к этому плану. Если производительность ухудшается, это отключается. Это замечательно. Однако, если вы пишете дерьмовый код, у вас плохая структура данных или устаревшая статистика, это не очень помогает.

Автоматические индексы в Azure используют две вещи: отсутствующие рекомендации по индексам из оптимизатора и машинное обучение в Azure. С ними, если пропущенный индекс часто появляется в течение 12-18 часов (читайте этот пост в блоге по его автоматизации), вы получите предложение по индексу. Он измеряет в течение еще 12-18 часов, и если этот индекс помог, он остается, если нет, он идет. Это тоже здорово. Тем не менее, он страдает от двух проблем. Во-первых, так же, как и раньше, если у вас есть дерьмовый код и т. Д., Это действительно поможет только на полях. Во-вторых, предложения по отсутствующим индексам от оптимизатора не всегда являются лучшим индексом. Например, когда я писал пост в блоге, он надлежащим образом определил отсутствующий индекс, но упустил тот факт, что столбец INCLUDE был бы даже лучше, чем предложенный им индекс.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...