Запрос базы данных Firebird приводит к ошибке Java Heap Space - PullRequest
0 голосов
/ 07 сентября 2018

У меня проблемы с Firebird.Некоторые запросы SQL получают ошибку «Java Heap Space».

Я пересмотрел все запросы и, похоже, прав.Но, выполнив несколько тестов, я заметил, что ошибка возникает только тогда, когда у SQL-запроса нет пределов возвращаемых строк.Если я запускаю запрос, используя SELECT FIRST(10) field1, field2 from table, он возвращает результат из db, без FIRST(), возникает ошибка.

Исходный сервер, на котором был установлен Firebird, имел ограниченную память, поэтому я просто установил Firebird на свойПК, восстановил резервную копию и протестировал ее.Мой текущий компьютер имеет много оперативной памяти и процессора для выполнения этого простого запроса, и возникает та же проблема.

Моя версия Firebird 2.5.Я искал в официальной документации Firebird, но не нашел ничего полезного.Кто-нибудь знает, что может быть причиной этой ошибки?

Ниже приведена распечатка ошибки и диспетчер задач моего компьютера во время тестов.

FireBird Java Heap Space Eror

[TaskManager2]

1 Ответ

0 голосов
/ 08 сентября 2018

Эта проблема не имеет ничего общего с использованием памяти самого сервера Firebird. Ваш инструмент запросов - это Java-приложение (оно выглядит как DBeaver, но может быть и другим приложением на основе Eclipse), а получение всех строк занимает слишком много памяти. Когда Java не может выделить достаточно памяти, это приводит к OutOfMemoryError с сообщением «Пространство кучи Java»

Вам нужно либо настроить это приложение на использование большего объема памяти, либо выяснить, может ли оно извлекать строки на страницах вместо извлечения всех. Jaybird (драйвер JDBC Firebird) сам извлекает все строки, когда запрос выполняется в режиме автоматической фиксации, поэтому, возможно, вам потребуется выполнить его в транзакции.

В качестве альтернативы, как вы уже узнали: не запрашивать все строки.

...