Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

ADO + большая транзакция   Найти похожие ветки 

 
Es   (2012-08-20 13:12) [0]

Сейчас вставлял через ADO большую порцию данных. Порядка 100к записей.

1) процесс начинает много жрать памяти, на мой взгляд это не я отжираю. Дошло до потребления 250 MB.

2) на этом этапе (см. пункт 1) отвалилось, EOleException с ошибкой "Неопознанная ошибка":
http://www.onlinedisk.ru/get_image.php?id=930182

Боюсь, наш любимый ADO не выдержал. Транзакция проводилась без промежуточных коммитов, собственно так и планируется.

Кто-нибудь с таким сталкивался, чего делать?
Или я как-то не так что делаю?


 
sniknik ©   (2012-08-20 14:57) [1]

> Или я как-то не так что делаю?
ставлю на это.


 
Savek   (2012-08-20 15:16) [2]

Я как-то тоже доигрался с ADO до того, что получил ошибку:
"Слишком сложный запрос!"


 
sniknik ©   (2012-08-20 15:27) [3]

при том, что запрос выполняется сервером, а не ADO, очень "в тему".

вот длинна, там да, ограничена. но там вроде другое сообщение.


 
картман ©   (2012-08-20 16:04) [4]


> вот длинна, там да, ограничена. но там вроде другое сообщение.

out of memory выелзало на файле ~200 МБ


 
QAZ   (2012-08-20 16:34) [5]


> чего делать?

ну логично предположить, что делать надо несколько раз малыми порциями


 
Anatoly Podgoretsky ©   (2012-08-20 16:41) [6]

Вставляет неизвестно куда, видимо в dbf


 
Es   (2012-08-20 17:04) [7]

sniknik, ты прав.

Делалось в рабочем проекте, нашелся наш глюк.
Всё ок, на самом деле память ADO по мере транзакции не отжирает, 100к влилось успешно. Ошибка возникала, судя по всему, из-за того, что ADO не выдержал сотню тысяч TAdoStoredProc


 
картман ©   (2012-08-20 17:13) [8]

почитаешь - жалко ADO становится, столько всего


 
sniknik ©   (2012-08-20 17:23) [9]

> сотню тысяч TAdoStoredProc
при том, что и это не ADO, а заглушка "от борланда" в мозг привыкшим к BDE...


 
sniknik ©   (2012-08-20 17:26) [10]

> память ADO по мере транзакции не отжирает, 100к влилось успешно.
при серверной транзакции зависит только от серверного же ограничения на "транзакшин лог" (если для mssql).


 
Es   (2012-08-20 17:44) [11]


> при том, что и это не ADO, а заглушка "от борланда" в мозг
> привыкшим к BDE.

а что лучше использовать для вызова хранимки в оракле?

Я честно говоря даже не знаю другого способа вызвать хранимку через ADO, кроме использования TADOStoredProc


 
DVM ©   (2012-08-20 17:53) [12]


> Es   (20.08.12 17:44) [11]


> Я честно говоря даже не знаю другого способа вызвать хранимку
> через ADO, кроме использования TADOStoredProc

А TAdoCommand не подойдет?

EXECUTE PROCEDURE MY_PROC(:PARAM1, PARAM2, ... PARAMN)


 
tesseract ©   (2012-08-20 17:58) [13]


> а что лучше использовать для вызова хранимки в оракле?


ODAC? Вообще хранимка вызывает через ODBC CALL.


 
sniknik ©   (2012-08-20 18:03) [14]

> А TAdoCommand не подойдет?

> EXECUTE PROCEDURE MY_PROC(:PARAM1, PARAM2, ... PARAMN)

или можно тип запроса на "процедуру" в компоненте (TAdoCommand/TAdoDataSet) поменять и будет 1 в 1 "аля TADOStoredProc", но без "навесок".


 
sniknik ©   (2012-08-20 18:06) [15]

+
но вообще, вот так явным EXECUTE PROCEDURE мне больше нравится, мне все явное больше нравиться, пусть иногда изза этого и больше писать приходится.


 
Es   (2012-08-20 18:24) [16]


> А TAdoCommand не подойдет?

ну что значит не подойдет...

sniknik объявил, что TAdoStoredProc это мол костыли и грабли для любителей BDE. Может быть...

Собственно, если грамотно задать вопрос... В чем, собственно, костыли и грабли TAdoStoredProc? Чем его использование неэффективно, неграмотно или нечто в таком духе?


 
Es   (2012-08-20 18:25) [17]


> ODAC?

имеется в виду в рамках ADO


 
sniknik ©   (2012-08-20 20:18) [18]

> sniknik объявил, что TAdoStoredProc это мол костыли и грабли для любителей BDE.
не ври, я такого не объявлял. а то, что борланд "под BDE/для BDE-истов" сделал парочку компонент, чтобы им бедняжкам не переучиваться, это факт (в справке 5й дельфи это английским по белому прописано, потом изъяли, видимо чтоб не смущать).


 
Sergey Masloff   (2012-08-20 21:58) [19]

Es   (20.08.12 18:24) [16]

>Собственно, если грамотно задать вопрос... В чем, собственно, костыли и >грабли TAdoStoredProc? Чем его использование неэффективно
В том что это обертка над TADOCommand ЕДИНСТВЕННОЕ назначение которой - сохранение совместимости классов с BDE. И вобщем-то дело нужное (было) для миграции старых проектов. Но как всякая заплатка сделана видимо на скорую руку. Как уже говорил не работал с ADO вообще но например аналогичная нашлепка TIBStoredProc точно также дико глючила при нормальной работе остальных компонент.
 А зачем использовать TxxxStoredProc в новых проектах (не в миграции со старых) я не понимаю


 
Dennis I. Komarov ©   (2012-08-20 22:17) [20]


>  А зачем использовать TxxxStoredProc в новых проектах (не
> в миграции со старых) я не понимаю

Очень просто: дословный перевод, говорит о работе с хранимками (таблицами, запросами)...


 
Sergey Masloff   (2012-08-20 22:24) [21]

Dennis I. Komarov ©   (20.08.12 22:17) [20]
И? продолжи мысль, так непонятно...


 
Dennis I. Komarov ©   (2012-08-20 22:43) [22]

человек, видит "заточенный" компонент... и на кой ему что-то другое?


 
sniknik ©   (2012-08-20 22:56) [23]

> и на кой ему что-то другое?
правильно, нафига? несмотря на то, что 10лет прошло как технология "загнулась", логика нового основана на других принципах, и т.д., но "знает" компонент, и нового учить не желает...

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


 
sniknik ©   (2012-08-20 22:58) [24]

> и нового учить не желает...
хотя... блин, какое новое? ADO в свою очередь уже устарел, стараниями мелкософта, но ведь его так и учат на основе совсем уж окаменевшего гуано.


 
картман ©   (2012-08-21 02:04) [25]


> ADO в свою очередь уже устарел

от-ж, блин! А что вместо?


 
Студент   (2012-08-21 05:32) [26]

А если что нибудь такое отправлять?
insert into tabl1(f1,f2,f3) values (1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)(1,2,3)


 
Студент   (2012-08-21 05:36) [27]

Студент   (21.08.12 05:32) [26]
В свое время такой вариант сильно помог, когда надо было быстро вставить 1 млн записей. База Firebird D7, думаю в Оракле тоже такое должно быть. Экспериментально выяснил что почему то 100 записей лучше всего влетает.


 
Студент   (2012-08-21 06:06) [28]

картман ©   (21.08.12 02:04) [25]
QtSQL! :-)


 
sniknik ©   (2012-08-21 08:02) [29]

> от-ж, блин! А что вместо?
NET, естественно... (естественно с точки зрения мелкософта). + была еще инфа, что он "возродит" (еще и не умер) ODBC.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.063 c
15-1341300187
brother
2012-07-03 11:23
2013.03.22
Амуниция Первой Мировой Войны


15-1339068423
Zheksonz
2012-06-07 15:27
2013.03.22
Синтаксис языка Си


2-1336127281
__QWERTY
2012-05-04 14:28
2013.03.22
как правильно очистить TList ы, чтобы не было утечек памяти


15-1342992635
Pavlik
2012-07-23 01:30
2013.03.22
Посоветуйте цену


15-1329209570
Димка На
2012-02-14 12:52
2013.03.22
Как сделать чтобы WinControl ловил mousemove за пределами себя.?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский