powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конвертирование БД1 -> БД2
6 сообщений из 6, страница 1 из 1
Конвертирование БД1 -> БД2
    #32006144
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Конвертирование импортируемых в БД данных происходит слишком медленно.
Количество первичных таблиц (CSV), откуда я беру данные - 7 шт. Кол-во записей: 51125/79380/370 и по мелочи.
Количество конечных таблиц, куда я должен засунуть данные - 14 шт.

После того, как я понял, что курсоры - это полная лажа, я стал использовать скрипт с предложениями групповой выборки INSERT и UPDATE, добавления и изменения данных. Пришлось использовать порядка 10 временных таблиц.

Сейчас приблема состоит в том, что запросы - со сложными условиями, и, хотя план выполнения приемлемый, то на определенном этапе транзакции процесс
замирает... насколько даже не знаю, больше 20 мин я не ждал.

В связи с этим у меня 2 вопроса:
1. почему внутри транзакции процесс "замирает"?
2. Организовать импорт по-другому - есть несколько вариантов:
- использовать некий алгоритм (на друком языке) непосредственно при импорте данных, что мне не совсем понятно, как;
- есть еще интересный вариант, который я хотел бы попробовать: это использование триггера, который будет срабатывать при добавлении импортируемых данных в предварительные таблицы.

Но я хотел бы поговорить с кем-нибудь перед тем, как пробовать, т. к. время поджимает.
...
Рейтинг: 0 / 0
Конвертирование БД1 -> БД2
    #32006146
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял что такое первичные таблицы, а что такое конечные, да и вобще не понял задачи
С таким количеством записей, запросы не должны так долго выполняться, deadlock-и проверяли?
...
Рейтинг: 0 / 0
Конвертирование БД1 -> БД2
    #32006160
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первичные таблицы - те, откуда импортируются данные. Конечные - куда они импортируются.
Задача: Книги из разных агенств собираю в одной БД.
Прежде чем добавлять информацию какого-либо агенства, я ее импортирую в специально отведенную для этого агенства отдельную БД, после чего переношу их в главную БД.
Dealock'ов не было.

Вопрос:
1. почему внутри транзакции запросы выполняются медленнее, чем тогда, когда не открываешь транзакцию? Может отчасти в этом кроется ответ на то, что выполнение скрипта замедляется по мере его выполнения?
2. можно ли и целесообразно ли пользоваться задачей импорта/экспорта в EM и можно ли там использовать временные таблицы?
...
Рейтинг: 0 / 0
Конвертирование БД1 -> БД2
    #32006166
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не пробовали, вместо импортирования в специальные БД, просто написать DTS пакет, который писал бы данные сразу в соновную, с его помощью много чего делать можно.
...
Рейтинг: 0 / 0
Конвертирование БД1 -> БД2
    #32006173
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Genady: Спасибо! Сейчас буду пробовать.
Скажите, а при выполнении DTS пакета ведутся логи? Если нет - то это ускорит процесс.
И что с его помощью можно еще сделать? В скорости я выиграю?

2All: тут в форуме прочитал, что в SQL2000 есть возможность создавать врем. таблицы, которые будут находиться в RAM. Так ли это?
...
Рейтинг: 0 / 0
Конвертирование БД1 -> БД2
    #32006178
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Скажите, а при выполнении DTS пакета ведутся логи? Если нет - то это ускорит процесс.

Какие логи? Делаются ли записи в журнале транзакций? Думаю да, насколько я знаю вжурнале транзакций не отражаются операции bulk copy. Выиграете ли Вы в скорости не знаю, описывать все возможности DTS лень, много их, да я и не все знаю, потому что практически им не пользуюсь.

>тут в форуме прочитал, что в SQL2000 есть возможность создавать врем. таблицы, которые будут находиться в RAM. Так ли это?
временные таблицы вне зависимости от версии сервера создаются в базе tempdb, после чего таблица размещается в буфере, т. е в RAM, в SQL 2000 еще есть переменная типа table вероятно она сразу размещается в памяти, но конечно, если ворочается много данных, понятно что без дисковых операций не обойдется
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конвертирование БД1 -> БД2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]