Я занимаюсь разработкой облачных сервисов, в которых синхронизирует локальные базы данных (заказ с POS-системой) в центральную удаленную базу данных. Наша удаленная база данных использует последнюю версию mysql 5.6 с движком innoDB для каждой из таблиц. В основном он работает как транзакционная база данных, в которой много транзакций, в основном записывающих (например, INSERT и UPDATE), а иногда и при чтении отчетов и т. Д. Неизбежно мы столкнулись с нашим первым тупиком базы данных (обратите внимание, что это произошло до обновления mysql 5.6), и мое понимание причины тупика может быть там, где есть два соединения, пытающихся либо ПРОЧИТАТЬ, либо НАПРАВЛЯТЬ в ряд одновременно. Я также понимаю, что взаимоблокировки являются общими и требуют правильного кода, чтобы попробовать/поймать тупики, в которых, я считаю, мне удалось выполнить. Для того, чтобы смягчить тупики я думал о создании 2 базы данных, которые являются зеркалом друг друга А) базы данных, которая записывается в б) База данных, которая считываетсяТранзакционная база данных и предотвращение взаимоблокировок
В основном в синхронизации с локального на удаленный будет писать в базу данных A, а использование rsync в фоновом режиме будет отображать базу данных A-B, какая база B будет использоваться для чтения и запроса отчетов, поскольку rsync не использует подключения к базе данных для чтения данных для синхронизации.
Вопрос в том, будет ли эта структура работать с точки зрения устранения взаимоблокировок и иметь какие-либо существенные проблемы с производительностью на сервере?
Надеюсь, мой вопрос имеет смысл в том, чего я пытаюсь достичь.
Заранее спасибо.
Я считаю, что правильно проиндексирован, однако мои таблицы не используют автоматические приращения, они используют комбинацию внешних ключей в качестве основного индекса. например orderid, clientid. Должны ли все таблицы автоматически увеличиваться с помощью id? –
BTW Я регистрирую медленные запросы и оптимизирую свои запросы –
еще раз, у меня есть еще 2 индекса, которые я добавил в таблицу, чтобы оптимизировать время запроса, не уверен, что несколько индексов могут помочь в возникновении взаимоблокировок, а также –