Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
Дано: Источник - Приемник , транзакционная репликация(поин то поинт). Необходимо обеспечить минимальное отставание в данных при приемника относительно источника. Транзакционная репликация предполагает строгий порядок применения транзакций. В лоб многопоточную загрузку данных не применить, нужно писать координатор, сортировщик и т.д и т.п. Обсуждаю с коллегами вопрос относительно доработки многопоточной загрузки(применения данных на приемнике) данных для транзакционной репликации. Понятно что плюсы всего этого значительное ускорение за счет многопоточной загрузки данных.(есть варианты даже для систем с естественным низким уровнем параллелизма) Но возникает вопрос, а нужно ли это кому либо , есть ли вообще такие потоки данных? Понятно один из кейсов когда были простои и накопились большие очереди. Ну а кроме этого в обычном режиме бывает ли так, что один поток не справляется с загрузкой из источника в приемник? То есть по сути в одной системе многопоточно пишут данные , но пишут их в транзакциях с чтениями(то есть не непрерывно, биллинг не в счет) и не всегда многопоточно а с другой стороны агент из очереди непрерывно в один поток применяет данные на приемнике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 12:59 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
МуМу, скорость канала передачи данных закончится намного раньше, чем скорость записи на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 13:37 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
https://docs.microsoft.com/en-us/sql/relational-databases/replication/agents/replication-distribution-agent?view=sql-server-ver15 -SubscriptionStreams [0|1|2|...64] Is the number of connections allowed per Distribution Agent to apply batches of changes in parallel to a Subscriber, while maintaining many of the transactional characteristics present when using a single thread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 13:44 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
МуМу Понятно что плюсы всего этого значительное ускорение за счет многопоточной загрузки данных. какая наивность... В реальности даже этого плюса нет. Ну и минусы с лихвой его перекрывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 14:45 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а если конкретней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 18:04 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
invm, ну че то там написано, про потоки:) Как они обеспечивают последовательность применения версий при многопоточности? Надо видимо развернуть завтра и самому проверить, раньше точно не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 18:05 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, область применения в локальных сетях с хорошими каналами, сеть точно не станет узким местом. Приведу сразу пример - возможность итерационной обрезки БД, обслуживание индексов и статистик на реплике с последующим переключением.(и да я знаю про индексы онлайн и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2019, 18:08 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
МуМу а если конкретней? Масштабирование производительности при увеличении числа коннектов нелинейно. Оно заканчивается на считанных единицах. А вот минусы - именно то нарушение последовательности транзакции о котором ты спрашиваешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 14:36 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
Хм, неужели все так грустно. Для своей репликации мы уже написали. По сути необходим координатор сортировщик.Концептуально нужно в транзакциях проверять ключи на пересечение, далее их сортировать и ставить как можно ниже(именно пересекающиеся, но сортировать все равно нужно что бы деадлоков не было) в транзакции а потом комитить транзакции в порядке как было в источнике. Но есть не заморачиваться с транзакционной целостностью в каждый конкретный момент времени то еще все проще. Рассмотрю пример для 10-и потоков. Берешь например 10 транзакций, объединяешь в одну. Потом сортируешь по признаку Table,UK,Version(TranId) , далее группируешь равномерно по потокам в таком порядке, главное что бы один UK со всеми версиями попадал в один поток гарантированно. И запускаешь в 10-и потоках. В этом случае основное правило не должно быть пересечение между потоками - в таком случае их гарантированно не будет. Единственный момент что в таком случае нельзя запускать новые потоки пока все не отработают, в противном случае возможно пересечение и нарушение хронологии. Вообщем вот пример примитивной реализации достижение максимального параллелизма(даже естественный равен 1-е) например для задачи ускорения перекачки накопившейся очереди. Подумываю может сделать примочку реализующий правильный параллелизм для типовой транзакционной репликации? Но впрочем надо будет проверить, может в новых версиях все сделано правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 14:58 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
Добавлю от себя что правильно реализованная процедура сортировки и группировки в потоки ничтожно мала относительно самого времени применения изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 15:07 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
МуМу Берешь например 10 транзакций, объединяешь в одну. Потом сортируешь по признаку Table,UK,Version(TranId) , далее группируешь равномерно по потокам в таком порядке, главное что бы один UK со всеми версиями попадал в один поток гарантированно. И запускаешь в 10-и потоках. Одна транзакция вставила запись в мастер-таблицу. Вторая - ссылающуюся не неё деталь. Тебе потребуется много удачи чтобы не нарваться на FK violation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 15:52 |
|
||
|
Нужна(насколько?) ли для транзакционной репликации многопоточная загрузка данных?
|
|||
|---|---|---|---|
|
#18+
Я же написал , про то что данный вариант, самый простой и не предполагает транзакционную целостность до тех пор пока все потоки не выполнятся. Если нужна хронология, необходим вариант описанный ранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2019, 10:58 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39892323&tid=1686902]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 313ms |

| 0 / 0 |
