Массированный перегон из txt в SQL
Модератор: kdv
Массированный перегон из txt в SQL
Есть много больших txt с разделителями...надо их все перегнать в SQL, 1-2 раза в день...2000000-3000000 записей...
IB6.5 Delphi 7. Написал прогу - скорость 350-400 строк в сек, одна строка - 200-230 символов. Тачка Cel2,26 512 Mb, и клиент и сервер на ней...
Часть 1. Интересны наиболее производительные варианты обработки.
Часть 2. При попытке реализации структуры:
form1.IBSQL1.SQL.Text:='insert into logs (id,...,...,...,...,...,...,...,...) values (:id,...,...,...,...,...,...,...,...)';
try
IBSQL1.Prepare;
IBSQL1.ExecQuery;
except
form1.IBTransaction1.Rollback;
end;
не может присвайвать id увеличившееся значение генератора, а значение генератора при этом нормально увеличивается...?
IB6.5 Delphi 7. Написал прогу - скорость 350-400 строк в сек, одна строка - 200-230 символов. Тачка Cel2,26 512 Mb, и клиент и сервер на ней...
Часть 1. Интересны наиболее производительные варианты обработки.
Часть 2. При попытке реализации структуры:
form1.IBSQL1.SQL.Text:='insert into logs (id,...,...,...,...,...,...,...,...) values (:id,...,...,...,...,...,...,...,...)';
try
IBSQL1.Prepare;
IBSQL1.ExecQuery;
except
form1.IBTransaction1.Rollback;
end;
не может присвайвать id увеличившееся значение генератора, а значение генератора при этом нормально увеличивается...?
скорость нормальная, и возможно предельная, если записи вставляешь пакетами в транзакции (а не по записи на транзакцию).
попробуй еще batch-компоненты (www.ibase.ru/devinfo/ibx.htm), может будет быстрее (хотя по идее быстрее всего external tables, если текстовые файлики можно закидывать на сервер).
насчет
www.ibase.ru/devinfo/generator.htm ?
попробуй еще batch-компоненты (www.ibase.ru/devinfo/ibx.htm), может будет быстрее (хотя по идее быстрее всего external tables, если текстовые файлики можно закидывать на сервер).
насчет
ничего не понятно. может, имеет смысл глянутьне может присвайвать id увеличившееся значение генератора, а значение генератора при этом нормально увеличивается...?
www.ibase.ru/devinfo/generator.htm ?
может как раз и с генератором...
Выявил след:
SET GENERATOR gen_logs_id TO 34;
запрос обрабатывается нормально
а вот этот всегда возвращает null
SELECT GEN_ID(gen_logs_id, 0) FROM logs;
В чем причина? Возможна ли связь с диалектом, версией или чем-то другим?
SET GENERATOR gen_logs_id TO 34;
запрос обрабатывается нормально
а вот этот всегда возвращает null
SELECT GEN_ID(gen_logs_id, 0) FROM logs;
В чем причина? Возможна ли связь с диалектом, версией или чем-то другим?
...догнал...надо было прописывать rdb$database вмето logs... хотя вроде не очень то и логично....ну да ладно....
Запустил я вообщем этот бред, все отработало. около 500 в сек в среднем...надо будет на серваках тестнуть....один как клиент - другой сервер. оба 2xXeon 3.2 по 8 гб DDR...интересно чем закончится...
гы
Запустил я вообщем этот бред, все отработало. около 500 в сек в среднем...надо будет на серваках тестнуть....один как клиент - другой сервер. оба 2xXeon 3.2 по 8 гб DDR...интересно чем закончится...

новые глюки...
Запускаю приложение. перегоняю 500000 записей из txt в sql. Сервак фиксирует в процессе 1 подключение к 1 базе...клиент отрабатывает, закрывается. Сервак соответственно обновляется до 0.0...
Дак вот если запустить еще раз этого клиента с любым файлом(даже только что проведенным), то по началу все ок, затем у сервака начинает лаинообразно увеличиваться кол-во подключений...из 1.1 от фиксирует 20.1...50.1...121.1...и т.д. клиент проводит последнюю запись из txt и намертво виснет....процесс увеличения подключений еще более ускоряется....в чем может быть беда???
Варианты с транзакциями пробовал от и до. Т.е. на 1 запись одна транзакция, вплоть до 1 транзакции на 5000 записей...откатов при этом нет...
P.S. перезагрузка клиента не спасает, перезагрузка сервака спасает. Если на серваке убить IB как процесс, или перезапустить сервак не помогает...
Дак вот если запустить еще раз этого клиента с любым файлом(даже только что проведенным), то по началу все ок, затем у сервака начинает лаинообразно увеличиваться кол-во подключений...из 1.1 от фиксирует 20.1...50.1...121.1...и т.д. клиент проводит последнюю запись из txt и намертво виснет....процесс увеличения подключений еще более ускоряется....в чем может быть беда???
Варианты с транзакциями пробовал от и до. Т.е. на 1 запись одна транзакция, вплоть до 1 транзакции на 5000 записей...откатов при этом нет...
P.S. перезагрузка клиента не спасает, перезагрузка сервака спасает. Если на серваке убить IB как процесс, или перезапустить сервак не помогает...
ошибка логики
мда...ты был прав...при определенных условия возникало безвариантное логическое условие, создававшее множественные подключения в разных потоках, поэтому и отловить немог. Перестроив логику проблему решил.