Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Interbase .... уходит слишком много времени... [D7, IB6.x]


Страницы:   1 2

pok ©   (2004-05-20 16:06:00) 

Доброе время суток  уважаемые мастера!
У меня такой вопрос..
Я загружаю даные из текстового файла в котором 600тыс. записей  в таблицу INTERBASE используя компненты IBX.
Добавление новых записей происходит с помощью компонента IBQuery
и insert into.....values...
полностью перегонка даных происходит гдето за 10мин.
как можна прискорить этот процес...
и ещо одно, после того как я удаляю все записи з бази (delete from table1) размер базы на диске не уминшаетсья....почему и как это исправить..???
Зарание благодарен!!!!!!!!


Rule   (2004-05-21 10:38:00) [1]

и я согласен с тем что 10 минут это номрально, скорость света не переплюнешь :(
может мне мало тактовой частоты процессора в 10 Гигагерц, и меня не волнует что природно больше не возможно сделать, так что теперь ?


Соловьев   (2004-05-21 10:21:00) [2]


> [35] Tomkat   (21.05.04 10:19)

так пусть уж пишет сразу туда куда надо :) зачем лишнее звено? :)


Tomkat   (2004-05-21 10:19:00) [3]

а по-моему, нада копать в др. сторону : пусть АТС пишет не в текстовый файл, а во что-то, что похоже на БД...как и во что - это уже домыслить нада ....у нас станция пишет в Paradox и ниче ...


Vlad   (2004-05-21 09:44:00) [4]


> Digitman ©   (21.05.04 08:08) [33]
> использование доп.потоков никак не влияет на конечную производительность

Сомнительное утверждение, тем более что опровергнутое практикой
(если конечно под конечной производительностью понимается скорость добавления записей в базу)


Digitman   (2004-05-21 08:08:00) [5]

использование доп.потоков никак не влияет на конечную производительность


Mike Kouzmine   (2004-05-20 23:57:00) [6]

За 1 минуту с разбором строк из текстового файла - может быть, но верится с трудом. 10 минут для перегона 600000 вполне приемлимое время. Тем более раз в 2 часа. Еще времени останеться чтобы чай попить.


Курдль   (2004-05-20 23:22:00) [7]

А если написать процедурину, принимающую параметрами эти самые 14 полей без лишнего текста, то можно уменьшить сетевой трафик в несколько раз.


jack128   (2004-05-20 18:55:00) [8]

Еще раз внемательно перечитал ветку :-) Но так и не увидел коментарий автора на реплику Digitmen'a. Какое соотношение по времени на парсинг текст файла и вставки данных в базу. Что оптимизируем то???

> Но я не знаю как IB ведет себя в потоках
я то же. Поэтому предложил очевидный вариант. В принципе при удачном стечении обстоятельств все это можно закинуть в базу за 1 сек при помощи внешних файлов.


Vlad   (2004-05-20 18:51:00) [9]


> jack128 ©   (20.05.04 18:47) [28]

Нет, почему же, с несколькими потоками можно очень даже существенно увеличить скорость, говорю же, я на Оракле именно так и делал. Но я не знаю как IB ведет себя в потоках


jack128   (2004-05-20 18:47:00) [10]

вообще мое имхо, чтот существенноты скорость закачки данных в базу не увеличишь. Разве, что покопать в сторону external files, возможно решение здесь...


Vlad   (2004-05-20 18:41:00) [11]


> pok   (20.05.04 18:24) [26]

Ну не получится у тебя быстро загнать 600 тыс. записей в таблицу с 13 varchar полями !

Хотя есть впринципе мысль.
Что если разбить твой текстовый файл к примеру на 5 частей, затем создать 5 потоков (TThread), которые одновременно будут писать в базу ? Я просто не знаю как IB работает в потоках, но например в Оракле я такую штуку делал, скорость перекачки взлетала раз в 5


pok   (2004-05-20 18:24:00) [12]

Задача это такая....есть цыфровая междугородняя станция которая создаёт текстовий файл с информацией о разговорах....перекачка файла на ПК происходит каждых 2 часа и занимает где то 15мин. после этого нужно этот файл загнать в базу проанализировать, распечатать и зделать архивную копию...
все это уже работает в тестовом режыме но все равно слишком много
времени уходит на перегонку базы....


Vlad   (2004-05-20 17:24:00) [13]


> Курдль ©   (20.05.04 16:58) [21]

Неоптимально делаешь, видишь как jack128 быстро посчитал :)


jack128   (2004-05-20 17:18:00) [14]


> Кем это, интересно, рекомендуется? Лучшими собаководами?
эти рекомендации давались разработчиками IB.


> Я проверил у меня в 2-х СУБД заливка скрипта 20 000 строк
> (это, конечно, не 600 000) записей в 4 разные таблицы последовательно
> (банки со всеми их адресами, счетами и телефонами) промелькивают
> за 30 секунд. Коммит в конце.

600000/20000 * 30 = 900 сек = 15 минут, а автор это за минут умудряется сделать ;-)

А вот можно такой вопрос, что за задача такая? Все таки, думаю, такие объемы не каждый день гоняются, народу что, лень 10 минут перекурить? ;-)


Johnmen   (2004-05-20 17:07:00) [15]

>Курдль ©   (20.05.04 16:58) [21]

См. тип СУБД в вопросе автора. Речь не о сабаках по-моему...
Проверять можешь хоть на Informix, хоть на Revelation, хоть на кошках.


Digitman   (2004-05-20 17:06:00) [16]


> Vlad ©   (20.05.04 16:45) [17]
>  
> Даже если выбросить операцию с текстовым файлом, то 600
> тыс записей при 13 varchar полях ну никак за одну минуту
> не пройдут.


да хоть за полчаса ! не столь это важно здесь ..

я не об этом, а об относительной разнице во времени в случае с упомянутыми источниками данных


Курдль   (2004-05-20 16:58:00) [17]


> Johnmen ©   (20.05.04 16:52) [20]
> При массовой вставке коммиты, насколько помню, рекомендуется
> делать через каждые ~500 записей.

Кем это, интересно, рекомендуется? Лучшими собаководами?
Я проверил у меня в 2-х СУБД заливка скрипта 20 000 строк (это, конечно, не 600 000) записей в 4 разные таблицы последовательно (банки со всеми их адресами, счетами и телефонами) промелькивают за 30 секунд. Коммит в конце.


Johnmen   (2004-05-20 16:52:00) [18]

При массовой вставке коммиты, насколько помню, рекомендуется делать через каждые ~500 записей.


Соловьев   (2004-05-20 16:51:00) [19]

Быстрее всего работать будет, если создать скрипт написать через каждые 5-10 тыс commit и послать его на ibsql.exe


Vlad   (2004-05-20 16:49:00) [20]


> Курдль ©   (20.05.04 16:44) [16]
> Это с какого перепугу, интересно?

Пугается она параметров. И с перепугу быстрее работает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо