Я использую sun.jdbc.odbc.JdbcOdbcDriver для подключения к базе данных oracle. Я знаю, что, вероятно, мне будет лучше использовать тонкий драйвер, но я хочу, чтобы приложение работало без указания имя сервера db и номер порта no.My, как jdbc: odbc: DSN.Как установить размер выборки для драйвера jdbc odbc
Запросы, которые я выполняю в своем приложении, могут возвращать миллионы строк. Все данные имеют решающее значение, поэтому я не могу ограничить их в запросе. Моя проблема заключается в том, что приложение java работает в памяти.
Когда я проверяю размер выборки в заявлении, он установлен на 1. Это кажется чрезвычайно субоптимальным (запрос, получающий 45K строк, занимает около 13 минут), и я хотел бы иметь размер выборки по крайней мере 500 с тем чтобы повысить производительность.
Я понимаю, что когда мой запрос выполняется (я использую Statement), объект оператора указывает на результаты в базе данных, которые я повторяю с помощью ResultSet. Результирующий набор попадет в базу данных, чтобы получить n no из строк (где n - размер выборки) каждый раз, когда я делаю resultSet.next(). Правильно ли это толкование? Если это так, это значит, что мое приложение будет никогда не сталкивается с проблемами памяти до тех пор, пока размер моей выборки не станет настолько большим, что JVM будет загружен?
Когда я создаю stmt.setFetchSize() после создания инструкции, я получаю недопустимый размер sql выборки sql. Я могу избежать этого исключения, если установить stmt.setMaxRows() на большее значение, чем размер выборки .Но
1. Я не хочу, чтобы мои результаты ограничивались значением MaxRows.
2. Пробовал задавать максимальные ряды до огромного значения и пытался с размером выборки 500, но не видел улучшения во времени.
Пожалуйста, помогите мне выяснить, как я могу установить допустимый размер выборки и получить некоторое улучшение. Любые другие предложения по оптимизации для одного и того же драйвера будут оценены.
Спасибо,
Fell
спасибо большое! Я не знал о тонком драйвере с использованием псевдонимов TNS. Это решило все мои проблемы с unix. Есть ли способ извлечь имя сервера/экземпляра, указанное в конфигурации драйвера ODBC? – Fell
Конфигурация драйвера ODBC хранится в реестре в Windows или в файлах конфигурации в Unix. В любом случае должно быть возможно написать небольшое приложение, которое будет извлекать эту информацию. –
еще раз спасибо. Мое приложение работает отлично! – Fell