Советы и рекомендации¶ Лучшие практики Общие принципы проектирования таблиц Таблицы с Primary Key Настройка производительности запросов Партиционирование Партиционирование vs. бакетирование — разные задачи Когда партиционировать? Выбор ключа партиционирования Выбор гранулярности Примеры «рецептов» Click‑stream факт (single‑tenant) SaaS метрики (multi‑tenant, шаблон A) Композит для «крупных арендаторов» (шаблон B) Кластеризация таблиц Пример Преимущества подробно Как работает sort key Как выбрать эффективный sort key Заключение Бакетирование Быстрое сравнение Hash Bucketing Как это работает Требования Преимущества Недостатки Пример: Dimension‑Fact Join и обрезка таблетов Что даёт этот пример? Когда использовать Random Bucketing Как это работает Преимущества Недостатки Когда использовать Операционные рекомендации Таблицы Primary Key Выбор индекса Primary Key Выбор Primary Key Формула стоимости по месту в хранилище Формула стоимости по памяти Использование памяти Баланс между ресурсами компакции, «свежестью» данных и латентностью запросов Свежесть данных и латентность запросов Свежесть данных и ограничения по ресурсам компакции Латентность запросов и ограничения по ресурсам компакции Аутентификация и авторизация Реальный сценарий в enterprise Пример Три слоя контроля доступа В контексте базы данных Ключевые понятия LDAP Возможности Аутентификация Вариант 1: Создать Native User с внешней аутентификацией Вариант 2: Security Integration с внешней аутентификацией Group Provider (необязателен, но рекомендован) Как используются группы Примечания по конфигурации Пример Авторизация Комбинированные решения Решение 1: Внешняя аутентификация + внешняя авторизация Решение 2: Внешняя аутентификация (Native User) + внутренняя авторизация Решение 3: Внешняя аутентификация (внешняя идентичность) + внутренняя авторизация Настройка Resource Group на основе Audit Log Распределение CPU Цель Анализ Рекомендации Управление памятью Цель Анализ Рекомендации Контроль параллелизма Цель Анализ Рекомендации Изоляция ресурсов для асинхронных Materialized View Цель Анализ Рекомендации Настройка запросов Введение в настройку запросов План запроса Поток выполнения запроса Пример Как читать план и профиль запроса Пример плана запроса Обзор Query Profile Введение Как включить Query Profile Включение Query Profile Query Profile только для «медленных» запросов Runtime Query Profile Конфигурации Как получить Query Profile Через Web UI Через SQL‑функцию (get_query_profile) Интерпретация Query Profile Explain Analyze Рецепты тюнинга схемы Выбор типа таблицы Colocate Table Плоская таблица и star‑схема Партиция и бакет Разрежённый индекс и bloomfilter индекс Inverted Index Materialized view (rollup) Изменение схемы (Schema change) Explain Analyze Анализ профилей существующих запросов с помощью ANALYZE PROFILE Симуляция запроса для анализа профиля через EXPLAIN ANALYZE Ограничения Query Hint System variable hint Синтаксис Примеры User-defined variable hint Синтаксис Примеры Join hint Синтаксис Примеры Просмотр выбранного метода Join