|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
demon1992 на базе крутится только служба реплики, она ничего кроме вставки данных не делает. demon1992 Служба эта принимает данные от удаленных серверов, парсит, применят - все просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 14:14 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
demon1992 hvlad Откуда известно, что тормозит именно вставка ? Потому что на базе крутится только служба реплики, она ничего кроме вставки данных не делает. Проверял trace and audit, который в ibe есть, задержка непосредственно на командах модификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 14:15 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
demon1992 ты напиши пожалуйста, не стесняйся Фейспалм мешает. Ты столько индексов специально наворотил чтобы оно гарантированно повесилось, или тупо создал по индексу для каждого запроса? demon1992 ничего кроме вставки данных не делает Для полноты картины покажи триггера, которые пишут в tbl_subscriber, tbl и tbl_log. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 14:22 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
hvlad, Под модификацией данных я имел ввиду операции: вставка удаление обновление. Не прав? Служба может работать с неограниченным кол-ом удаленных сторон. Для каждой из сторон, определенной в конфигурации, на службе стартует свой тред, один для приема сообщений, другой для отправки. Тред который принимает сообщения, запускает log_set, который отправляет - log_get. База, о которой я начал вести речь в данном топике, работает с несколькими подписчиками. Так вот когда от одного из подписчиков приходят новые данные, стартует log_set, в нем es для уже конечных таблиц. На таблицах триггер, в котором есть логика в том числе на передачу данных принятых от одного подписчика другому, чтобы данные во всех базах были одинаковыми. Получается, принял данные для одного, сформировал данные на отправку для другого = вставка данных в журнал реплики. Сорри если плохо объяснил. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 14:36 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Ничего особенного там нет, поверь на слово. А насчет индексов - объяснишь как обойтись без? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 14:39 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
demon1992 Код: sql 1.
Этим ты создал индекс с рекордно низкой селективностью, вредящий больше, чем помогающий. Неудивительно, что запросы с данным полем приходится хинтовать для его отключения. demon1992 Код: sql 1. 2.
Эти индексы просто дублируют друг друга, да ещё и с самым низкоселективным сегментом в конце. demon1992 Код: plsql 1. 2. 3.
Этим запросом ты заблокировал запись в родительской таблице, поставив красный свет большинству "модификаций". demon1992 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Здесь у тебя совершенно ненужный левый джоин и выборка не первичного ключа. demon1992 Код: plsql 1. 2. 3. 4. 5.
Здесь update по этому непервичному ключу, что (вероятно) приводит к многочисленным изменениям многих записей, которые ты не ожидаешь. demon1992 Код: plsql 1.
Здесь прелестные грабли на случай если вызывающий код прервёт фетч на середине делающие поле is_send бесполезным. demon1992 Ничего особенного там нет, поверь на слово. Не верю. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 14:51 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
demon1992А насчет индексов - объяснишь как обойтись без? Внешний ключ не нужен. Подписчики не мелькают достаточно быстро чтобы их приходилось жёстко контролировать. Поле state не нужно. Обработанные записи удаляй или выкидывай в отдельную таблицу. То же и с id_send. Поле ID_LOG_LATEST не нужно. Оно только создаёт проблему с транзакциями, закоммиченными не по порядку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 15:13 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
demon1992 Под модификацией данных я имел ввиду операции: вставка удаление обновление. Не прав? demon1992 Для каждой из сторон, определенной в конфигурации, на службе стартует свой тред, один для приема сообщений, другой для отправки. Тред который принимает сообщения, запускает log_set, который отправляет - log_get. demon1992 Так вот когда от одного из подписчиков приходят новые данные demon1992 стартует log_set, в нем es для уже конечных таблиц. На таблицах триггер, в котором есть логика в том числе на передачу данных принятых от одного подписчика другому, чтобы данные во всех базах были одинаковыми. Ты до сих пор не видишь источника конкуренции за записи для одного и того же подписчика от разных потоков (коннектов) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 15:40 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
hvlad Я так понимаю, что у каждого потока свой ID_SBSCR. Да hvlad Подписчик обычно получает данные, а не является их источником. Снова путаешь меня. Издателя, прошу прощения. hvlad при принятии данных от подписчика N, триггеры пишут в лог данные для подписчика M ? Ага hvlad Ты до сих пор не видишь источника конкуренции за записи для одного и того же подписчика от разных потоков (коннектов) ? Если честно то нет, не думал что вставка новых записей может что-то блокировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 15:49 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Насчет двух составных индексов согласен, что можно оставить один. fk на ид_подаисчика тоже можно убрать. Насчет остального нет. Но дело не в составных индексах, тормоза были и при одном. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 15:51 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
hvladТы до сих пор не видишь источника конкуренции за записи для одного и того же подписчика от разных потоков (коннектов) ? Напомни: апдейт неключевого поля мастер-таблицы блокирует операции вставки в подчинённую? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 16:00 |
|
Помогите советом, репликация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hvladТы до сих пор не видишь источника конкуренции за записи для одного и того же подписчика от разных потоков (коннектов) ? Напомни: апдейт неключевого поля мастер-таблицы блокирует операции вставки в подчинённую?Не блокирует, но только после ожидания. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2021, 16:29 |
|
|
start [/forum/topic.php?fid=40&msg=40098674&tid=1559935]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 277ms |
0 / 0 |