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) размер базы на диске не уминшаетсья....почему и как это исправить..???
Зарание благодарен!!!!!!!!


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


> Digitman ©   (20.05.04 16:36) [14]

Даже если выбросить операцию с текстовым файлом, то 600 тыс записей при 13 varchar полях ну никак за одну минуту не пройдут.
Это значит скорость вставки д.б. 10000 записей/сек.
При двух-трех полях в базе такая скорость еще возможна, но не более. Да и то если база локальная, а по сети еще медленнее.


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


> говорю, чтобы быстрее было, запрос с параметрами делать
> надо:
> insert into table1(Name1,Name2,Name3) values(:Name1,:Name2,:Name3)
> - фирштейн ?
> Однако это такого уж значительного ускорения не даст.

Это с какого перепугу, интересно?


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


> полностью перегонка даных происходит гдето за 10мин.

Делать коммиты каждые 5-10 тыс записей.


Digitman   (2004-05-20 16:36:00) [24]


> 1.Считал строку из файла
> 2.Разбил на части и просвоил переменным


вот здесь и есть "засада" :

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

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


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


> pok   (20.05.04 16:27) [11]
> Всего 14 полей
> 13 - Varchar
> 1- Longint

Батенька, не надо лапшу людям вешать по поводу одной минуты.
10 минут для такого объема данных - это нормально.


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

А если сначала все данные из таблицы единым скриптом оформить, а потом его разом залить?


pok   (2004-05-20 16:27:00) [27]

Всего 14 полей
13 - Varchar
1- Longint


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


> pok   (20.05.04 16:22) [8]

говорю, чтобы быстрее было, запрос с параметрами делать надо:
insert into table1(Name1,Name2,Name3) values(:Name1,:Name2,:Name3) - фирштейн ?
Однако это такого уж значительного ускорения не даст.
Сколько полей в таблице и каких типов ?


pok   (2004-05-20 16:26:00) [29]

1.Считал строку из файла
2.Разбил на части и просвоил переменным
3.Сформировал запрос
4.Виполнил запрос

и с DBF и с Interbase  процедура считования одна и та же..


pok   (2004-05-20 16:22:00) [30]

Запрос
insert into table1(Name1,Name2,Name3) values('XXX','ZZZ','YYY')


Digitman   (2004-05-20 16:21:00) [31]

если такая разница во времени, то значит ты криво или неоптимально считываешь данные из текст.файла, прежде чем вставить их

ты поди в стринг-лист записи грузишь при считывании ?


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


> pok   (20.05.04 16:19) [5]

сами запросы как формируешь, с параметрами или как ?


pok   (2004-05-20 16:19:00) [33]

Транзакция один раз в конце..


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


> pok   (20.05.04 16:12) [2]
> Пробовал с DBF...время гдето около 1 мин.

С большим трудом верится.

С транзакциями как работаешь ? подтверждаешь после каждого insert или один раз в конце ?


Desdechado   (2004-05-20 16:15:00) [35]

в одной транзакции, возможно, будет быстрее

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


pok   (2004-05-20 16:12:00) [36]

Пробовал с DBF...время гдето около 1 мин.


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


> полностью перегонка даных происходит гдето за 10мин.
> как можна прискорить этот процес...

Ну вобще-то очень даже нормальное время, сомневаюсь что удастся существенно ускорить.
Общие рекомендации такие: отключить все индексы в таблице, использовать запрос с параметрами.

> и ещо одно, после того как я удаляю все записи з бази (delete
> from table1) размер базы на диске не уминшаетсья....почему
>

Backup/Restore
Читай статьи на ibase.ru там все про это написано


Страницы:   1 2

Наверх

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