Управление несколькими базами данных в Базе данных SQL Azure и их масштабирование с помощью эластичных пулов
Эластичные пулы Базы данных SQL Azure — это простое и экономичное решение для администрирования и масштабирования нескольких баз данных с отличными и непредсказуемыми требованиями к ресурсам. Базы данных в составе эластичного пула размещены на одном сервере и совместно используют определенный набор ресурсов по фиксированной цене. Пулы эластичных БД в базе данных SQL Azure позволяют разработчикам SaaS оптимизировать соотношение цены и производительности для группы баз данных с назначенным бюджетом и при этом обеспечить эластичность производительности для каждой базы данных.
Эластичные пулы SQL
Разработчики SaaS создают приложения на основе уровней данных большого размера, состоящих из нескольких баз данных. Обычно для каждого клиента подготавливается одна база данных. Но нередко разные клиенты по-разному и непредсказуемо используют приложения, в связи с этим трудно спрогнозировать требования к ресурсам каждого отдельного пользователя базы данных. Обычно имеется два варианта:
- избыточная подготовка ресурсов в соответствии с пиковой нагрузкой и переплата или
- подготовка недостаточного числа ресурсов в целях экономии в ущерб производительности и удовлетворенности клиентов во время всплесков загрузки.
Эластичные пулы устраняют эту проблему, обеспечивая базы данных необходимыми ресурсами производительности, когда они нужны. Они предоставляют простой механизм распределения ресурсов в рамках прогнозируемого бюджета. Дополнительные сведения о шаблонах разработки для приложений SaaS, использующих пулы эластичных БД, см. в статье Шаблоны разработки для мультитенантных приложений SaaS с использованием Базы данных Azure SQL.
Плата за пул эластичных баз данных не зависит от количества баз данных. Вы платите за каждый час существования пула с максимальным количеством единиц eDTU или виртуальных ядер. Использование или активность пула менее одного часа оплачивается как один час.
Пулы эластичных баз данных позволяют разработчикам покупать ресурсы для пула, который совместно используется несколькими базами данных, чтобы обеспечить работу отдельных баз данных в непрогнозируемые периоды использования. Вы можете настроить ресурсы для пула с использованием модели приобретения на основе единиц DTU или модели приобретения на основе виртуальных ядер. Требование к ресурсу для пула определяется совокупным использованием его баз данных. Количество ресурсов, доступных для пула, определяется бюджетом разработчика. Разработчик просто добавляет базы данных в пул, при необходимости задает минимальное и максимальное количество ресурсов для баз данных (минимальное и максимальное число единиц DTU или виртуальных ядер в зависимости от выбора модели ресурсов), а затем задает ресурсы для пула на основе своего бюджета. С помощью пулов разработчик может легко перевести качество своих услуг с уровня небольшой новой компании на уровень состоявшегося бизнеса с возможностями роста.
Отдельным базам данных в пуле предоставляется возможность гибкого автоматического масштабирования в рамках заданных параметров. В условиях интенсивной нагрузки база данных может использовать дополнительные ресурсы для удовлетворения потребности. При небольших нагрузках базы данных используют меньше ресурсов, а при отсутствии нагрузок не используют их вовсе. Подготовка ресурсов для всего пула, а не для отдельной базы данных упрощает задачи управления. Кроме того, используя пул, вы можете спрогнозировать расходы. В существующий пул можно добавить дополнительные ресурсы с минимальным временем простоя. Точно так же, если ресурсы больше не нужны, они могут быть удалены из имеющегося пула в любой момент. Также можно добавлять базы данных в пул или удалять из него. Если у базы данных прогнозируемо низкие показатели использования ресурсов, ее можно удалить.
Базы данных перемещаются в эластичный пул или из него без простоев, за исключением короткого периода (порядка нескольких секунд) в конце операции, когда удаляются подключения к базе данных.
Использование эластичного пула службы "База данных SQL"
Пулы хорошо подходят для большого числа баз данных с конкретными закономерностями использования. Для заданной базы данных эта закономерность характеризуется низким средним использованием с относительно редкими пиками использования. И наоборот, несколько баз данных с постоянным средним уровнем использования не следует размещать в одном эластичном пуле.
Чем больше баз данных можно добавить в пул, тем больше экономия. Но в зависимости от закономерности использования приложения можно сэкономить средства при наличии всего двух баз данных уровня S3.
Следующие разделы помогут вам понять, как оценить преимущества, связанные с использованием пула с определенным набором баз данных. В примерах используются пулы уровня Стандартный, однако эти же принципы применимы к пулам уровней Базовый и Премиум.
Оценка закономерностей использования баз данныхНа следующем рисунке показан пример базы данных, которая большую часть времени находится в режиме ожидания, но также у нее периодически возникают пики активности. Такая модель использования хорошо подходит для пула:
На диаграмме показано использование DTU в течение 1 часа (с 12:00 до 1:00) с детализацией до 1 минуты для каждой точки данных. В 12:10 у базы данных DB1 наблюдается пиковая нагрузка 90 DTU, но в среднем ее использование менее 5 DTU. Для запуска этой рабочей нагрузки в отдельной базе данных требуется объем вычислительных ресурсов S3, но при этом большая часть ресурсов останется неиспользуемой в периоды низкой активности.
Пул позволяет разделить эти незадействованные единицы DTU между несколькими базами данных, тем самым сокращая общее число необходимых единиц DTU и, следовательно, расходы.
На основе предыдущего примера предположим, что существуют дополнительные базы данных с закономерностями использования, схожими с закономерностью использования базы данных DB1. На следующих двух рисунках показано использование четырех и двадцати баз данных на одной диаграмме, чтобы продемонстрировать, что их использование не пересекается во времени при использовании модели приобретения на основе единиц DTU:
Совокупное использование DTU для всех 20 баз данных представлено черной линией на рисунке выше. На рисунке видно, что совокупное использование DTU никогда не превышает 100 DTU, и показано, что 20 баз данных могут совместно использовать 100 eDTU в этом периоде времени. Это приводит к 20-кратному сокращению количества единиц DTU и 13-кратному снижению цены по сравнению с размещением каждой базы данных с объемом вычислительных ресурсов S3 для отдельных баз данных.
Этот пример является идеальным по следующим причинам.
- Существует большая разница между пиковым использованием и средним использованием для каждой базы данных.
- Пиковое использование для каждой базы данных возникает в разное время.
- eDTU совместно используются многими базами данных.
В модели приобретения DTU цена пула — функция, зависящая от eDTU пула. Хотя цена единицы eDTU для пула в 1,5 раза выше цены единицы DTU для отдельной базы данных, единицы eDTU пула могут совместно использоваться множеством баз данных, следовательно, требуется меньшее общее число единиц eDTU. Эти различия в цене и совместное использование единиц eDTU является основой возможности экономии, которую может предоставить пул.
В модели приобретения виртуальных ядер цена за ядро для эластичных пулов совпадает с ценой за ядро для отдельных баз данных.
Выбор пула правильного размера
Наилучший размер пула зависит от совокупного количества ресурсов, необходимых для всех баз данных в пуле. Для этого необходимо определить следующее:
- Максимальный объем вычислительных ресурсов, используемых всеми базами данных в пуле. Вычислительные ресурсы индексируются по eDTU или виртуальным ядрам в зависимости от выбранной модели приобретения.
- Максимальное число байтов памяти, используемых всеми базами данных в пуле.
Сведения об уровнях служб и ограничениях ресурсов для каждой модели приобретения см. в статье, посвященной модели приобретения на основе единиц DTU или модели приобретения на основе виртуальных ядер.
Следующие шаги помогут оценить, экономичнее ли использовать пул вместо отдельных баз данных.
- Оцените количество единиц eDTU или виртуальных ядер, необходимых для пула, следующим образом:
- Для модели приобретения на основе единиц DTU:
- Максимальное значение (<< × Среднее использование единиц DTU на базу данных , << × Пиковое использование единиц DTU на базу данных )
- Для модели приобретения на основе виртуальных ядер:
- Максимальное значение (<< × Среднее использование виртуальных ядер на базу данных , << × Пиковое использование виртуальных ядер на базу данных )
- Для модели приобретения на основе единиц DTU:
- Оцените общее пространство хранилища, необходимое для пула, сложив размеры данных, необходимых для всех баз данных в пуле. Для модели приобретения на основе единиц DTU определите размер пула eDTU, который предоставляет этот объем хранилища.
- Для модели приобретения на основе единиц DTU выберите максимальную из оценок количества единиц eDTU, полученных на шаге 1 и шаге 2. Для модели приобретения на основе виртуальных ядер выберите оценку количества виртуальных ядер, полученную на шаге 1.
- В статье Цены на Базу данных SQL Azure найдите наименьший размер пула, который будет больше оценки, полученной на шаге 3.
- Сравните стоимость пула из шага 4 со стоимостью использования подходящего объема вычислительных ресурсов отдельных баз данных.
Если количество баз данных в пуле приближается к максимально поддерживаемому, обязательно рассмотрите возможность управления ресурсами в эластичных пулах с высокой плотностью.
Потребление ресурсов в расчете на базу данныхВы можете выбрать свойство "В расчете на базу данных", чтобы изменить шаблоны потребления ресурсов в эластичных пулах. Дополнительные сведения см. в статьях об ограничениях по DTU и виртуальным ядрам, действующих для ресурсов в эластичных пулах.
Использование других функций базы данных SQL с эластичными пулами
Эластичные задания и эластичные пулыПул упрощает выполнение задач управления, так как позволяет выполнять сценарии в заданиях обработки эластичных БД. Задания обработки эластичных БД позволяют сократить объем трудоемких операций, связанных с управлением большим количеством баз данных.
Дополнительные сведения о других средствах баз данных для работы с несколькими базами данных см. в статье Развертывание с помощью Базы данных SQL Azure.
Возможности обеспечения непрерывности бизнес-процессов для баз данных в эластичных пулахБазы данных в пуле поддерживают те же возможности по обеспечению непрерывности бизнес-процессов, что и отдельные базы данных.
Восстановление состояния системы в определенной временной точке
При восстановлении до точки во времени используются создаваемые автоматически резервные копии баз данных, чтобы восстановить базу данных в пуле на определенный момент времени. Ознакомьтесь с разделом Восстановление до точки во времени
Геовосстановление
Геовосстановление используется по умолчанию, когда база данных недоступна из-за происшествия в регионе, где она размещена. Ознакомьтесь с разделом Восстановление базы данных SQL Azure или переход на базу данных-получатель при отказе
Активная георепликация
Для приложений c более высокими требованиями к восстановлению по сравнению с возможностями геовосстановления настройте активную георепликацию или группу автоматической отработки отказа.
Создание нового эластичного пула базы данных SQL с помощью портала Azure
На портале Azure эластичный пул можно создать двумя способами.
Перейдите на портал Azure, чтобы создать эластичный пул. Найдите и выберите Azure SQL.
Выберите Добавить, чтобы открыть страницу выбора варианта развертывания SQL. Чтобы просмотреть дополнительные сведения об эластичных пулах, выберите Показать сведения на плитке Базы данных.
На плитке Базы данных в раскрывающемся списке Тип ресурса выберите Эластичный пул и нажмите кнопку Создать:
Или же вы можете создать эластичный пул непосредственно на сервере, перейдя к имеющемуся серверу и нажав кнопку Создать пул.
На сервере можно создать несколько пулов, но в один пул нельзя добавлять базы данных с разных серверов.
Уровень служб пула определяет возможности, которые будут доступны для эластичных баз данных в пуле, и максимальное количество ресурсов для каждой базы данных. См. сведения об ограничениях ресурсов для эластичных пулов в модели на основе DTU. Сведения об ограничениях ресурсов в модели на основе виртуальных ядер для эластичных пулов см. в разделе Ограничения ресурсов для эластичных пулов при использовании модели на основе виртуальных ядер.
Чтобы настроить ресурсы и цены на пул, щелкните Настроить пул. Выберите уровень служб, добавьте базы данных в пул и настройте ограничения ресурсов для пула и его баз данных.
После настройки пула щелкните "Применить", введите имя пула и нажмите кнопку "ОК", чтобы создать пул.
Мониторинг эластичного пула и его баз данных
На портале Azure можно отслеживать использование эластичного пула и баз данных в этом пуле. Можно также внести ряд изменений в эластичный пул и отправить все изменения одновременно. К таким изменениям относятся добавление или удаление баз данных, изменение параметров эластичного пула и изменение параметров базы данных.
Вы можете использовать встроенные средства мониторинга производительности и оповещений в сочетании с рейтингами производительности. Кроме того, База данных SQL может выдавать значения метрик и журналы ресурсов для упрощения мониторинга.
Примеры реальных клиентов
Компания SnelStart с помощью эластичных пулов Базы данных SQL Azure быстро расширила свои бизнес-службы со скоростью 1000 новых баз данных SQL Azure в месяц.
Umbraco использует эластичные пулы Базы данных SQL Azure, чтобы быстро подготавливать и масштабировать службы для тысяч клиентов в облаке.
Компания Daxko/CSI использует эластичные пулы Базы данных SQL Azure для ускорения своего цикла разработки, расширения набора пользовательских услуг и повышения производительности.