MySQL обновление MySAM

Мы используем MySQL с движком MyIsam, и у нас возникает ситуация, когда нам необходимо ежедневно обновлять огромное количество строк (миллионов), пока пользователи по-прежнему могут получать доступ к базе данных.

У нас есть пользователи из разных часовых поясов из США, Великобритании, Индии, Китая. Данные загружаются из стороннего источника, когда пользователь впервые регистрируется. Все пользователи используют один и тот же набор таблиц, но их данные не перекрываются, т. Е. Ни один пользователь никогда не будет иметь доступ к тем же строкам, что и другой пользователь.

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

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

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

1 ответ

Я вижу два решения:

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