Управление несколькими базами данных в Базе данных SQL Azure и их масштабирование с помощью эластичных пулов

Применимо к: База данных SQL Azure

База данных SQL Azure эластичных пулов — это простое, экономичное решение для управления и масштабирования нескольких баз данных с различными и непредсказуемыми требованиями к использованию. Базы данных в составе эластичного пула размещены на одном сервере и совместно используют определенный набор ресурсов по фиксированной цене. Эластичные пулы в База данных SQL позволяют разработчикам программного обеспечения как услуга (SaaS) оптимизировать ценовую производительность для группы баз данных в рамках определенного бюджета, обеспечивая эластичность производительности для каждой базы данных.

Что такое пулы эластичных баз данных SQL?

Разработчики SaaS создают приложения на основе масштабируемых уровней данных с несколькими базами данных. Типичным шаблоном приложения является подготовка отдельной базы данных для каждого клиента. Однако разные клиенты часто имеют различные и непредсказуемые шаблоны использования, и трудно предсказать требования к ресурсам каждого пользователя базы данных. Обычно имеется два варианта:

  • избыточная подготовка ресурсов в соответствии с пиковой нагрузкой и переплата;
  • Недостаточное число средств для экономии затрат на производительность и удовлетворенность клиентов во время пиков.

Эластичные пулы решают эту проблему, гарантируя, что базы данных получают необходимые ресурсы производительности, когда им нужны. Они предоставляют простой механизм распределения ресурсов в рамках прогнозируемого бюджета. Дополнительные сведения о шаблонах проектирования для приложений SaaS с помощью эластичных пулов см. в статье "Конструктор" для мультитенантных приложений SaaS с База данных SQL.

Внимание

Плата за эластичный пул не зависит от количества баз данных. Вы платите за каждый час существования пула с максимальным количеством единиц eDTU или виртуальных ядер. Использование или активность пула менее одного часа оплачивается как один час.

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

Количество ресурсов, доступных для пула, определяется бюджетом. Вам нужно сделать следующее:

  • Добавьте базы данных в пул.
  • При необходимости задайте минимальные и максимальные ресурсы для баз данных в модели приобретения DTU или виртуальных ядер.
  • Задайте ресурсы пула с учетом бюджета.

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

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

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

Примечание.

При перемещении баз данных в эластичном пуле нет времени простоя, кроме краткого периода (в порядке секунд) при удалении подключения к базе данных в конце операции.

Когда следует рассмотреть База данных SQL эластичном пуле?

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

Чем больше баз данных можно добавить в пул, тем больше экономии. Но в зависимости от закономерности использования приложения можно сэкономить средства при наличии всего двух баз данных уровня S3.

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

Оценка закономерностей использования баз данных

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

Диаграмма с одной базой данных, подходящей для пула.

На диаграмме показано использование DTU в течение 1 часа (с 12:00 до 1:00) с детализацией до 1 минуты для каждой точки данных. В 12:10 db1 пики до 90 единиц DTU, но его общее среднее использование меньше пяти единиц DTU. Размер вычислительных ресурсов S3 необходим для выполнения этой рабочей нагрузки в одной базе данных, но этот размер оставляет большинство ресурсов неиспользуемых в периоды низкой активности.

Пул позволяет совместно использовать эти неиспользуемые DTU в нескольких базах данных. Пул сокращает количество необходимых единиц DTU и общие затраты.

На основе предыдущего примера предположим, что другие базы данных имеют аналогичные шаблоны использования, как DB1. На следующих двух рисунках использование 4 баз данных и 20 баз данных слоится на одном графе, чтобы проиллюстрировать непереверяющий характер их использования с течением времени с помощью модели приобретения на основе DTU:

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

Диаграмма с 20 базами данных с шаблоном использования, подходящим для пула.

Черная линия на предыдущей диаграмме иллюстрирует агрегированное использование DTU во всех 20 базах данных. В этой строке показано, что совокупное использование DTU никогда не превышает 100 единиц DTU и указывает, что 20 баз данных могут совместно использовать 100 единиц EDTU в течение этого периода. Результатом является 20-разовое сокращение единиц DTU и 13-разовое снижение цен по сравнению с размещением каждой базы данных в размерах вычислений S3 для отдельных баз данных.

Этот пример подходит идеально по следующим причинам:

  • Существует большая разница между пиковым использованием и средним использованием для каждой базы данных.
  • Пиковое использование для каждой базы данных возникает в разное время.
  • eDTU совместно используются многими базами данных.

В модели приобретения DTU цена пула — функция, зависящая от eDTU пула. Хотя цена единиц eDTU для пула составляет 1,5 раза больше, чем цена единиц DTU для одной базы данных, eDTU пула может быть предоставлен общий доступ многим базам данных и меньше общего числа eDTU необходимы. Эти различия в цене и совместное использование единиц eDTU является основой возможности экономии, которую может предоставить пул.

В модели приобретения виртуальных ядер цена за ядро для эластичных пулов совпадает с ценой за ядро для отдельных баз данных.

Как выбрать пул правильного размера?

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

  • Максимальный объем вычислительных ресурсов, используемых всеми базами данных в пуле. Вычислительные ресурсы индексируются по eDTU или виртуальным ядрам в зависимости от выбранной модели приобретения.
  • Максимальное число байтов памяти, используемых всеми базами данных в пуле.

Сведения об уровнях служб и ограничениях ресурсов для каждой модели приобретения см. в статье, посвященной модели приобретения на основе единиц DTU или модели приобретения на основе виртуальных ядер.

Следующие шаги помогут оценить, экономичнее ли использовать пул вместо отдельных баз данных.

  1. Оцените количество единиц eDTU или виртуальных ядер для пула:

    1. Для модели приобретения на основе единиц DTU:
      1. Максимальное значение (<Общее количество баз данных × Среднее использование единиц DTU на базу данных>, <Количество баз данных с одновременной пиковой нагрузкой × Пиковое использование единиц DTU на базу данных>)
    2. Для модели приобретения на основе виртуальных ядер:
      1. Максимальное значение (<Общее количество баз данных × Среднее использование виртуальных ядер на базу данных>, <Количество баз данных с одновременной пиковой нагрузкой × Пиковое использование виртуальных ядер на базу данных>)
  2. Оцените общее пространство хранилища, необходимое для пула, сложив размеры данных, необходимых для всех баз данных в пуле. Для модели приобретения на основе единиц DTU определите размер пула eDTU, который предоставляет этот объем хранилища.

  3. Для модели приобретения на основе единиц DTU выберите максимальную из оценок количества единиц eDTU, полученных на шаге 1 и шаге 2.

    1. Для модели приобретения на основе виртуальных ядер выберите оценку количества виртуальных ядер, полученную на шаге 1.
  4. См. страницу цен на База данных SQL.

    1. Найдите наименьший размер пула, превышающий оценку на шаге 3.
  5. Сравните цену пула с шага 4 на использование соответствующих размеров вычислений для отдельных баз данных.

Внимание

Если количество баз данных в пуле приближается к максимально поддерживаемому, обязательно рассмотрите возможность управления ресурсами в эластичных пулах с высокой плотностью.

Потребление ресурсов в расчете на базу данных

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

Использование других функций Базы данных SQL с эластичными пулами

Вы можете использовать другие функции Базы данных SQL с эластичными пулами.

Эластичные задания и эластичные пулы

Пул упрощает выполнение задач управления, так как позволяет выполнять сценарии в заданиях обработки эластичных БД. Задания обработки эластичных пулов позволяют сократить объем трудоемких операций, связанных с управлением большим количеством баз данных.

Дополнительные сведения о других средствах баз данных для работы с несколькими базами данных см. в статье Развертывание с помощью Базы данных SQL Azure.

Гипермасштабирование эластичных пулов

База данных SQL Azure эластичные пулы гипермасштабирования общедоступны.

Возможности обеспечения непрерывности бизнес-процессов для баз данных в эластичных пулах

Базы данных в пуле поддерживают те же возможности по обеспечению непрерывности бизнес-процессов, что и отдельные базы данных:

  • Восстановление до точки во времени. При восстановлении до точки во времени используются создаваемые автоматически резервные копии баз данных, чтобы восстановить базу данных в пуле на определенный момент времени. Ознакомьтесь с разделом Восстановление до точки во времени.
  • Геовосстановление. Геовосстановление используется по умолчанию, когда база данных недоступна из-за происшествия в регионе, где она размещена. См. раздел "Геовосстановление".
  • Активная георепликация. Для приложений, имеющих более агрессивные требования к восстановлению, чем геовосстановление, можно настроить активную георепликацию или группу отработки отказа.

Дополнительные сведения о приведенных выше стратегиях см. в руководстве по аварийному восстановлению База данных SQL Azure.

Создание нового эластичного пула Базы данных SQL с помощью портала Azure

На портале Azure эластичный пул можно создать двумя способами:

  • создать эластичный пул и выбрать имеющийся или новый сервер;
  • создать эластичный пул на основе имеющегося сервера.

Чтобы создать эластичные пулы и выбрать существующий или новый сервер, выполните приведенные ниже действия.

  1. Перейдите на портал Azure, чтобы создать эластичный пул. Найдите и выберите Azure SQL.

  2. Щелкните Создать, чтобы открыть страницу Выбор варианта развертывания SQL. Чтобы просмотреть дополнительные сведения об эластичных пулах, на плитке Базы данных выберите Показать подробности.

  3. На плитке "Базы данных" в раскрывающемся списке "Тип ресурса" выберите эластичные пулы. Затем выберите Создать.

    Снимок экрана: создание эластичного пула.

  4. Затем управляйте эластичным пулом с помощью портал Azure, PowerShell, Azure CLI, REST API или T-SQL.

Создание эластичного пула с существующего сервера:

  1. Перейдите на имеющийся сервер и выберите Создать пул, чтобы создать пул непосредственно на этом сервере.

    Примечание.

    На сервере можно создать несколько пулов, но в один пул нельзя добавлять базы данных с разных серверов.

    Уровень служб пула определяет возможности, которые будут доступны для эластичных баз данных в пуле, и максимальное количество ресурсов для каждой базы данных. Дополнительные сведения об ограничениях ресурсов для эластичных пулов см. в разделе о модели на основе DTU. Сведения об ограничениях ресурсов в модели на основе виртуальных ядер для эластичных пулов см. в разделе Ограничения ресурсов для эластичных пулов при использовании модели на основе виртуальных ядер.

  2. Чтобы настроить ресурсы и цены на пул, выберите Настроить пул. Выберите уровень служб, добавьте базы данных в пул и настройте ограничения ресурсов для пула и его баз данных.

  3. После настройки пула нажмите кнопку "Применить", назовите пул и нажмите кнопку "ОК ", чтобы создать пул.

  4. Затем управляйте эластичным пулом с помощью портал Azure, PowerShell, Azure CLI, REST API или T-SQL.

Мониторинг эластичного пула и его баз данных

На портале Azure можно отслеживать использование эластичного пула и баз данных в этом пуле. Можно также внести ряд изменений в эластичный пул и отправить все изменения одновременно. К таким изменениям относятся добавление или удаление баз данных, изменение параметров эластичного пула и изменение параметров базы данных.

Вы можете использовать встроенные средства мониторинга производительности и оповещений в сочетании с рейтингами производительности. База данных SQL может также выдавать значения метрик и журналы ресурсов для упрощения мониторинга.

Примеры использования от клиентов

  • SnelStart — компания SnelStart с помощью эластичных пулов Базы данных SQL быстро расширила свои бизнес-службы (1000 новых баз данных SQL Azure в месяц).
  • Umbraco — Umbraco использует эластичные пулы Базы данных SQL, чтобы быстро подготавливать и масштабировать службы для тысяч арендаторов в облаке.
  • Daxko/CSI — компания Daxko/CSI использует эластичные пулы Базы данных SQL для ускорения своего цикла разработки, расширения набора пользовательских услуг и повышения производительности.