Как стать автором
Обновить

Комментарии 6

Я очень жду автоматизацию REBUILD INDEX «из коробки». На SQL Server с sql agent все реализуется в два клика. А тут нужно (если не так, поправьте, пожалуйста — начал пользоваться Azure не так давно) писать программу на C#, дергающую SQL-ный скрипт ребилда/дефрагментации и создавать под нее WebJob? Как-то сложно для такой базовой операции.

И вот интересно, если у меня жуткая фрагментация индекса, Advisor поймет, что в ней дело?
Мы рассматриваем такую возможность. Несколько тестов показали, что прирост производительность есть, но не всегда.(Увас есть какие-то пример когда это сильно улучшило ситуацию?)
Если мы решим добавить Rebuild как ещё одну рекомендацию внутри помощника, то её можно будет включить автоматически.

Есть неплохая статья по автоматизации здесь но пока да, выполнение скрипта.
Спасибо! Не знал про Azure Automation. Если честно, там все очень неинтуитивно, но лучше чем наша текущая версия с вебджобом (так как можно в онлайне редактировать скрипт). Надо учить Powershell )

Пример, да, вот сейчас на работе несколько баз ~50ГБ, у которых индексы на основных таблицах за день фрагментируются до больше 90%. По утрам стоит скрипт с ребилдом и дефрагментацией. Без него запросы в админках с отчетами уходят по времени выполнения в плюс бесконечность.
Можно вопрос… Ваш продукт это Database Engine Tuning Advisor, но только для реалий ажура? Или же работает он по другому принципу?

Определяется медленный запрос в кеше планов:

SELECT SalesOrderID, OrderDate, [Status], TerritoryID
FROM Sales.SalesOrderHeader
WHERE OrderDate = '20050701'

Потом в его плане смотрим на подсказку оптимизатора:

<MissingIndexes>
    <MissingIndexGroup Impact="99.3093">
    <MissingIndex Database="[AdventureWorks2012]" Schema="[Sales]" Table="[SalesOrderHeader]">
        <ColumnGroup Usage="EQUALITY">
        <Column Name="[OrderDate]" ColumnId="3" />
        </ColumnGroup>
    </MissingIndex>
    </MissingIndexGroup>
</MissingIndexes>

Создается гипотетический индекс:

CREATE NONCLUSTERED INDEX IX_OrderDate_H
	ON Sales.SalesOrderHeader(OrderDate)
	WITH (STATISTICS_ONLY = 1)

И командой AUTOPILOT проверяется как новый индекс себя ведет:

DBCC AUTOPILOT(0, 11, 1266103551, 13)
GO
SET AUTOPILOT ON
GO
SELECT SalesOrderID, OrderDate, [Status], TerritoryID
FROM Sales.SalesOrderHeader
WHERE OrderDate = '20050701'
GO
SET AUTOPILOT OFF
GO

и так методом перебора пока не найдется самый подходящий индекс…

Спасибо за статью.
А у кого есть реальный опыт работы с Azure SQL? Плюсы-минусы, реальные затраты на эксплуатацию, продуктив или только разработка? Поделитесь!
Приглашаю в нашу группу www.facebook.com/groups/azurerus там на этот вопрос ответят быстрее и подробнее
Зарегистрируйтесь на Хабре, чтобы оставить комментарий