Для улучшения производительности MariaDB 10.3 с учетом ваших характеристик системы и задач, вы можете предпринять несколько шагов. Обратите внимание, что конкретные настройки всегда зависят от ваших индивидуальных условий работы системы, поэтому все изменения конфигурации следует тестировать на стенде перед применением их на рабочих серверах. Вот некоторые общие рекомендации:
1. **Настройка конфигурации InnoDB:**
- `innodb_buffer_pool_size`: Установите размер пула буфера InnoDB достаточным для хранения большей части рабочего набора данных в памяти. В вашем случае с 100 ГБ ОЗУ начните, например, с 70 ГБ.
- `innodb_buffer_pool_instances`: Повысьте значение, чтобы иметь несколько экземпляров буферного пула. Например, установите значение в соответствии с объемом оперативной памяти (примерно 1 экземпляр на 10ГБ).
- `innodb_log_file_size`: Убедитесь, что размер файла журнала транзакций достаточно велик для минимизации ожидания записи на диск, начните с значений от 1 ГБ.
- `innodb_log_buffer_size`: Установите достаточный размер буфера журнала, чтобы уменьшить количество записей на диск, например, 512М.
- `innodb_flush_log_at_trx_commit`: В зависимости от требований к надежности, установите значение 0 или 2 для повышения производительности при потере устойчивости.
- `innodb_io_capacity` и `innodb_io_capacity_max`: Настройте эти параметры соответственно вашим возможностям ввода-вывода дисковой системы.
2. **Индексация:**
- Убедитесь, что все столбцы, участвующие в операциях JOIN, имеют соответствующие индексы.
- Проанализируйте запросы с помощью `EXPLAIN` и добавьте необходимые индексы.
- При необходимости создавайте составные индексы для столбцов, используемых в сортировке и группировке.
3. **Настройка сервера:**
- `max_connections`: Увеличьте количество одновременных подключений, если это необходимо.
- `thread_cache_size`: Установите достаточный размер кэша потоков для уменьшения накладных расходов на создание новых потоков.
4. **Настройка запросов:**
- Оптимизируйте запросы с JOIN, обеспечивая их эффективность.
- Используйте стратегии денормализации, если постоянно выполняются сложные запросы с JOIN.
- Попробуйте разбить большие запросы на более мелкие и обработать их последовательно, если это возможно.
5. **Профилирование и мониторинг:**
- Используйте инструменты профилирования и мониторинга, такие как `SHOW PROFILE` для запросов, `SHOW ENGINE INNODB STATUS`, `MariaDB's slow query log`, и перформанс-скрининг, чтобы определить узкие места.
- Посмотрите на плагины перформанс-скрининга, такие как