Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Вниз

Как ускорить выгрузку!   Найти похожие ветки 

 
off   (2003-04-21 14:04) [0]

Добрый день мастера, сейчас занимаюсь переводом таблиц Paradox на 3-й диалект, т.е. в InterBase. И все было ничего, пока не добрался до больших таблиц. Пока перегонял таблички по 20-40 тыс. записей все происходило в течение считаных минут, а вот с 980 тыс. записей перегнать оказалось гораздо сложнее, вернее сказать, дольше. Проблема же состоит в перекачке таблицы из 3 млн. записей. Тут комп виснет окончательно и после трех часов напряженной работы сообщает, что системе не хватает ресурсов и гасит мою прогу. Для перекачки использую TTable (исходная таблица) IBDataSet (собственно куда перегоняем). Вопрос же остается прежним, что может ускорить перекачку данных?


 
Соловьев   (2003-04-21 14:06) [1]


> Для перекачки использую TTable (исходная таблица)

а частями нельзя?


 
Zacho   (2003-04-21 14:09) [2]

В IBDataSet поставь UniDirectional:=true или используй TIBSQL


 
off   (2003-04-21 14:50) [3]

> Zacho ©
UniDirectional:=true поставил, CachedUpdate и ForcedRefresh тоже поставил true, на всякий случай. Пробовал перегонять через IBTable, но результаты примерно аналогичные.


 
Соловьев   (2003-04-21 14:52) [4]

пакетами почему не хочешь? перегнал 10 000 - коммит, и так далее.
очисть ресурсы.


 
off   (2003-04-21 14:53) [5]


> Соловьев ©


> а частями нельзя?

Можно и частями, только думаю начальство будет не в восторге, да и выгоды практически никакой кроме того, что прога виснуть не будет. Ну так это не главное.


 
Соловьев   (2003-04-21 14:54) [6]


> никакой кроме того, что прога виснуть не будет

я думаю это самое главное - убрать лучше глюк чем со свистом ганять воздух...


 
off   (2003-04-21 15:06) [7]

Может, я сейчас глупость спрошу и мне будет стыдно, но все же
> используй TIBSQL
, а как?


 
Mike Kouzmine   (2003-04-21 15:20) [8]

А DataPump не пробовал?


 
Zacho   (2003-04-21 16:14) [9]


> off © (21.04.03 15:06)

Например, так:
Пусть есть таблица MY_TABLE с полями ID,NAME.
Соответственно, есть TTable для этой таблице в парадоксе.
Берем TIBSQL. В св-ве SQL пишем INSERT INTO MY_TABLE (ID,NAME) VALUES (:ID,:NAME)
Потом:
Table.First;
while not Table.Eof do
begin
IBSQL.ParamByName("ID").Value:=Table.FieldByName("ID").Value;
IBSQL.ParamByName("NAME").Value:=Table.FieldByName("NAME").Value;
IBSQL.ExecQuery;
Table.Next;
end;
А CachedUpdates и Refresh тебе вообще не нужны


 
NickBat   (2003-04-21 17:15) [10]

Вариант предложенный Zacho © (21.04.03 16:14), на мой взгляд медленный.
Как-то у меня возникла задача перегнать данные из dBase в Firebird. Метод перебора оказался медленнее, причем гораздо, чем сброс данных во внешний файл со скриптом, а затем обработка этого скрипта IBExpert.
Однако объемы у меня были гораздо меньше 3 млн. записей.

Судя по всему работа разовая, и главное тут качество. Так что слушайся Соловьева.


 
Виталий Панасенко   (2003-04-21 17:19) [11]

Ресурсов тебе,кажись, не хватает из-за CashUpdate=True Ведь это что-то где-то в ОЗУ находится ...


 
off   (2003-04-22 08:26) [12]


> Zacho ©


> А CachedUpdates и Refresh тебе вообще не нужны

Я бы согласился, если бы не результаты тестирования перекачки таблицы из 40 тыс. записей следующие:

CachedUpdates:=true - 0:00:56
CachedUpdates:=false - 0:01:39

На мой взгляд преимущество очевидно.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-34417
dinamyc
2003-04-28 14:47
2003.05.12
перевод


1-34429
Alik
2003-04-28 14:01
2003.05.12
Отмена завершения программы.


14-34590
Evgeny
2003-04-24 08:58
2003.05.12
Справочная система Delphi


3-34377
supersan
2003-04-21 16:40
2003.05.12
Получение значения поля только что вставляемой записи


1-34413
sndanil
2003-04-30 13:06
2003.05.12
Cокрытие MDIChild формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский