Может ли триггер MySQL для 100 миллионов ежедневных обновлений повлиять на производительность кластера базы данных?

У меня есть таблица MySQL (Aurora 5.7) в базе данных, в которой есть

  1. 700 миллионов строк
  2. 9 Указатели
  3. 25 столбцов
  4. 100 миллионов ежедневных обновлений
  5. и 5 миллионов ежедневных вставок

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

Проблема не только в этом, но и в том, что столбец, участвующий в извлечении, не индексируется, поэтому для извлечения требуется от 5 до 6 часов.

Извлечения - это просто, в основном, мы получаем подсчеты на основе дат, которые не индексируются, и мы не можем создавать индексы, так как это может повлиять на приложение.

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

Несмотря на то, что мы запускаем этот запрос в узлах чтения DR, он влияет на кластер, и служба поддержки и эксперты AWS также подтвердили это.

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

Опция 1 :

Сделайте ежедневное восстановление снимка и запустите ежедневный отчет в новом кластере. Этот вариант выглядит очень хорошо, но проблема в том, что у нас есть база данных на 18 ТБ, и мои дополнения ежедневно будут работать от 10 до 15 часов, потому что нужно создавать 21 такой отчет, поэтому ежемесячные расходы будут близки к 7 тысячам долларов.

Вариант 2:

Делает ежедневный снимок и добавляет только необходимые таблицы для отчета в s3, а затем запускает запрос Athena.

Но проблема в том, что экспорт в S3 занимает много времени, а стоимость снова очень высока, потому что, несмотря на то, что мы экспортируем несколько таблиц из Snapshot, мы платим за полный снимок, экспорт 18 ТБ, что снова составляет 6 тысяч долларов в месяц.

Вариант 3:

Иметь триггер на этой таблице бюста и вставлять все вставки и обновления в новую таблицу, а затем запускать отчет по новой таблице.

Мне нужна помощь, чтобы решить, какой вариант лучше, и если мы выберем вариант «Триггер», то ежедневно будет 100 миллионов триггеров, и это большое количество триггеров может повлиять на базу данных?

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

Пожалуйста, предложите.

0 ответов

Другие вопросы по тегам