![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему замедляется проход таблицы? [D7, IB6.x]
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?
попробуй зафитчить все записи, а потом делай проход.