Captain
@Captain
Делаем сложный функционал под Joomla и не только

Как оптимизировать update для таблицы с nested sets?

Дано. MySQL, innoDB, таблица с деревом порядка 600 тыс. записей из которой много читают и время от времени туда добавляются записи в произвольные узлы дерева. Серверное железо вполне себе все это тянет.
Для ускорения чтения делается SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED.
Проблема в обновлении таблицы. Сам по себе insert отрабатывает без проблем, судя по всему. А вот последующие update для left и right выполняются какое-то запредельное кол-во времени. Запросы на добавление берутся из очереди.
Что можно сделать для оптимизации добавления записей?

p.s. Наверно это важно. Библиотека, которая работает с деревом, лочит таблицу на момент update. Если этот lock убрать, то возникают дедлоки, т.е. ничего не работает.
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
qant
@qant
programer
Попробуйте спросить в телеграм канале https://t.me/ru_mysql
Где то слышал, что скорость update могут влиять индексы, ты если в базе много записей то перестройка индексов это очень дорогая операция.

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

Нет универсального решения тк каждая база уникальна по своему.

Напишите сюда решение для истории для потомков.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы