Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к следующей рекомендации из контрольного списка производительной эффективности Azure Well-Architected Framework:
| PE:08 | Оптимизация производительности данных. Оптимизируйте хранилища данных, секции и индексы для их предполагаемого и фактического использования в рабочей нагрузке. |
|---|
В этом руководстве описываются рекомендации по оптимизации производительности данных. Оптимизация производительности данных заключается в уточнении эффективности обработки рабочих нагрузок и хранения данных. Каждая операция рабочей нагрузки, транзакция или вычисления обычно зависят от быстрого и точного извлечения, обработки и хранения данных. При оптимизации производительности данных рабочая нагрузка выполняется плавно. Снижение производительности при работе с данными вызывает эффект домино, приводя к падению общей эффективности работы. Сбой оптимизации производительности данных приводит к задержкам ответа, повышенной задержке и сокращению масштабируемости. Это ставит под угрозу эффективность всей рабочей нагрузки.
Определения
| Срок | Definition |
|---|---|
| Теорема CAP | Модель, используемая для анализа согласованности, доступности и устойчивости к разделению сети, чтобы помочь объяснить компромиссы, связанные с согласованностью данных. |
| Перестроение индекса базы данных | Операция обслуживания, которая удаляет и заново создает индекс. |
| Реорганизация индекса базы данных | Действие обслуживания, оптимизирующее текущий индекс базы данных. |
| Хранилище данных | Ресурс, в который хранятся такие данные, как база данных, хранилище объектов или общая папка. |
| Итоговая согласованность | Модель синхронизации данных, допускающая временную несогласованность реплик данных до их последующей синхронизации. |
| Index | Структура базы данных, предоставляющая быстрый доступ к элементам. |
| Интерактивная аналитическая обработка (OLAP) | Технология, которая упорядочивает крупные бизнес-базы данных, поддерживает сложный анализ и выполняет сложные аналитические запросы, не затрагивая транзакционные системы. |
| Обработка транзакций в сети (OLTP) | Технология, которая записывает бизнес-взаимодействие по мере их возникновения в повседневных операциях организации. |
| Оптимистическая конкурентность | Подход к обновлению баз данных, при котором для внесения изменений используются снимки вместо традиционных механизмов блокировки, что повышает производительность и масштабируемость. |
| Теорема PACELC | Модель, используемая для анализа устойчивости к разделению сети, доступности, согласованности и задержки, помогающая объяснить компромиссы, связанные с согласованностью данных. |
| Partitioning | Процесс физического разделения данных на отдельные хранилища данных. |
| Настройка запроса | Процесс, оптимизирующий скорость запроса базы данных. |
| Реплика для чтения | Оперативная копия основной базы данных, которая позволяет перенести трафик чтения с базы данных, используемой для записи. |
Чтобы оптимизировать использование данных, убедитесь, что хранилища данных, секции и индексы оптимизированы для их предполагаемого использования и для фактического использования в рабочей нагрузке. Оптимизированное использование данных может повысить производительность запросов, уменьшить потребление ресурсов и повысить общую эффективность системы. Рассмотрим следующие стратегии.
Данные профиля. Ознакомьтесь с данными и убедитесь, что модель данных хорошо подходит для рабочей нагрузки. Рассмотрим такие факторы, как нормализация данных, стратегии индексирования и методы секционирования. Для эффективного извлечения данных убедитесь, что вы выбираете соответствующие типы данных, определяете связи между сущностями и определяете оптимальную стратегию индексирования.
Настройте конфигурацию хранилища данных. Настройте инфраструктуру хранилища данных для соответствия требованиям рабочей нагрузки. Выберите соответствующую технологию хранения, например реляционные базы данных, базы данных NoSQL и хранилища данных. Оптимизируйте параметры хранилища, такие как размер буфера, механизмы кэширования и сжатие.
Оптимизация производительности запросов. Анализ и оптимизация запросов, выполняемых в рабочей нагрузке. Используйте такие методы, как оптимизация запросов, индексирование и кэширование. Чтобы определить узкие места, используйте планы запросов и средства мониторинга производительности, а затем внесите необходимые улучшения.
Регулярно отслеживайте и настраивайте систему. Непрерывно отслеживайте производительность рабочей нагрузки и выполняете итерацию по конфигурации хранилища данных и оптимизации запросов. Следуя рекомендациям по оптимизации производительности, проанализируйте системные метрики, определите области, требующие улучшения, и внедрите изменения.
Данные профиля
Профилирование данных включает в себя изучение данных из источника и сбор сведений об этом. Цель состоит в том, чтобы понять качество, структуру и характеристики данных рабочей нагрузки. Этот процесс позволяет выявлять такие проблемы, как отсутствующие значения, дубликаты, несогласованные форматы и другие аномалии. Для эффективного профилирования данных рассмотрим следующие стратегии.
Общие сведения о структуре данных. Изучите структуру данных, включая таблицы, столбцы и связи. Определите типы данных, длины и ограничения, применяемые к каждому столбцу. Оценка структуры данных помогает понять, как организованы данные и как они связаны с другими элементами данных.
Проанализируйте объём данных. Оцените объем данных, чтобы понять общие шаблоны размера и роста. Определите количество записей или документов и размер отдельных таблиц или коллекций. Эти сведения помогают оценить требования к хранилищу и определить проблемы с масштабируемостью.
Определение связей данных. Изучите связи между элементами данных, такими как связи первичного и внешнего ключа. Узнайте, как подключены данные, чтобы определить, как изменения в одной таблице или документе могут повлиять на связанные данные.
Оценка качества данных. Оцените качество данных, проверив такие факторы, как полнота, точность, согласованность и уникальность. Определите аномалии данных, отсутствующие значения или повторяющиеся записи, которые могут повлиять на целостность данных и производительность запросов. Этот шаг поможет определить области очистки и улучшения данных.
Зафиксируйте распределение данных. Анализ распределения значений в каждом столбце для определения шаблонов данных. Определение частых и редких значений, выскользов и отклонений данных. Чтобы оптимизировать производительность запросов, выберите соответствующие стратегии индексирования и методы оптимизации запросов на основе распределения.
Оцените шаблоны доступа к рабочей нагрузке. Оцените такие шаблоны, как транзакционные, аналитические, потоковая передача и сложные для чтения или записи сценарии при выборе стратегий хранения данных и оптимизации. Характер доступа рабочей нагрузки напрямую влияет на выбор между реляционными и нереляционными хранилищами данных, а также на разработку схемы секционирования.
Мониторинг производительности данных
Мониторинг производительности данных — это практика последовательного отслеживания эффективности хранилищ данных, секций и индексов в режиме реального времени. Он включает сбор и анализ метрик производительности, характерных для операций с данными, с помощью средств, адаптированных для системного уровня, баз данных или сторонних решений мониторинга. Эффективный мониторинг производительности данных позволяет заранее выявлять и устранять потенциальные узкие места, обеспечивая эффективность процессов и задач, связанных с данными. Чтобы отслеживать производительность данных, рассмотрите следующие стратегии.
Собирайте метрики, специфичные для данных. Сбор ключевых метрик, которые напрямую связаны с производительностью данных. Эти метрики включают время отклика запросов, пропускную способность данных, операции ввода-вывода диска, связанные с доступом к данным, и время загрузки определенных секций данных.
Настройте оповещения о данных. Настройте оповещения специально для метрик данных. Используйте предопределенные пороговые значения или аномалии в этих метриках для активации оповещений. Оповещения позволяют получать уведомления, когда метрики производительности превышают допустимые диапазоны или показывают ненормальное поведение. Например, если запрос базы данных занимает больше времени, чем ожидалось, или если пропускная способность данных значительно снижается, это приведет к срабатыванию оповещения. Эти оповещения можно настроить с помощью специализированных средств мониторинга или пользовательских скриптов.
Диагностика проблем с производительностью данных. Регулярно просматривайте собранные метрики данных, чтобы определить потенциальные узкие места производительности или снижение производительности в операциях с данными. Средства визуализации или панели мониторинга могут оказаться чрезвычайно полезными в этом процессе, помогая выявлять тенденции, узкие места и выбросы в показателях производительности данных. После идентификации перейдите в первопричины этих проблем и стратегируйте соответствующие действия по исправлению.
Секционирование данных
Секционирование включает разделение больших наборов данных или рабочих нагрузок с большим объемом на небольшие управляемые подмножества. Секционирование повышает эффективность производительности данных, распределяя рабочую нагрузку и повышая параллельную обработку. Кроме того, он обеспечивает более эффективный доступ к данным в зависимости от конкретных потребностей и шаблонов запросов. Можно секционировать данные по вертикали или по горизонтали (также называемые сегментированием).
| Стратегия | Definition | Example | Случаи использования |
|---|---|---|---|
| Вертикальное секционирование | Разделите таблицу на небольшие таблицы, выбрав определенные столбцы или поля для каждой секции. Каждая секция представляет подмножество полных данных. | Если у вас есть таблица с столбцами A, B, C и D, можно создать одну таблицу с столбцами A и B и другой с столбцами C и D. | — Таблица содержит множество столбцов, но запросы не обращаются ко всем столбцам вместе. — Некоторые столбцы больше, чем другие, и их разделение может повысить производительность ввода-вывода. — Различные части данных имеют различные шаблоны доступа. |
| Горизонтальное секционирование | Разделение данных на основе строк или диапазонов значений (также называемых сегментированием). Каждая секция содержит подмножество строк с аналогичными характеристиками. | Если у вас есть таблица с строками 1–1000, можно создать одну секцию со строками 1–500 и другой с строками 501–1000. | — Набор данных слишком велик для одного места или сервера. — Доступ к данным осуществляется на основе определенных диапазонов или фильтров. — необходимо распределить рабочую нагрузку между физическими узлами или серверами для повышения производительности. |
Чтобы секционировать данные, рассмотрите следующие действия.
Анализ данных и запросов. Анализ шаблонов данных и запросов для определения подходящих стратегий секционирования или сегментирования. Изучите характер данных, модели доступа и требования к распределению.
Определите ключ. Выберите ключ секционирования или сегментирования для распределения данных между секциями или сегментами. Тщательно выберите ключ на основе характеристик данных и требований к запросу.
Определите логику. Определите логику секционирования или сегментирования на основе выбранного ключа. Рассмотрите возможность разделения данных на диапазоны, применение хэширования алгоритмов или использование других методов секционирования.
Настройте инфраструктуру. Настройте систему базы данных для поддержки секционирования или сегментирования. Рассмотрите возможность создания необходимой инфраструктуры, определения секций или сегментов и настройки распределения данных.
Дополнительные сведения см. в руководстве по секционированием данных.
Оптимизация запросов к базе данных
Оптимизация запросов к базе данных включает уточнение запросов с помощью таких методов, как указания индексов и кэширование. Эти корректировки повышают эффективность и скорость извлечения данных. В результате база данных имеет более легкую рабочую нагрузку, ресурсы работают эффективнее, и пользователи получают более плавное взаимодействие. Чтобы оптимизировать запросы к базе данных, рассмотрите следующие стратегии.
Перепишите запросы. Просмотрите и проанализируйте сложные запросы, чтобы определить возможности их перезаписи. Рассмотрим логику реструктуризации запросов, устранение избыточных операций или упрощение синтаксиса запросов.
Избегайте проблемы запроса N+1. Сведите к минимуму количество обращений к базе данных, используя соединения и пакетную выборку для эффективного получения связанных данных.
Переупорядочение соединений. Оцените план запроса и рассмотрите возможность переупорядочения порядка соединения, чтобы свести к минимуму количество строк в каждой операции соединения. Порядок объединения таблиц может повлиять на производительность запросов.
Используйте подсказки индекса. Используйте подсказки индекса, чтобы ядро СУБД может указать использование индексов при выполнении запроса. Указания индекса позволяют оптимизатору выбрать наиболее подходящие индексы.
Запросы кэша. Храните результаты часто выполняемых запросов в памяти. Кэширование запросов устраняет необходимость многократного выполнения одного и того же запроса и снижает затраты на обработку запросов.
Оптимизация блокировки. Избегайте ненужных или ограничивающих указаний блокировки в запросах. Эффективные стратегии блокировки могут повысить производительность запросов и параллелизм. Примените оптимизированные механизмы блокировки, которые предоставляет система баз данных. Анализ и настройка уровней изоляции для балансировки согласованности данных и производительности запросов.
Отслеживайте и настраивайте. Отслеживайте метрики производительности запросов, такие как среда выполнения, использование ресурсов и пропускная способность запросов. Используйте средства профилирования базы данных и функции мониторинга для выявления плохо выполняемых запросов. Оцените и настройте планы запросов на основе собранных данных о производительности. Анализ планов запросов и статистики ожидания для выявления узких мест. Используйте эти сведения для оптимизации производительности запросов.
Оптимизация производительности индекса
Индексы повышают скорость извлечения данных, позволяя базам данных быстро находить данные с помощью определенных столбцов или полей. При оптимизации этих индексов операции сортировки и соединения становятся более эффективными, что приводит к более быстрым запросам. Оптимизированные индексы сокращают операции ввода-вывода диска, необходимые для запросов. Удаление ненужных или избыточных индексов также освобождает ценное место в хранилище. Чтобы оптимизировать производительность индекса, рассмотрите следующие стратегии.
Анализ шаблонов запросов. Общие сведения о шаблонах запросов, выполняемых в базе данных. Определите запросы, которые выполняются часто и могут снизить производительность. Анализ шаблонов запросов, чтобы определить, какие индексы полезны для оптимизации производительности.
Оцените существующие индексы. Просмотрите существующие индексы в базе данных. Оцените их использование, эффекты производительности и релевантность шаблонов запросов. Определите избыточные или неиспользуемые индексы, которые можно удалить, чтобы повысить производительность записи и сократить затраты на хранение.
Определите столбцы для индексирования. Определите столбцы, которые часто используются в предложениях where, join и order by ваших запросов. Эти столбцы могут быть кандидатами для индексации, поскольку они могут обеспечивать быстрое извлечение данных.
Выберите соответствующий тип индекса. Выберите соответствующий тип индекса на основе системы базы данных. Распространенные варианты включают индексы b-tree для запросов на равенство и диапазон, хэш-индексы для точных запросов соответствия и полнотекстовые индексы для операций поиска текста. Выберите тип индекса, который лучше всего соответствует вашим требованиям к запросу.
Рассмотрим порядок столбцов индекса. При создании составных индексов или индексов с несколькими столбцами следует учитывать порядок столбцов. Поместите столбцы, которые чаще всего используются в запросах в начале индекса. Порядок столбцов помогает убедиться, что рабочая нагрузка эффективно использует индексы для широкого спектра запросов.
Балансируйте размер индекса. Избегайте создания индексов для столбцов с низкой кратностью или столбцами с низким числом различных значений. Такие индексы могут быть неэффективными и увеличить размер базы данных. Вместо этого индексируйте столбцы с высокой селективностью.
Сохраняйте использование индекса. Непрерывно отслеживайте использование и производительность индексов. Найдите возможности для создания новых индексов или изменения существующих индексов на основе изменений в шаблонах запросов или требованиях к производительности. Удалите или обновите индексы, которые больше не полезны. Индексы требуют затрат на обслуживание. По мере изменения данных индексы могут фрагментироваться и влиять на производительность. Регулярно выполняйте задачи обслуживания индекса, такие как перестроение или реорганизация индексов, чтобы обеспечить оптимальную производительность.
Тестирование и проверка. Перед пересмотром индексов в рабочей среде выполните тщательное тестирование и проверку. Измеряйте влияние изменений индекса на производительность с помощью репрезентативных рабочих нагрузок. Проверьте улучшения в соответствии с предопределенными тестами.
Компромисс. Индексы B-дерева могут иметь большие затраты на хранение, а запросы точного соответствия могут быть медленными. Хэш-индексы не подходят для запросов диапазона или операторов сравнения. Полнотекстовые индексы могут иметь высокие требования к хранилищу, а запросы нетекстовых данных могут быть медленными.
Рассмотрите возможность сжатия данных
Сжатие данных — это процесс уменьшения размера данных для оптимизации дискового пространства и повышения производительности рабочей нагрузки. Сжатые данные требуют меньше места в хранилище и меньше пропускной способности для передачи, что приводит к быстрой передаче данных. Вы будете сжимать данные, чтобы сократить объем хранилища и повысить время доступа к данным. При сжатии данных уменьшается количество операций ввода-вывода и требования к пропускной способности сети.
Сжатие без потерь и сжатие с потерями — это алгоритмы сжатия данных. Алгоритмы сжатия без потери снижают размер данных, не теряя никаких сведений. Алгоритмы сжатия с потерями обеспечивают высокий коэффициент сжатия, удаляя менее важную или избыточную информацию.
Компромисс. Для сжатия и распаковки данных требуются вычислительные ресурсы, такие как ЦП и память. Чем больше данных вы сжимаете, тем больше необходимых ресурсов.
Архивирование и очистка данных
Архивация и очистка — это стратегии, упрощающие хранение данных. Архивация перемещает старые, менее часто доступные данные в более экономичное хранилище. Очистка данных окончательно удаляет избыточные данные. Они способствуют повышению производительности за счет уменьшения объема данных, повышения скорости доступа к данным и снижения времени резервного копирования и восстановления:
Сокращение объема данных: уменьшение объема данных означает более быстрое время обработки, обеспечивая быстрые ответы на запросы пользователей.
Увеличение скорости доступа к данным: обрезанный набор данных позволяет ускорить запросы и извлечение данных, оптимизируя скорость реагирования системы.
Сокращение времени резервного копирования и восстановления: небольшие наборы данных ускоряют процессы резервного копирования и восстановления, минимизируя время простоя и обеспечивая согласованную производительность.
Архивация и очистка играют важную роль в обеспечении максимальной производительности в системах, управляемых данными.
Оптимизация загрузки хранилища
Оптимизация загрузки хранилища означает упрощение запросов к системе хранения. Это помогает устранить ненужные запросы. Это также улучшает извлечение данных и предотвращает перегрузку хранилища. Оптимизация нагрузки на хранилище гарантирует, что система хранения будет реагировать на законные запросы и обеспечивает пиковую производительность. Реализуйте стратегии для уменьшения нагрузки на обработку в хранилище данных. Чтобы оптимизировать загрузку хранилища данных, рассмотрите следующие стратегии.
Использование кэширования
Кэширование хранит часто используемые данные в быстром хранилище, что позволяет получать их быстрее, чем из основного источника. Этот метод повышает производительность данных, сокращая время доступа и избегая повторяющихся наборов данных. Кэширование повышает скорость чтения и сокращает время ответа пользователю, особенно для часто используемых данных. Этот метод наиболее эффективен для статических данных или данных, которые редко меняются.
Чтобы обеспечить оптимальную эффективность кэширования, рассмотрите такие факторы, как политики истечения срока действия, стратегии вытеснения и управление размером кэша. Настройте параметры, например время жизни (TTL), для оптимальной производительности. Чтобы использовать кэш для оптимизации загрузки хранилища, рассмотрите следующие стратегии.
Кэширование в памяти: выполняйте кэширование в памяти для хранения часто доступных данных в памяти для быстрого извлечения. Этот метод можно использовать для данных приложения, которые дорогостоящи для вычисления или извлечения из базы данных. Кэширование в памяти полезно для данных, которые часто читаются, но не изменяются часто.
Кэширование запросов к базе данных: используйте этот метод, чтобы кэшировать результаты запросов базы данных, чтобы избежать выполнения одного запроса несколько раз. Кэширование запросов к базе данных полезно для сложных и трудоемких запросов к базе данных. При кэшировании результатов запроса последующие запросы для того же запроса возвращаются быстро.
Кэширование сети доставки содержимого: используйте этот метод для кэширования веб-содержимого на распределенных сетевых серверах, чтобы уменьшить задержку и улучшить доставку содержимого. Кэширование сети доставки содержимого действует для статического содержимого, например изображений, CSS-файлов и файлов JavaScript. Сети доставки содержимого хранят копии содержимого в нескольких расположениях по всему миру, чтобы пользователи могли получить доступ к содержимому с сервера, который находится рядом с ними географически.
Используйте реплики для чтения
Многие базы данных поддерживают несколько реплик для чтения. Распределяйте запросы чтения между репликами, чтобы свести к минимуму спрос на базу данных записи. Каждая реплика для чтения может обслуживать часть трафика, что может повысить производительность.
Если у вас есть рабочая нагрузка с несколькими репликами данных, которые вы планируете синхронизировать, полезно моделировать эту распределенную систему с помощью теоремы PACELC. Теорема PACELC помогает понять выбор между задержкой и согласованностью в состоянии системы без разделения сети. Используйте эти сведения, чтобы выбрать подсистему СУБД и стратегию синхронизации данных, которая лучше всего подходит для системы в секционированного и непартиментном состоянии. Дополнительные сведения см. в разделе "Разделение обязанностей команд и запросов" (CQRS).
Оптимизация согласованности данных
В распределенной рабочей нагрузке, где данные находятся на нескольких узлах или расположениях, уровень согласованности, который вы выбираете, определяет, как быстро изменения в одном расположении отражаются в других. Выбор более строгой согласованности потребляет больше вычислительных ресурсов и может отрицательно повлиять на эффективность производительности. С другой стороны, менее строгий уровень согласованности, такой как итоговая согласованность, представляет временные несоответствия между узлами, но может повысить производительность.
В конечном итоге согласованность обеспечивает баланс между точностью данных и производительностью рабочей нагрузки. Изменения постепенно распространяются, а не мгновенно, повышая скорость реагирования рабочей нагрузки и скорость обработки данных. Хотя это приводит к кратковременным несоответствиям, в конечном итоге нагрузка обеспечивает согласованные данные на всех узлах. Выбор конечной согласованности может повысить производительность рабочей нагрузки и повысить ее доступность и масштабируемость.
Оптимизация обновлений данных
С помощью оптимистического параллелизма можно обрабатывать одновременные обновления одних и того же данных. Вместо блокировки данных и блокировки других обновлений оптимистический контроль параллелизма позволяет нескольким пользователям или процессам работать одновременно и исходит из того, что конфликты возникают редко.
При оптимистическом параллелизме каждая операция обновления включает версию или метку времени, представляющую состояние данных во время обновления. При обнаружении конфликтующего обновления система устраняет конфликт, отклоняя обновление или объединяя изменения.
Оптимистический контроль параллелизма сводит к минимуму конкуренцию за ресурсы и позволяет выполнять одновременные обновления без избыточных блокировок. Это сокращает время ожидания ресурсов и обеспечивает высокую пропускную способность.
Оптимизация перемещения и обработки данных
Оптимизация перемещения и обработки данных включает повышение эффективности и производительности операций, связанных с извлечением данных, преобразованием, загрузкой и обработкой. Рассмотрим следующие ключевые аспекты оптимизации перемещения и обработки данных:
Оптимизация извлечения, преобразования и загрузки (ETL): оптимизация процессов ETL для минимизации времени обработки. Вы можете оптимизировать процесс извлечения, реализовать эффективные алгоритмы преобразования и оптимизировать процесс загрузки. При эффективном выполнении каждого шага можно оптимизировать общий рабочий процесс.
Параллельная обработка. Использование методов параллельной обработки для повышения производительности. При распределении задач обработки данных между несколькими потоками или узлами можно разделить и обработать рабочую нагрузку одновременно, что приводит к быстрой обработке.
Пакетная обработка: группировать аналогичные задачи вместе, чтобы сократить издержки, вызванные повторяемыми операциями. Обработка нескольких задач в пакете, чтобы сократить общее время обработки.
Оптимизация проектирования хранилища
Оптимизация проектирования хранилища подразумевает создание точной архитектуры хранилища данных и выбор соответствующих технологий хранения. Упрощенная конструкция хранилища повышает доступ к данным, получение и обработку. Благодаря проектированию стратегического хранилища рабочая нагрузка обеспечивает улучшенное время отклика и общую функциональность.
Проектирование с учётом близости данных
Близость данных относится к стратегическому расположению данных ближе к пользователям или службам, которые обращаются к нему чаще всего. Уменьшая физическое или логическое расстояние между данными и пользователями, близость данных обеспечивает более быстрый доступ к данным и улучшенную скорость реагирования. Чтобы оптимизировать проектирование для близкого взаимодействия, рассмотрите следующие стратегии:
Оцените шаблоны доступа к данным: оцените шаблоны доступа рабочей нагрузки и часто доступные данные. Этот анализ может помочь определить место размещения данных для максимального преимущества.
Выберите Azure регионы соответствующим образом: выберите Azure регионы, которые свести к минимуму задержку между рабочей нагрузкой, пользователями и зависимыми хранилищами данных.
Выберите решения, поддерживающие перемещение данных: рассмотрите решения, которые предлагают динамическое перемещение данных на основе изменения шаблонов доступа, обеспечивая оптимальную позицию данных.
Выберите решения, поддерживающие синхронизацию данных: при наличии распределенной базы пользователей выберите решения, которые упрощают синхронизацию данных в разных регионах, обеспечивая доступность реплик данных в близости от пользователей.
Компромисс. Если базовые данные часто изменяются, реализуйте механизм недопустимости кэша, чтобы обеспечить актуальность кэшированных данных.
Использовать полиглотное хранение данных
Полиглотное хранение данных — это практика использования нескольких технологий хранения данных для хранения и управления различными типами данных в рамках приложения или системы. Различные типы баз данных или решений хранилища служат разным требованиям к данным.
Сохраняемость Polyglot использует преимущества каждой технологии хранения данных, чтобы обеспечить оптимальную производительность и масштабируемость для каждого типа данных. Например, можно использовать реляционную базу данных для хранения структурированных, транзакционных данных. И вы можете использовать базу данных NoSQL для хранения неструктурированных или полуструктурированных данных.
Проектируйте схему для каждой технологии хранения данных на основе требований данных. Для реляционных баз данных можно создать нормализованные таблицы с соответствующими связями. Для баз данных NoSQL можно определить структуры документов или пары "ключ-значение". Разработайте необходимые компоненты для взаимодействия с каждой технологией хранения данных, такими как API, уровни доступа к данным или конвейеры интеграции данных. Убедитесь, что приложение может считывать и записывать данные в соответствующие хранилища данных.
Компромисс. Структура данных с низкой нормализацией может повысить производительность, но привести к сложностям.
Отдельные системы OLTP и OLAP
Чтобы разделить системы OLTP и OLAP , проектируйте и развертывайте отдельные системы для транзакционной обработки и аналитических задач обработки. Это разделение позволяет оптимизировать каждую систему для конкретной рабочей нагрузки и характеристик.
Системы OLTP используются для обработки транзакций в режиме реального времени. Они эффективно и надежно обрабатывают отдельные транзакции. Системы OLTP обычно используются для выполнения повседневных рабочих задач, таких как обработка заказов в интернете, управление инвентаризацией и управление данными клиентов. Системы OLTP отдают приоритет оперативности, согласованности и параллелизму.
Системы OLAP используются для сложной аналитической обработки и отчетности. Они обрабатывают большие объемы данных и выполняют ресурсоемкие вычисления и агрегацию данных. Системы OLAP используются для таких задач, как бизнес-аналитика, интеллектуальный анализ данных и поддержка принятия решений. Системы OLAP отдают приоритет производительности запросов, агрегированию данных и многомерному анализу.
При отдельных системах OLTP и OLAP можно выделить соответствующие ресурсы и оптимизировать каждую систему для конкретной рабочей нагрузки. Разделение позволяет применять различные методы моделирования данных к каждой системе. Системы OLTP обычно используют нормализованные схемы для эффективной обработки транзакций. Системы OLAP могут использовать денормализованные схемы или методы хранения данных для оптимизации производительности запросов.
Упрощение функций Azure
Данные профилирования: Azure предлагает средства и службы, которые можно использовать для профилирования данных, таких как каталог данных Azure, Azure Purview и Azure Synapse Analytics. Эти средства позволяют извлекать, преобразовывать и загружать данные из различных источников, выполнять проверки качества данных и получать аналитические сведения о данных.
Мониторинг производительности данных. Для мониторинга производительности данных можно использовать Azure Monitor для сбора и анализа метрик инфраструктуры, журналов и данных приложения. Вы можете интегрировать Monitor с другими службами, такими как Application Insights. Application Insights обеспечивает мониторинг производительности приложений и поддерживает множество платформ.
Application Insights собирает данные об использовании и производительности. С помощью Log Analytics можно сопоставить эти данные с данными конфигурации и производительности в ресурсах Azure.
Вы можете использовать функцию аналитики SQL Azure и Azure Cosmos DB для мониторинга базы данных. Эта функция позволяет диагностировать и настраивать проблемы с производительностью базы данных.
Секционирование данных: Azure предлагает различные стратегии секционирования для различных хранилищ данных. Каждое хранилище данных может иметь различные рекомендации и параметры конфигурации для секционирования данных. Дополнительные сведения см. в стратегиях секционирования данных.
Оптимизация запросов к базе данных и производительности индекса. Используйте функцию анализа производительности запросов базы данных SQL Azure для оптимизации запросов, таблиц и баз данных. Эту функцию можно использовать для выявления и устранения проблем с производительностью запросов.
Для реляционных баз данных следует следовать рекомендациям по проектированию индексов, руководству по индексу SQL Server и руководству по индексу Azure Cosmos DB. Используйте базу данных SQL для автоматической настройки запросов для повышения производительности.
В базах данных SQL следует регулярно реорганизовать или перестроить индексы. Определите медленные запросы и настройте их для повышения производительности. Многие ядра СУБД имеют функции настройки запросов. Дополнительные сведения см. в рекомендациях по производительности запросов.
Azure Cosmos DB имеет политику индексирования по умолчанию , которая индексирует каждое свойство каждого элемента и применяет индексы диапазона для любой строки или числа. Эта политика обеспечивает эффективную производительность запросов, и вам не нужно управлять индексами заранее.
Для шаблонов запросов с большим объемом чтения, которые не соответствуют ключу секции транзакций, Azure Cosmos DB глобальные вторичные индексы предоставляют индексы только для чтения с помощью независимых ключей секций. Используйте их для уменьшения затрат на запросы между секциями, но запланируйте дополнительные решения по индексации и пропускной способности.
Оптимизация загрузки хранилища. Многие службы базы данных Azure поддерживают реплики чтения. Доступность и конфигурация реплик чтения могут различаться в зависимости от службы баз данных Azure. Ознакомьтесь с официальной документацией для каждой службы, чтобы понять подробности и параметры.
Оптимизация структуры хранилища: Azure предлагает множество различных хранилищ данных в соответствии с потребностями рабочей нагрузки. Общие сведения о типах хранилища данных и выборе хранилища данных Azure для приложения.
Связанные ссылки
- Автоматическая настройка в базе данных SQL
- Azure Cosmos DB
- Руководство по индексу Azure Cosmos DB
- Azure SQL
- Рекомендации по производительности запросов
- Шаблон CQRS
- Руководство по секционированием данных
- Стратегии секционирования данных
- Политика индексирования по умолчанию
- Руководство по проектированию индексов
- Обзор OLAP
- Обзор OLTP
- Рекомендации по разбиению на разделы
- Реорганизация или перестроение индексов
- Выбор хранилища данных Azure для приложения
- Руководство по индексу SQL Server
- Общие сведения о типах хранилища данных
Контрольный список эффективности производительности
Ознакомьтесь с полным набором рекомендаций.