Поделиться через


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

Применимо к этой рекомендации Power Platform контрольного списка эффективности хорошо продуманной производительности:

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

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

Определения

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

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

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

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

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

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

Профилирование данных

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

Для эффективного профилирования данных рассмотрите следующие стратегии:

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

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

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

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

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

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

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

При выполнении мониторинга производительности данных учитывайте следующие стратегии:

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

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

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

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

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

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

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

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

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

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

Оптимизируйте запросы

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

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

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

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

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

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

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

Архивируйте и очищайте данные

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

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

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

Оптимизируйте нагрузку на хранилище

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Массовые обновления. Если вы выполняете операции над несколькими строками таблицы, рассмотрите возможность использования массовых операций.

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

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

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

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

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

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

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

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

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

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

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

Возможности в Power Platform

Мониторинг производительности данных: для мониторинга производительности данных рассмотрите возможность использования Azure Monitor для сбора и анализа показателей инфраструктуры, журналов и данных приложений. Вы можете интегрировать Monitor с другими сервисами, например Application Insights. Application Insights обеспечивает мониторинг производительности приложений и поддерживает множество платформ.

Application Insights собирает данные об использовании и производительности. Вы можете использовать Log Analytics, чтобы сопоставить эти данные с данными о конфигурации и производительности ресурсов Azure. Поток данных Application Insights для Dataverse в настоящее время предоставляет данные о производительности, связанные с входящими вызовами API Dataverse, вызовами выполнения подключаемого модуля Dataverse и вызовами SDK Dataverse.

Оптимизируйте шаблоны данных запросов в приложениях Canvas: Следуйте задокументированным рекомендациям и предложениям. См. раздел Оптимизированные шаблоны данных запросов в Power Apps.

Оптимизируйте процесс настройки, расширения или интеграции с помощью Dataverse: Следуйте задокументированным рекомендациям и рекомендациям. См. раздел Рекомендации и инструкции при использовании Microsoft Dataverse.

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

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

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

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

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

Контрольный список по обеспечению эффективности процессов

Обратитесь к полному набору рекомендаций.