|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
Добрый день! Копирую таблицу из SQL Server в PostgreSQL порциями в несколько потоков, C+SQL. Каждый поток выполняет в цикле получение границ новой порции и копирование данных порции в таблицу-приемник. Данные в таблице-источнике модифицируются в процессе, заблокировать таблицу нельзя. Не устраивает производительность этого процесса, но другой алгоритм придумать пока не получается. Как бы вы это делали? Возможно, есть литература/статьи в тему? Открытые реализации, в которых можно подсмотреть? Возможно, есть какие-то встроенные в СУБД средства? Любая информация может помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 13:10 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82, как именно вы производите копирование? Имеется ввиду чтение с постгресса и вставку на MSSQLSERVER? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 13:16 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
MS SQL поддерживает подключение к базам PostgreSQL. Так и ищем: "Подключение к источнику данных PostgreSQL" в документации к SQL Server. Так же есть интеграционные средства, например, сходу нашёл на хабре описание настройки TDS FDW. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 13:18 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82 Добрый день! Копирую таблицу из SQL Server в PostgreSQL порциями в несколько потоков, C+SQL. Каждый поток выполняет в цикле получение границ новой порции и копирование данных порции в таблицу-приемник. Данные в таблице-источнике модифицируются в процессе, заблокировать таблицу нельзя. посмотрите ответ https://www.sqlservercentral.com/forums/topic/replicating-data-from-ms-sql-server-2012-to-postgresql судя по описанию ваших данных (обновление данных, добавление новых) я бы попробовал репликацию. какой размер таблицы-источника? какая частота обновления требуется на приемнике? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 13:42 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82, "копирование данных порции в таблицу-приемник" смысла нет делать в несколько потоков, так как вставка выполняется в один поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 14:08 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82 Добрый день! Копирую таблицу из SQL Server в PostgreSQL порциями в несколько потоков, C+SQL. Каждый поток выполняет в цикле получение границ новой порции и копирование данных порции в таблицу-приемник. Данные в таблице-источнике модифицируются в процессе, заблокировать таблицу нельзя. Не устраивает производительность этого процесса, но другой алгоритм придумать пока не получается. Как бы вы это делали? Возможно, есть литература/статьи в тему? Открытые реализации, в которых можно подсмотреть? Возможно, есть какие-то встроенные в СУБД средства? Любая информация может помочь. Начните с того, что определите какая часть вашей "качайки" тормозит. Если запросы к таблице в SQL Server, то описывайте DDL+DML в посте - местное население подскажет что править: руки, гены или код. Если тормоза на вставке в PostgreSQL, то, наверное, имеет смысл обратиться в соответствующий раздел форума ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 14:57 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
Владислав Колосов warren82, "копирование данных порции в таблицу-приемник" смысла нет делать в несколько потоков, так как вставка выполняется в один поток. Да щас, конечно. С чего вы взяли, что у них вставка в таблицу с автоинкрементным ключом, на котором OPTIMIZE_FOR_SEQUENTIAL_KEY off? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 15:46 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
uaggster, с чего Вы взяли, что постгресс вставляет в несколько потоков? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 16:32 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
uaggster, Наоборот, чтение с SQL Server, запись в PostgreSQL, но не суть. Данные получаю через SELECT, вставляю через COPY. Или вы про интерфесы, через которые работаю с СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 16:35 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
Агрох, Спасибо, попробую порыться в исходниках. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 16:35 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
komrad, У меня задача ускорить копирование первоначальных данных, а не изменений. Не нашел, как в CDC сделать первоначальный снимок таблицы, который можно перетащить на другую СУБД? Таблица может быть большая (миллиарды записей). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 16:41 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
Владислав Колосов uaggster, с чего Вы взяли, что постгресс вставляет в несколько потоков? А, пардон. Думал, что он читает с постргресса, и вставляет на MSSQLSERVER. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 16:50 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82, если не постгрессе нет секционирования, то придется сделать загрузку в несколько таблиц при параллельном выполнении. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 16:52 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82, для быстрой заливки данных рсубд в принципе везде одинаковые рекомендации - на получателе выпилить все ключи, ограничения, индексы, триггеры. если есть возможность включить опцию типа delayed durability в SQL Server (в pg такое есть. это развлечения со стороны одминов) в copy для pg вроде была опция загрузки данных из бинарного вида. обещали что мол быстрее,чем текст. правда бинарный вид - отдельная история, как отдельная история и то, что он запросто может поменяться в следующей версии. были в pg еще какие-то средства оффлайн-загрузки данных, но хз подойдут тут или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 17:18 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82 Агрох, Спасибо, попробую порыться в исходниках. В "исходниках" чего вы собрались "порыться"? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 17:24 |
|
Копирование таблицы из одной СУБД в другую
|
|||
---|---|---|---|
#18+
warren82 komrad, У меня задача ускорить копирование первоначальных данных, а не изменений . Не нашел, как в CDC сделать первоначальный снимок таблицы, который можно перетащить на другую СУБД? Таблица может быть большая (миллиарды записей). т.е. предположим вы умеете копироваь первоначальные данные, а изменения вас не колебают? Я когда-то делал приблизительно так: рабочая таблица, в ней флажки, приложение читает от флажка до флажка порцию и пишет куда-то, при изменении (вставке, апдейте, удалении) флажки изменяются, все работает через брокер. Переносимые данные должны быть "идемпотентны". Да, предположим, пьяный администратор рестартонул сервер, вырубилось электричество и т.д., все должно продолжить работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 17:30 |
|
|
start [/forum/topic.php?fid=46&fpage=9&tid=1684100]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 229ms |
total: | 358ms |
0 / 0 |