Рекомендации по оптимизации производительности данных

Применяется к этой рекомендации по повышению эффективности производительности Azure Well-Architected Framework:

PE:08 Оптимизация производительности данных. Оптимизируйте хранилища данных, секции и индексы для их предполагаемого и фактического использования в рабочей нагрузке.

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

Определения

Термин Определение
Теорема CAP Платформа, используемая для рассмотрения согласованности, доступности и допустимости секционирования, чтобы объяснить компромиссы в согласованности данных.
Перестроение индекса базы данных Действие обслуживания, которое удаляет и повторно создает индекс.
Реорганизация индекса базы данных Действие обслуживания, оптимизирующее текущий индекс базы данных.
Хранилище данных Ресурс, в котором хранятся такие данные, как база данных, хранилище объектов или общая папка.
Итоговая согласованность Модель синхронизации данных, которая обеспечивает временную несогласованность реплик данных перед их синхронизацией.
Индекс Структура базы данных, которая обеспечивает быстрый доступ к элементам.
Оперативная аналитическая обработка (OLAP) Технология, которая упорядочивает крупные бизнес-базы данных, поддерживает сложный анализ и выполняет сложные аналитические запросы без негативного влияния на транзакционные системы.
Оперативная обработка транзакций (OLTP) Технология, которая записывает бизнес-взаимодействия по мере того, как они происходят в повседневной работе организации.
Оптимистическая блокировка Подход к обновлению баз данных, который использует моментальные снимки для обновления вместо традиционных механизмов блокировки, повышая производительность и масштабируемость.
Теорема PACELC Платформа, используемая для рассмотрения допустимости секционирования, доступности, согласованности и задержки, чтобы объяснить компромиссы в согласованности данных.
Секционирование Процесс физического разделения данных на отдельные хранилища данных.
Настройка запросов Процесс, оптимизирующий скорость запроса к базе данных.
Чтение реплика Динамическая копия базы данных-источника, которая позволяет выгружать трафик чтения из базы данных записи.

Ключевые стратегии проектирования

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

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

  • Настройка конфигурации хранилища данных. Настройте инфраструктуру хранения данных в соответствии с требованиями рабочей нагрузки. Выберите подходящую технологию хранения, например реляционные базы данных, базы данных NoSQL и хранилища данных. Оптимизируйте параметры хранилища, такие как размер буфера, механизмы кэширования и сжатие.

  • Оптимизация производительности запросов. Анализ и оптимизация запросов, выполняемых в рабочей нагрузке. Используйте такие методы, как оптимизация запросов, индексирование и кэширование. Чтобы определить узкие места, используйте планы запросов и средства мониторинга производительности, а затем внесите необходимые улучшения.

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

Данные профиля

Профилирование данных включает в себя проверку данных из источника и сбор сведений о нем. Цель состоит в том, чтобы понять качество, структуру и характеристики данных рабочей нагрузки. Этот процесс позволяет выявлять такие проблемы, как отсутствующие значения, дубликаты, несогласованные форматы и другие аномалии. Для эффективного профилирования данных рассмотрите следующие стратегии:

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

  • Анализ объема данных. Оцените объем данных, чтобы понять общий размер и закономерности роста. Определите количество записей или документов и размер отдельных таблиц или коллекций. Эти сведения помогут оценить требования к хранилищу и выявить проблемы масштабируемости.

  • Определение связей данных. Изучите связи между элементами данных, например связи первичного и внешнего ключей. Узнайте, как связаны данные, чтобы определить, как изменения в одной таблице или документе могут повлиять на связанные данные.

  • Оценка качества данных. Оцените качество данных, изучив такие факторы, как полнота, точность, согласованность и уникальность. Определите аномалии данных, отсутствующие значения или повторяющиеся записи, которые могут повлиять на целостность данных и производительность запросов. Этот шаг помогает определить области для очистки и улучшения данных.

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

Мониторинг производительности данных

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

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

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

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

Секционирование данных

Секционирование включает в себя разделение больших наборов данных или рабочих нагрузок с большим объемом на небольшие управляемые подмножества. Секционирование повышает производительность данных за счет распределения рабочей нагрузки и улучшения параллельной обработки. Это также обеспечивает более эффективный доступ к данным на основе конкретных потребностей и шаблонов запросов. Данные можно секционировать по вертикали или по горизонтали (также называется сегментированием).

Стратегия Определение Пример Варианты использования
Вертикальное секционирование Разделите таблицу на таблицы меньшего размера, выбрав определенные столбцы или поля для каждой секции. Каждая секция представляет подмножество полных данных. При наличии таблицы со столбцами A, B, C и D можно создать одну таблицу со столбцами A и B, а другую — со столбцами C и D. — Таблица содержит много столбцов, но запросы не обращаются ко всем столбцам вместе.
— Некоторые столбцы больше других, и их разделение может повысить производительность операций ввода-вывода.
— Различные части данных имеют различные шаблоны доступа.
Горизонтальное секционирование Разделение данных по строкам или диапазонам значений (также называемое сегментированием). Каждая секция содержит подмножество строк со схожими характеристиками. При наличии таблицы со строками от 1 до 1000 можно создать одну секцию со строками от 1 до 500, а другую — со строками от 501 до 1000. — Набор данных слишком велик для одного расположения или сервера.
— Доступ к данным осуществляется на основе определенных диапазонов или фильтров.
— для повышения производительности необходимо распределить рабочую нагрузку между физическими узлами или серверами.

Чтобы секционировать данные, выполните следующие действия.

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

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

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

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

Дополнительные сведения см. в руководстве по разделению данных.

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

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

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

  • Избегайте проблемы с запросом N+1. Сведите к минимуму количество циклов в базу данных, используя соединения и пакетную выборку для эффективного извлечения связанных данных.

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

  • Используйте указания индекса. Используйте указания индекса, чтобы ядро СУБД пользовалось индексами при выполнении запроса. Указания индекса помогут оптимизатору выбрать наиболее подходящие индексы.

  • Запросы кэша. Храните результаты часто выполняемых запросов в памяти. Кэширование запросов устраняет необходимость многократного выполнения одного и того же запроса и снижает затраты на обработку запросов.

  • Оптимизация блокировки. Избегайте ненужных или ограничительных указаний блокировки в запросах. Эффективные стратегии блокировки могут повысить производительность и параллелизм запросов. Применять оптимизированные механизмы блокировки, которые предоставляет система баз данных. Анализируйте и корректируйте уровни изоляции, чтобы сбалансировать согласованность данных и производительность запросов.

  • Мониторинг и настройка. Отслеживайте метрики производительности запросов, такие как среда выполнения, использование ресурсов и пропускная способность запросов. Используйте средства профилирования базы данных и функции мониторинга для выявления низкопроизводительных запросов. Оценка и тонкая настройка планов запросов на основе собранных данных о производительности. Анализируйте планы запросов и статистику ожидания, чтобы выявить узкие места. Используйте эти сведения для оптимизации производительности запросов.

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

Индексы повышают скорость получения данных, позволяя базам данных быстро находить данные с помощью определенных столбцов или полей. При оптимизации этих индексов операции сортировки и объединения становятся более эффективными, что приводит к ускорению выполнения запросов. Хорошо оптимизированные индексы сокращают операции дискового ввода-вывода, необходимые для запросов. Удаление ненужных или избыточных индексов также освобождает ценное место в хранилище. Чтобы оптимизировать производительность индекса, рассмотрите следующие стратегии:

  • Анализ шаблонов запросов. Изучите шаблоны запросов, выполняемые в базе данных. Определите запросы, которые выполняются часто и могут снизить производительность. Анализируйте шаблоны запросов, чтобы определить, какие индексы полезны для оптимизации производительности.

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

  • Определите столбцы для индексирования. Определите столбцы, которые часто используются в предложениях where, join и order by ваших запросов. Эти столбцы являются потенциальными кандидатами для индексирования, так как они могут обеспечить быстрое получение данных.

  • Выберите подходящий тип индекса. Выберите подходящий тип индекса в зависимости от системы базы данных. Распространенные варианты включают индексы сбалансированного дерева для запросов на равенство и диапазон, хэш-индексы для запросов точного соответствия и полнотекстовые индексы для операций текстового поиска. Выберите тип индекса, который лучше всего соответствует требованиям запроса.

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

  • Баланс размера индекса. Избегайте создания индексов для столбцов с низкой кратностью или столбцов с небольшим количеством уникальных значений. Такие индексы могут быть неэффективными и увеличивать размер базы данных. Вместо этого индексировать столбцы с высокой избирательностью.

  • Поддерживать использование индекса. Непрерывно отслеживайте использование и производительность индексов. Найдите возможности для создания новых индексов или изменения существующих индексов на основе изменений в шаблонах запросов или требований к производительности. Удалите или обновите индексы, которые больше не являются полезными. Индексы требуют дополнительных расходов на обслуживание. При изменении данных индексы могут фрагментироваться и влиять на производительность. Регулярно выполняйте задачи обслуживания индексов, такие как перестроение или реорганизация индексов, для обеспечения оптимальной производительности.

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

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

Рассмотрите возможность сжатия данных

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

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

Компромисс. Для сжатия и распаковки данных требуются вычислительные ресурсы, такие как ЦП и память. Чем больше данных сжимается, тем больше ресурсов требуется.

Архивация и очистка данных

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

  • Уменьшение объема данных. Уменьшение объема данных означает более быстрое время обработки, обеспечивая быстрые ответы на запросы пользователей.

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

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

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

Оптимизация загрузки хранилища

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

Использование кэширования

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

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

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

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

  • Кэширование в сети доставки содержимого. Используйте этот метод для кэширования веб-содержимого на серверах распределенной сети, чтобы уменьшить задержку и улучшить доставку содержимого. Кэширование сети доставки содержимого эффективно для статического содержимого, например изображений, CSS-файлов и файлов JavaScript. Сети доставки содержимого хранят копии содержимого в нескольких расположениях по всему миру, чтобы пользователи могли получить доступ к содержимому с сервера, который находится рядом с ними географически.

Использование реплик чтения

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

При наличии рабочей нагрузки с несколькими репликами данных, которые должны оставаться синхронизированными, рекомендуется моделировать эту распределенную систему с помощью теоремы PACELC. Теорема PACELC помогает понять задержку и постоянство компромиссных вариантов в несекционируемом состоянии системы. Используйте эти сведения, чтобы выбрать стратегию синхронизации ядра СУБД и данных, которая лучше всего подходит для системы в секционированных и несекционированных состояниях. Дополнительные сведения см. в статье Шаблон разделения ответственности команд и запросов (CQRS).

Оптимизация согласованности данных

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

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

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

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

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

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

Оптимизация перемещения и обработки данных

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

  • Оптимизация извлечения, преобразования и загрузки (ETL). Оптимизируйте процессы извлечения, преобразования и загрузки, чтобы свести к минимуму время обработки. Вы можете оптимизировать процесс извлечения, реализовать эффективные алгоритмы преобразования и оптимизировать процесс загрузки. При эффективном выполнении каждого шага можно оптимизировать общий рабочий процесс.

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

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

Оптимизация структуры хранилища

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

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

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

  • Оценка шаблонов доступа к данным. Оцените шаблоны доступа рабочей нагрузки и часто используемые данные. Этот анализ может помочь определить, где размещать данные для получения максимальной выгоды.

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

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

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

Использование сохраняемости polyglot

Сохраняемость Polyglot — это практика использования нескольких технологий хранения данных для хранения различных типов данных в приложении или системе и управления ими. Различные типы баз данных или решений для хранения данных выполняют разные требования к данным.

Сохраняемость 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.

Для мониторинга базы данных можно использовать функцию аналитики Azure SQL и Azure Cosmos DB. Эта функция позволяет диагностировать и настраивать проблемы с производительностью базы данных.

Секционирование данных. Azure предлагает различные стратегии секционирования для различных хранилищ данных. Каждое хранилище данных может иметь различные рекомендации и параметры конфигурации для секционирования данных. Дополнительные сведения см. в статье Стратегии секционирования данных.

Оптимизация запросов к базе данных и производительности индексов. Используйте функцию анализа производительности запросов Azure SQL Database для оптимизации запросов, таблиц и баз данных. Эту функцию можно использовать для выявления и устранения проблем с производительностью запросов.

Для реляционных баз данных следует следовать рекомендациям по проектированию индексов, SQL Server рекомендациям по индексу и рекомендациям по индексу Azure Cosmos DB. Используйте База данных SQL для автоматической настройки запросов, чтобы повысить их производительность.

В базах данных SQL следует регулярно реорганизовать или перестроить индексы. Определите медленные запросы и настройте их для повышения производительности. Многие ядра СУБД имеют функции настройки запросов. Дополнительные сведения см. в статье Рекомендации по повышению производительности запросов.

Azure Cosmos DB имеет политику индексирования по умолчанию , которая индексирует каждое свойство каждого элемента и принудительно применяет индексы диапазона для любой строки или числа. Эта политика обеспечивает эффективную производительность запросов, и вам не нужно управлять индексами заранее.

Оптимизация загрузки хранилища. Многие службы базы данных Azure поддерживают реплики чтения. Доступность и конфигурация реплик чтения зависят от службы базы данных Azure. Подробные сведения и варианты см. в официальной документации по каждой службе.

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

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

См. полный набор рекомендаций.