|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
JDBC: эфективная выборка данных12.09.2013, 18:14. Показов 2642. Ответов 11
Метки нет (Все метки)
Необходимо получить много данных (миллионы строк) из субд оракл через jdbc. Как бы это сделать эфективно? Вызовы у ResultSet getObject миллион * кол-во столбцов это будет явно не эфективно
![]() Заметил метод getArray но что-то jdbc оракла которая мне доступна для использования сказала что не умеет она массивы получать. Тоесть что получаеться что не смогу я получить пачкой данные ?
0
|
|
| 12.09.2013, 18:14 | |
|
Ответы с готовыми решениями:
11
JDBC + SQLite вывод данных по запросу Выборка данных из нескольких таблиц. Аналитическая выборка данных |
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 17.09.2013, 00:25 [ТС] | ||
![]() На самом деле я уже делал такое (не CLOB, а просто доставал данные выливая их напрямую по столбцово в массивы, а потом передавал в java), когда данных под 1 млн то с памятью выделенной под джаву становиться туго ... в общем если в двух словах то оно замедляется когда приличных таких записей под 1млн за раз надо хранить как Object[][] и обрабатывать. На самом деле встретил пока что другую проблему: на сервере то java 1.4, а это значит что я могу использовать только sybase jdbc драйвера версии 2, которые, как оказалось, совсем плохого качества. Например пока я сливаю данные на 3 поля то всё хорошо, а когда взял реальные данные с 17 полями так они слились (драйвера слились) и не смогли пачками по 1000 работать, пришлось уменьшать пачку до 100 записей, более того они работают быстрее с пачкой на 50, а не на 100 (вообще не понял почему так получается что два batchExecute по 50 выполняются быстрее чем один когда в пачке уже 100 записей), а переливать пару миллионов данных с размером пачки 50 записей это будет приличная нагрузка на сервер с сайбейсом. Ещё иногда драйвера берут и внезапно сливаются и начинают недосылать данные, например запись 600 байт, а они присылают 33, сервер выбрасывает тут же эксепшн "то что обещали != тому что прислали по размерам, вероятно несколько потоков пытаються слать данные", но я то знаю что поток один, я ведь ещё даже на классику producer-consumer не разбивал свой мини проект ![]() В общем разочаровался я в sybase, а заодно разочаровался в тех админах что поставили java 1.4 так как в системе то я поставил уже в path java 1.6 для всех пользователей, но применится она по ходу для оракла это только после перезагрузки сервера. Добавлено через 1 минуту В общем можно считать пока тему не актуально пока не получу на сервере java 1.6, тогда попробую применять bcp через sybase драйвера версии 6, те более низкоуровневые операции с данными должны позволить и нормальную пачку запихивать и к тому же быстрее раза в два будет работать. Добавлено через 1 минуту KuKu, кстати уже игрался при выборке, но у меня слабое место в итоге insert на sybase ase где особо пачку большую не поставишь. К слову узнал что если меняешь fetchSize то неявный курсор переходит из read only forward (по умолчанию) в update forward + backward что по началу только замедляет если просто только поменять fetch size
0
|
||
|
|
|||
| 17.09.2013, 01:10 | |||
|
хотите много объектов в памяти, делайте мап редюс по кластеру если у вас sybase тормозит, то чего вы ждёте от оракла ) ему ещё больше места надо для счастья, а уже тулить в него яву под которую он не пилился это вообще ССЗБ, только проблем поиметь потом ) хотите относительно шуструю базу на слабых ресурсах - смотрите на постгрик
1
|
|||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 17.09.2013, 08:22 [ТС] | ||
|
mutagen, да вот оказалось что оракл вызывает таки java что в системе, а в системе 1.4, потому что с ним в папке 1.5. В общем-то все проблемы и начались из-за этого, код то я выполняю из оракла а он по ходу тупо запускает через java ... и натыкается на прописанную в системе на момент его запуска 1.4, если бы у меня на серевере просто было моё java приложение то я уже давно бы папкой под него 1.6 подсунул и горя бы не знал.
0
|
||
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
||
| 17.09.2013, 11:41 | ||
|
Если надо пергонять данные из оракл в sybase, то на кой тут вообще java. Используйте dblink оракла.
What is a Java Stored Procedure/ Trigger? A Java Stored Procedure is a procedure coded in Java (as opposed to PL/SQL) and stored in the Oracle database. Java Stored procedures are executed by the database JVM in database memory space.
1
|
||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||
| 17.09.2013, 22:02 [ТС] | ||||
Сейчас я конечно java для пользователей в системе переопределил, но я не могу перезагрузить сервер чтобы проверить подтянулись ли настройки и для оракла или нет.Добавлено через 2 минуты Кстати сравнивал сегодня sybcon 2,3,4 и последней 6ой версии и пришёл к выводам что на java 1.4 для которой есть только первые версии драйверов sybase далеко не уедешь так как insert 10к записей на них 20с, а на последнем sybcon драйвере 2 секунды. Так что тут явно надо либо устанавливать java потом и на боевых серверах чтобы была 1.6 либо забить на эту идею с вызовом java из под оракла для переливки данных.
0
|
||||
|
|
|||
| 17.09.2013, 22:23 | |||
) запускаете из под несконфигурированного шелла (а возможно ещё и из под рута или левого юзера), вот он и хапает дефолтные системные энвайрыпора уже осознать что *nix системы, а тем более java под ними это вам не винда требующая перезагрузки при смене коврика ) скачайте виртуал бокс образ Oracle Developer Day с сайта оракла и посмотрите как должен быть настроен шелл в системе и пользователь с под которого база стартует
0
|
|||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||
| 18.09.2013, 00:26 [ТС] | ||||
Я вообще не сильно представляю чтобы он на ходу смог переключиться на другую java, у него же часть процедур на java написаны, что же это он их выгрузит на время, а потом заново загрузит ... что-то мне подсказывает что не настолько он умный.
0
|
||||
|
|
||
| 18.09.2013, 00:34 | ||
|
но сконфигурить второй инстанс и стартануть его с листенером на другом порту вам никто не мешает, и вот там уже можно всё сделать правильно и показать админам как оно может летать ) копипаста с нета Кликните здесь для просмотра всего текста
If you want a second database instance, no additional installation is required - as long as you want to run the second instance at the same version as the the first. Just fire up dbca and create the second database. One installation of Oracle (one ORACLE_HOME) is capable of supporting many database instances, though the same may or may not be said of the hardware it is running on.
As already said, one listener is enough. One listener, running from one oracle home, using the default name of LISTENER, running on the defualt port of 1521, is quite capable of -- indeed, WAS DESIGNED TO, supporte multiple database instances of multiple versions running from multiple ORACLE_HOMEs. One instance of dbcontrol/dbconsole will support only one database. If you do not use Grid Control (extra installation, extra license) you will need to use the emca utility or one of the options in the dbca utility to configure a seperate instance of dbcontrol for each database. Don't worry about the ports, the creation utility will take care of it and report what it does. ну и вот тут ещё глянь http://perumal.org/how-to-run-... le-server/
1
|
||
| 18.09.2013, 00:34 | |
|
Помогаю со студенческими работами здесь
12
Дешёвая и эфективная раскрутка сайта Java + Access bez JDBC-ODBC a srazu 4erez JDBC Ошибка при подключении к базе данных средствами jdbc Ошибка в jdbc+oracle: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver Есть ли драйвер, предоставляющий jdbc интерфейс для источника данных в XML? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|