Настройка планов DML: поиск узких мест при загрузке и выполнении запросов
Проверки перед настройкой
Перед началом настройки планов DML проверьте следующее:
- Можете ли вы чётко отделить время, затраченное на этап загрузки, от времени, затраченного на этап выполнения запроса.
- Изучили ли вы Profile / Query Plan, чтобы определить оператор или этап с наибольшим временем выполнения.
- Прочитали ли вы обзор загрузки, чтобы разобраться, какие методы загрузки подходят для ваших сценариев.
Определение узкого места: загрузка или выполнение запроса
Узкие места при выполнении оператора DML (например, INSERT INTO ... SELECT) обычно возникают на одном из двух этапов. Первый шаг — определить, на каком этапе находится узкое место, а затем приступить к соответствующей настройке.
| Тип узкого места | Типичные признаки | С чего начать настройку |
|---|---|---|
| Узкое место на этапе загрузки | Низкая пропускная способность записи, большое время выполнения операторов Sink | См. обзор загрузки, чтобы выбрать подходящий метод загрузки и ознакомиться с рекомендациями |
| Узкое место на этапе выполнения запроса | Большое время выполнения таких операторов, как Scan, Join и агрегация | См. другие разделы настройки планов для диагностики и настройки |
Настройка загрузки
Doris поддерживает загрузку данных из различных источников. Гибко используя возможности загрузки, предоставляемые Doris, можно эффективно загружать данные из разных источников в Doris для анализа.
- Цель: выбрать подходящий метод загрузки с учётом источника данных и требований к оперативности их поступления, чтобы повысить общую производительность DML.
- С чего начать: обзор загрузки.
- Примечание: методы загрузки включают Stream Load, Broker Load, Routine Load, INSERT и другие. Подробные рекомендации приведены по ссылке выше.
Настройка запросов
Если узкое место находится на этапе выполнения запроса, используйте другие разделы по настройке планов для диагностики и оптимизации, например оптимизации схемы таблицы, работы со статистикой, порядка соединений и преобразования операторов. Подробнее см. в разделе Настройка планов.
Часто задаваемые вопросы
Вопрос 1: Как быстро определить, на каком этапе замедляется выполнение оператора DML: при загрузке или при выполнении запроса? Посмотрите время выполнения каждого оператора в Profile. Если много времени занимают операторы, связанные с Sink/Load, узкое место находится на стороне загрузки. Если много времени занимают операторы Scan/Join/Agg, узкое место находится на стороне выполнения запроса.
Вопрос 2: С чего начать проверку, если INSERT INTO ... SELECT выполняется медленно?
Сначала проверьте, медленно ли выполняется подзапрос SELECT. Если отдельно SELECT выполняется быстро, узкое место обычно находится на стороне записи.
Вопрос 3: Нужно ли одинаково настраивать все методы загрузки? Нет. Разные методы загрузки (Stream Load, Broker Load, Routine Load, INSERT и другие) требуют разных подходов к настройке. См. обзор загрузки.