Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 использование ADO для Microsoft SQL Server  [new]
ADO
Guest
Необходимо выполнить закачку (или обновление) большого объема даных из *.db файлов в базу MS SQL используя только ADO компоненты. Так вот, скорость закачки очень низкая и еще снижается при закачки 30 тыс записей и более. Не подскажет ли кто-нибудь способ увеличить скорость закачки?
21 авг 03, 10:04    [308924]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Плюнуть на ADO и использовать DTS.
21 авг 03, 10:05    [308931]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
ADO
Guest
Этот способ в моей ситуации не приемлем. Нужно увеличить скорость прохода по таблице и скорость обновления записи.
21 авг 03, 10:55    [309054]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
Andrey Daeron
Member

Откуда: Киев
Сообщений: 1027
Еще можно посмотреть в сторону BULK INSERT, и утилиты bcp. Кроме того в 2000 сервере скорость DTS увеличилась где-то на порядок(десятичный :). Т.е. закачка из базы под управлением FOX ( db по-моему) увеличилась с 6-7часов до минут (15-20).
21 авг 03, 11:00    [309074]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Нужно увеличить скорость прохода по таблице и скорость обновления записи.
Тогда ставите несколько RAID-ов - RAID10 под данные, RAID1 под лог транзакций, RAID1 под tempdb.

А вообще позаписные подход к массовой заливке данных - это не лучший способ. Может быть лучше добавить все данные в пролмежуточную тблицу. А уже потом заниматься добавлением/изменением в главной таблице.
21 авг 03, 11:03    [309088]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
ADO
Guest
BULK INSERT, и утилиту bcp смотрел, но проблем в чем:
Есть клиентской программа и db (парадоксный файл), есть сервер и на нем БД (MSSQL). Нужно запустить клиентскую программу выполнить при помощи АДОшных компонент проход по парадоксному файлу и одновременно (позаписьно) выполнять обновление данных, удаление строки в БД (MSSQL) или добавление, т.е. импорт данных. Причем, перед каждым Postом необходимо вычислять значения некоторых полей (иногда сумасшедшими способами – это условие ОБЯЗАТЕЛЬНО). Ранее, это все было реализовано на BDEшных компонентах и БД InterBase – все работало довольно быстро, теперь нужно все сделать на ADO и MSSQL. Как еще можно увеличить скорость закачки?
21 авг 03, 11:21    [309144]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Может быть все таки разделить ПОДГОТОВКУ данных к импорту (пускай это делает ваше приложение) и собственно ИМПОРТ данных ???
21 авг 03, 11:28    [309173]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
Hibernate
Member

Откуда: Киев
Сообщений: 1670
в ADO есть UpdateBatch - если вы его не используете то он должен хоть как-то улучшить ситуацию.
21 авг 03, 12:22    [309367]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
aag
Member

Откуда: Москва
Сообщений: 1955
В таком случае, почему бы сначала не закачивать "грязные" данные на сервер (bcp, DTS) в буферную табл., а потом уже выполнять расчет/изменение и пр.? Причем пост-обработку можно делать и на самом сервере.
21 авг 03, 13:00    [309516]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
ADO
Guest
Может быть все таки разделить ПОДГОТОВКУ данных к импорту (пускай это делает ваше приложение) и собственно ИМПОРТ данных ???

Тогда не получиться вычислять значения некоторых полей (иногда сумасшедшими способами – это условие ОБЯЗАТЕЛЬНО!!! Именно средствами С++ или Delphi). А без этого такой импорт нам не нужен

В таком случае, почему бы сначала не закачивать "грязные" данные на сервер (bcp, DTS) в буферную табл., а потом уже выполнять расчет/изменение и пр.? Причем пост-обработку можно делать и на самом сервере.

Может так и лучше, но после закачки "грязных" данных на сервер в буферную таблицу, все равно придется проходить по записям средствами ADO... Опять же нет выигрыша в скорости...

в ADO есть UpdateBatch - если вы его не используете то он должен хоть как-то улучшить ситуацию.

Это мы уже пробовали. Ускорения нет :-(
21 авг 03, 14:41    [309789]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Тогда не получиться вычислять значения некоторых полей (иногда сумасшедшими способами – это условие ОБЯЗАТЕЛЬНО!!! Именно средствами С++ или Delphi). А без этого такой импорт нам не нужен

Что не получиться и что это за сумасшедшие расчеты, которые можно сделать тока на клиенте, а?

Может так и лучше, но после закачки "грязных" данных на сервер в буферную таблицу, все равно придется проходить по записям средствами ADO...

ADO то тут причем, все пишем на чистом TSQL.
21 авг 03, 14:51    [309815]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
Maks_M
Member

Откуда: Bratsk
Сообщений: 58
Интересно что за сумасшедшие вычисления которые можно реализовать только в Delphi(C++) и нельзя в SQL...
21 авг 03, 14:54    [309825]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
ADO
Guest
Maks_M, pkarklin вы хотите сказать, что язык SQL такой же мощный как Delphi(C++) и имеет те же возможности??? Полный вздор.

Но все равно, всем кто ответил огромное СПАСИБО!!!
22 авг 03, 12:10    [311247]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Не-е-е-е! Они хотят сказать, что TSQL достаточно мощный и многие весчи проще решать на нем, а не парится со всякого рода гемороями
22 авг 03, 12:20    [311268]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
- Чем не устраивает DTS?
При трансформации данных можно использовать для трансформации каждой (!) записи либо JS либо VB, а там никто не помешает использовать расчеты.

- Почему все же не перелить данные в "грязную" таблицу, а потом пройти по ней, выполняя расчеты?

Что с размерами базы даных, логом и т.п.?
22 авг 03, 12:39    [311333]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
LAlexV
Guest
ежели ты думаешь что SQL-а не хватит для твоих расчетов может поще extended procedure не той же делфе написать?
22 авг 03, 12:40    [311335]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 ADO

Основной принцип клиент\серверных СУБД - работать с данными там, где они находяться, а не тащить это все на клиента. Может быть вы все-таки раскажите нам, что у вас там за сумашедшие расчеты, а лучше кусок кода на Delphi приведите.
22 авг 03, 13:05    [311403]     Ответить | Цитировать Сообщить модератору
 Re: использование ADO для Microsoft SQL Server  [new]
ADO
Guest
После некоторых тестов пришел к выводу, что тормозит работа ADO именно с парадоксной таблицей. Поэтому создал новую тему: "Работа с парадокс через ADO компоненты". Предлагаю продолжить обсуждение там.
22 авг 03, 16:00    [311880]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить