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

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

Почему замедляется проход таблицы? [D7, IB6.x]


Страницы:   1 2

lam ©   (2005-01-11 15:53:00) 

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


sniknik   (2005-01-11 16:49:00) [21]

> 200000
ага, примерно столько и было, 173тыс. гдето 3 мин. вкачивал.

операция разовая? тогда какая разница?
нет? ну и делай тогда поблочно насколько памяти хватает и не тормозит...

с локальным курсором как? то же самое?


lam   (2005-01-11 16:44:00) [22]

Все спасибо, справился. Открыл через фибы, очень шустро сработало.
Кстати через DTS или через OpenRowset какой проваидер использовать.


Соловьев   (2005-01-11 16:35:00) [23]

Я правда с ФБ не качал, а качал из MySQL и Visual Fox - так просто летало при OpenRowset


lam   (2005-01-11 16:32:00) [24]

Нет не пробовал. А какая разница, принцип наверняка тот-же, что и в DTS


Соловьев   (2005-01-11 16:29:00) [25]

Cредствами MSSQL не тянет.
OpenRowset пробовал?


Sergey13   (2005-01-11 16:25:00) [26]

2[10] Соловьев ©   (11.01.05 16:23)
ИМХО, при таком подходе, ничего не спасет.


lam   (2005-01-11 16:25:00) [27]

Я еще много каких волшебных букв знаю :). Через него и пробовал, может сервак слабенький, но на 150000 - 200000 перекаченных записей уже тормоза невероятные.


Соловьев   (2005-01-11 16:23:00) [28]

Блин а попробовать IBX не судьба?


lam   (2005-01-11 16:22:00) [29]

Почему-то мне казалось что при включении проперти CursorType = ctOpenForwardOnly - при проходе таблицы, пройденные записи должны "теряться в небытье". Ну а если поставить MaxRecords все одно будет открывать всю таблицу?


sniknik   (2005-01-11 16:20:00) [30]

> Cредствами MSSQL не тянет.
серьезно? а как делал? (я почему спрашиваю, пробовал както, так и не получилось чтобы "не тянуло", затянуло как миленькое и не подавилось... DTS - знаеш такие волшебные три буквы?)


sniknik   (2005-01-11 16:16:00) [31]

> эфект тотже - при проходе пытается открыть всю таблицу в память.
а куда ему ее еще открывать? только в память, так устроено. не нравится сделай через BDE он временные таблицы создает, вместо рекордсета в памяти.


lam   (2005-01-11 16:16:00) [32]

Юзер не упадет, он этого вообче видеть не будет. Цель прохода - перекачка данных с Firebird на MSSQL. Cредствами MSSQL не тянет. Пришлось писать прогу для перекачки, да вот затык, прога пытается открыть весь курсор у себя, нет чтоб забыть про уже перекаченные записи.


Sergey13   (2005-01-11 16:14:00) [33]

2[4] lam   (11.01.05 16:12)
>Попробовал зафетчить, эфект тотже - при проходе пытается открыть всю таблицу в память.
А ты чего ждал?


lam   (2005-01-11 16:12:00) [34]

Проход - перемещение от первой записи до последней. А через ADO просто по привычке. Попробовал зафетчить, эфект тотже - при проходе пытается открыть всю таблицу в память.


sniknik   (2005-01-11 16:09:00) [35]

боротся надо радикально, откажись от "прохода" делай то же самое в запросе (на сервере).

если не брать так "круто" (а то еще юзер в обморок упадет, то что делалось часами будет делатся в минуты ;о), то просто поставь клиентский курсор, на выполнении запроса/передаче данных немного потеряеш зато "проход" будет "лётать". ;о)
(фетч даст немного меньше общую скорость, чем клиентский курсор)


Sergey13   (2005-01-11 16:02:00) [36]

Что за проход?


Соловьев   (2005-01-11 16:01:00) [37]

а почему ADO?
почему не IBX?
попробуй зафитчить все записи, а потом делай проход.


Страницы:   1 2

Наверх

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