Текущий архив: 2005.02.13;
Скачать: CL | DM;
Вниз
Почему замедляется проход таблицы? Найти похожие ветки
← →
lam (2005-01-11 15:53) [0]Использую ADO. Нужно просто просто сделать проход таблицы. В таблице несколько сотен тысяч записей. первые несколько тысяч пролетают быстро, зато потом начинается замедление. Поставил опцию "проход только вперед" - не помогает. Подскажите, как бороться с данной ситуевиной?
← →
Соловьев © (2005-01-11 16:01) [1]а почему ADO?
почему не IBX?
попробуй зафитчить все записи, а потом делай проход.
← →
Sergey13 © (2005-01-11 16:02) [2]Что за проход?
← →
sniknik © (2005-01-11 16:09) [3]боротся надо радикально, откажись от "прохода" делай то же самое в запросе (на сервере).
если не брать так "круто" (а то еще юзер в обморок упадет, то что делалось часами будет делатся в минуты ;о), то просто поставь клиентский курсор, на выполнении запроса/передаче данных немного потеряеш зато "проход" будет "лётать". ;о)
(фетч даст немного меньше общую скорость, чем клиентский курсор)
← →
lam (2005-01-11 16:12) [4]Проход - перемещение от первой записи до последней. А через ADO просто по привычке. Попробовал зафетчить, эфект тотже - при проходе пытается открыть всю таблицу в память.
← →
Sergey13 © (2005-01-11 16:14) [5]2[4] lam (11.01.05 16:12)
>Попробовал зафетчить, эфект тотже - при проходе пытается открыть всю таблицу в память.
А ты чего ждал?
← →
lam (2005-01-11 16:16) [6]Юзер не упадет, он этого вообче видеть не будет. Цель прохода - перекачка данных с Firebird на MSSQL. Cредствами MSSQL не тянет. Пришлось писать прогу для перекачки, да вот затык, прога пытается открыть весь курсор у себя, нет чтоб забыть про уже перекаченные записи.
← →
sniknik © (2005-01-11 16:16) [7]> эфект тотже - при проходе пытается открыть всю таблицу в память.
а куда ему ее еще открывать? только в память, так устроено. не нравится сделай через BDE он временные таблицы создает, вместо рекордсета в памяти.
← →
sniknik © (2005-01-11 16:20) [8]> Cредствами MSSQL не тянет.
серьезно? а как делал? (я почему спрашиваю, пробовал както, так и не получилось чтобы "не тянуло", затянуло как миленькое и не подавилось... DTS - знаеш такие волшебные три буквы?)
← →
lam (2005-01-11 16:22) [9]Почему-то мне казалось что при включении проперти CursorType = ctOpenForwardOnly - при проходе таблицы, пройденные записи должны "теряться в небытье". Ну а если поставить MaxRecords все одно будет открывать всю таблицу?
← →
Соловьев © (2005-01-11 16:23) [10]Блин а попробовать IBX не судьба?
← →
lam (2005-01-11 16:25) [11]Я еще много каких волшебных букв знаю :). Через него и пробовал, может сервак слабенький, но на 150000 - 200000 перекаченных записей уже тормоза невероятные.
← →
Sergey13 © (2005-01-11 16:25) [12]2[10] Соловьев © (11.01.05 16:23)
ИМХО, при таком подходе, ничего не спасет.
← →
Соловьев © (2005-01-11 16:29) [13]Cредствами MSSQL не тянет.
OpenRowset пробовал?
← →
lam (2005-01-11 16:32) [14]Нет не пробовал. А какая разница, принцип наверняка тот-же, что и в DTS
← →
Соловьев © (2005-01-11 16:35) [15]Я правда с ФБ не качал, а качал из MySQL и Visual Fox - так просто летало при OpenRowset
← →
lam (2005-01-11 16:44) [16]Все спасибо, справился. Открыл через фибы, очень шустро сработало.
Кстати через DTS или через OpenRowset какой проваидер использовать.
← →
sniknik © (2005-01-11 16:49) [17]> 200000
ага, примерно столько и было, 173тыс. гдето 3 мин. вкачивал.
операция разовая? тогда какая разница?
нет? ну и делай тогда поблочно насколько памяти хватает и не тормозит...
с локальным курсором как? то же самое?
← →
Соловьев © (2005-01-11 16:49) [18]MSDASQL.1
← →
sniknik © (2005-01-11 16:50) [19]> Кстати через DTS или через OpenRowset какой проваидер использовать.
обана! а какой использовал?
← →
lam (2005-01-11 17:02) [20]Нашел в инете ZStyle для подключения к ФБ через ADO. Через него и подключался. Можа конечно он и тормозил.
← →
sniknik © (2005-01-11 17:18) [21]вот это вряд ли, я через него и побольше 200тыс открывал, и без тормозов при скане (клиентского/или "отфетченного" рекордсета)
но вот с DTS я использовал другой, "гимини" (не помню нормальное название), драйвер под ODBS. (он мне не понравился по какойто причине, не помню)
← →
msguns © (2005-01-11 17:22) [22]А все же интересно, почему же запросам нельзя, а только "по-пластунски" ?
← →
lam (2005-01-11 17:34) [23]Каким запросом?
← →
msguns © (2005-01-11 17:37) [24]SQL
← →
lam (2005-01-12 08:58) [25]Понятно что не в ФБР. Как с помощью запрса перекачать данные из базы данных Firebird в базу MSSQL?
← →
Соловьев © (2005-01-12 10:19) [26]Как с помощью запрса перекачать данные из базы данных Firebird в базу MSSQL?
[13]
← →
lam (2005-01-12 11:13) [27]Я добавил в MSSQL новый Linked Servers на базу Firebird. Как теперь его использовать в запросе, чей-то совсем запутался.
← →
Соловьев © (2005-01-12 11:16) [28]Как теперь его использовать в запросе, чей-то совсем запутался.
Набираешь в QueryAnalizer Openrowset и жми Shift+F1
← →
sniknik © (2005-01-12 11:33) [29]ты же говорил что пробовал...?
нда.
для начала проверь видит ли MSSQL таблици из этого линка (в энтерпрайз менеджере у линк сервера зайди в Tables, есть там что нибудь? или ошибка (помню не все провайдеры у меня подключались/получилось))
если таблицы там есть, то дальше элементарно, подключаешся к нужной MSSQL базе и делаеш запрос SELECT * INTO Table1 FROM IBLnk...Table1
все в общемто, скопировал. (проблемы будут с автоинкрементами, индексами. можно создать нужную таблицу с правильной структурой и делать тогда INSERT INTO Table1 SELECT * FROM IBLnk...Table1)
← →
sniknik © (2005-01-12 11:34) [30]Соловьев © (12.01.05 11:16) [28]
у него уже линк сервер есть... (если конечно не врет)
← →
lam (2005-01-12 11:42) [31]Не вру, не вру... :)
Я пробовал через Data Transformation Services - там запрос пишется только к Firebird. Я не знал как использовать фаирбердовский проваидер в запросах MSSQL. Тепереча докапался. Правда использую не OpenRowset, а OpenQuery.
← →
lam (2005-01-12 11:44) [32]Ладно, сильно не ругайтесь, я же не мастер :)
← →
lam (2005-01-12 12:25) [33]А вот может кто еще просветит, почему запрос
select *
into TabNew
from openquery(IBLink, "select * from TabSource")
через 7 минут работы возвращает ошибку:
OLE DB provider "IBOLE.Provider.v4" reported an error. The provider reported an unexpected catastrophic failure.
Это глюк ZStyle"а или можно книть настройки подергать?
← →
Соловьев © (2005-01-12 12:30) [34]А вставляет?
На какой записи глюк? может там проблема с датами, числами и т.п.?
← →
lam (2005-01-12 12:40) [35]Сейчас пробую отдельно по 100000 записей. Два прохода уже сделал вставляет нормально. А целиком - ошибка. Может у него лимит но кол-во записей?
← →
sniknik © (2005-01-12 13:04) [36]> Может у него лимит но кол-во записей?
возможно, и не только это. ведь ты пользуешся бесплатной версией драйвера или нет? (в бесплатной просто обязаны быть какието ограничения) но скорее впамяти рекордсет не помещается на и кешировании ошибка (возможно даже от виндов).
может именно поэтому я тогда делал на "гемини"? не помню, помню когда пробовал а штук 5-6 разных провайдеров тестил. вот нашол
LCPI - IBProvider/XTG Systems InterBase6 ODBC Driver for Win32/SIBPROvider 2 - Interbase OLE DB Provider/Gemini InterBase ODBC Driver
это то что прям счас под рукой было (осталось) поиши. почему на ZStyle вконце остановился? не знаю, устанавливается просто, все что мне нужно делает (больше чем для тестов не использую) видимых глюков/недостатков для моих задач не нашол (в остальных было чтото да не так).
← →
lam (2005-01-12 17:06) [37]Понятно. Ну ладно, по полтиннику копировать буду, так вроде без проблемм работает.
Страницы: 1 вся ветка
Текущий архив: 2005.02.13;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.026 c