Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с нехваткой памяти при использовании функции LIST() / 21 сообщений из 21, страница 1 из 1
25.02.2014, 14:22:41
    #38571611
Проблема с нехваткой памяти при использовании функции LIST()
Hi ALL!
Собственно вопрос озвучен в заголовке темы.
Нашел интересную функцию в FB под названием LIST(). Опытным путем обнаружилось что на маленьком объеме данных <= 2000 строк (у меня) отрабатывает отлично, с поставленной задачей справляется. А на больших объемах вылетает с ошибкой: Error Message: unable to allocate memory from operating system.

Вопрос: Кто сталкивался? Как побороть?

Неохота писать свой костыль для сворачивания нескольких строк в одну с разделителем.
Хелп по данной функции читал, предупреждение о большом использовании памяти видел. НО, может все-таки многоуважаемый ALL уже нашел решение данной проблемы.

ПС: FB: 2.1, ОЗУ: 12ГБ, Проц: Intel Xeon E5620@2.4GHz, Диски: RAID 10

with respect and best wishes, <B>ПаWWWлОдАрЕц</B>
...
Рейтинг: 0 / 0
25.02.2014, 14:25:48
    #38571617
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕц,

проблема известная. Дело в том что LIST возвращает BLOB и от того база может пухнуть особенно если с управлением транзакциями плохо. Но чтобы ошибку выдавало я не припомню.

Кидай сюда запрос где ты этот LIST используешь.

P.S. FB 32 битный?
...
Рейтинг: 0 / 0
25.02.2014, 14:31:23
    #38571628
Проблема с нехваткой памяти при использовании функции LIST()
Вот запрос который вываливается:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
    AN.DOCUMENT,
    LIST(AN.NUMBER, ';')

FROM ARHIV_NUMBER AN
WHERE (AN.DATE_CREATE > '01.01.2013')
GROUP BY AN.DOCUMENT
HAVING COUNT(AN.DOCUMENT) > 1



Количество записей которые должны в нем обработаться: 578498

Если добавить в конец ROWS 2000 то отрабатывает, если убрать то ошибка.
FB x32
...
Рейтинг: 0 / 0
25.02.2014, 14:35:06
    #38571635
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕцFB x32
Какие параметры в конфиге крутил?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.02.2014, 14:43:12
    #38571650
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕцFB x32

ну дык потому и ошибка.

какой тип и размер и CHARSET у поля ARHIV_NUMBER.NUMBER? Попробуй ещё на FB2.5, там вроде с блобами что-то оптимизировалось.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT COUNT(*) FROM (
SELECT
    AN.DOCUMENT,
    COUNT(*)
FROM ARHIV_NUMBER AN
WHERE (AN.DATE_CREATE > '01.01.2013')
GROUP BY AN.DOCUMENT
HAVING COUNT(AN.DOCUMENT) > 1)



если под количеством записей 578498 понимается вот это, то тогда тем более понятно
...
Рейтинг: 0 / 0
25.02.2014, 14:45:38
    #38571654
Проблема с нехваткой памяти при использовании функции LIST()
Доступа к параметрам сервера у меня нету. Буду признателен если скажешь какие параметры посмотреть, озадачу админов пусть смотрят, крутят, меняют.

ПС: переписав запрос так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
    AN.DOCUMENT,
    CAST(LIST(AN.NUMBER, ';') AS VARCHAR(500)) AS LISTMY

FROM ARHIV_NUMBER AN
WHERE (AN.DATE_CREATE > '01.01.2013')
GROUP BY AN.DOCUMENT
HAVING COUNT(AN.DOCUMENT) > 1


Удалось избавится от ошибки во время выполнения процедуры, НО, когда в IBExperte в сетке с данным попытаться отобразить все записи, вылетает с той же ошибкой.
...
Рейтинг: 0 / 0
25.02.2014, 14:47:36
    #38571659
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕц,

на FB2.5 попробуй
...
Рейтинг: 0 / 0
25.02.2014, 14:47:47
    #38571660
Проблема с нехваткой памяти при использовании функции LIST()
Симонов Денис,

Скрипт таблицы
CREATE TABLE ARHIV_NUMBER (
DOCUMENT INTEGER,
NUMBER INTEGER,
DOC_YEAR INTEGER,
DATE_CREATE DATE DEFAULT CURRENT_TIMESTAMP,
FOLDERTYPE SMALLINT DEFAULT 0
);

FB походу неявно преобразует его к варчару и слепляет без проблем.
...
Рейтинг: 0 / 0
25.02.2014, 14:51:55
    #38571671
Проблема с нехваткой памяти при использовании функции LIST()
Симонов ДенисПаWWWлОдАрЕц,

на FB2.5 попробуй
Его тоже нету. Просить админов установить его для экспериментов бесполезно. Да и продакшн база на 2.1, когда они ее на 2.5 переведут только Биллу Гейтсу наверное известно.
...
Рейтинг: 0 / 0
25.02.2014, 14:58:53
    #38571684
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕц,

ну тогда пиши EXECUTE BLOCK и соединяй строки в нём сам. Или проси чтобы FB 64 битный ставили
...
Рейтинг: 0 / 0
25.02.2014, 15:13:54
    #38571711
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕцКоличество записей которые должны в нем обработаться: 578498Это не играет роли. Главное - сколько там записей после группировки.

PS а что такое 2.1 ?
PPS 2.5 ты вполне можешь поставить у себя и прогнать на нём свой запрос, чтобы знать - исправлено ли это в 2.5
...
Рейтинг: 0 / 0
25.02.2014, 15:18:05
    #38571728
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕцБуду признателен если скажешь какие параметры посмотреть, озадачу
админов пусть смотрят, крутят, меняют.
Вообще-то наоборот: надо смотреть что они уже накрутили-наменяли от балды. Т.е. показывай
все незакомментированные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.02.2014, 07:40:57
    #38572390
Проблема с нехваткой памяти при использовании функции LIST()
Бодаться с админами бесполезно. Переход на 2.5 пока не планируется в ближайший год-два. Говорят в 2.1 "их" все устраивает.
В ходе разбора полетов выяснилось что процедура в которой используется LIST() будет запускаться 1 раз в неделю, и количество строк которые будут ей обрабатываться будет в интервале 0 - 500 (это с запасом), в среднем 100-150. В связи с чем было принято решение использовать вариант
Код: sql
1.
CAST(LIST(AN.NUMBER, ';') AS VARCHAR(500)) AS LISTMY


Он пока работает.

А текущие несколько тысяч я какнить в ручном режиме, порциями обработаю.

All thanks.
Тему можно закрывать.
...
Рейтинг: 0 / 0
26.02.2014, 09:54:44
    #38572460
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕц,

Боюсь тебя разочаровать, но 500 строк в VARCHAR(500) не влезут.
...
Рейтинг: 0 / 0
26.02.2014, 10:03:05
    #38572471
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕцБодаться с админами бесполезно. Переход на 2.5 пока не планируется в ближайший год-два. Говорят в 2.1 "их" все устраивает.


странная у вас контора. Обычно решение о переходе с одной версии СУБД принимают разработчики. Вы кем являетесь?
...
Рейтинг: 0 / 0
26.02.2014, 14:09:41
    #38572892
Проблема с нехваткой памяти при использовании функции LIST()
WildSery,

при группировке в LIST будет попадать MAX 20 значений. Да, и в итоге я увеличил варчар до 2000.
А 500, это количество строк в результирующем наборе данных, который получается после этого запроса. Все нормально с этой стороны.
...
Рейтинг: 0 / 0
26.02.2014, 14:11:51
    #38572894
Проблема с нехваткой памяти при использовании функции LIST()
Симонов Денис,

У нас филиал, а голова в МСК. Филиалов штук 50 по РФ. Во всех Ф стоят одинаковые версии лисы. Так что это не от меня зависит. Вот когда большая часть филиалов начнет выть на счет перехода, тогда голова только будет задумываться над этим. Как то так.
...
Рейтинг: 0 / 0
26.02.2014, 14:16:15
    #38572906
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕцВо всех Ф стоят одинаковые версии лисы .Да хоть осла - мы тут при чём ?
...
Рейтинг: 0 / 0
26.02.2014, 14:26:26
    #38572922
Проблема с нехваткой памяти при использовании функции LIST()
hvladПаWWWлОдАрЕцВо всех Ф стоят одинаковые версии лисы .Да хоть осла - мы тут при чём ?
Очепятка ПТИЦЫ .
Вы не причем. Оффтоп зачем разводить.
...
Рейтинг: 0 / 0
26.02.2014, 14:38:32
    #38572952
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
ПаWWWлОдАрЕц,

Ага, а если таким образом опечататься в слове хлеб , то получится пиво

А оффтоп - потому, что проблема вроде как решена, можно и порадоваться немного и за нас и за вас :)
...
Рейтинг: 0 / 0
26.02.2014, 18:08:00
    #38573348
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с нехваткой памяти при использовании функции LIST()
miwaonlineпроблема вроде как решена
"Излюбленный способ решать все вопросы как будто их нет..." (с) МВ
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с нехваткой памяти при использовании функции LIST() / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]