Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вытащить bytea из таблицы / 24 сообщений из 24, страница 1 из 1
13.02.2008, 11:01
    #35129192
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
В общем что-то никак не получается решить одну проблемку...
В общем нужно хранить файлы в базе....запись в таблицу происходит нормально, но когда пытаюсь вытащить эту запить, происходит такая фигня...
bytea хранит данные(и собственно возвращает) грубо говоря в своем представлении, соответственно после выборки нужно эти данные нормализовать, пишется это на jsp у меня

1 - logger.ToLog("Try Convert to stream");

2 - InputStream strm=new ByteArrayInputStream(org.postgresql.util.PGbytea.toBytes(rs.getBytes(1)));
3 - logger.ToLog("Successfull Convert to stream");

вот, и если файл размером где то больше 3мб то просто виснет в строке номер 2
...
Рейтинг: 0 / 0
13.02.2008, 12:05
    #35129443
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
ладно, конвертировать не стал...
теперь например залил файл размером 22мб
и теперь виснет здесь
logger.ToLog("Try:"+s1);
ResultSet rs=st.executeQuery(s1);
logger.ToLog("returns:"+s1);
на второй строке
...
Рейтинг: 0 / 0
13.02.2008, 12:28
    #35129540
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
Форумом не ошиблись?
Если не ошиблись, то покажите всю процедуру загрузки/выгрузки данных и настройки java?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
13.02.2008, 12:36
    #35129589
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
может и ошибся....просто с явой и jsp работаю только вторую неделю

записываю в базу так
ps = db.prepareStatement(
"insert into attachments(attID, attValue) "+
" values (?,?)"
);
ps.setInt(1, v_id);
ps.setBinaryStream(2, (data), (int)att.getSize());//data - InputStream
ps.executeUpdate();


читаю так
String s1=
("SELECT attValue from attachments where AttID="+
getAttachmentID(att));
logger.ToLog("Try:"+s1);

ResultSet rs=st.executeQuery(s1); //виснет тут
logger.ToLog("returns:"+s1);


по поводу настройки java к сожалению ничего не могу сказать

работает это все под TomCat
...
Рейтинг: 0 / 0
13.02.2008, 12:38
    #35129597
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
запрос того же чисто из под PGAdmin конечно тоже не летает, но вроде как работает
...
Рейтинг: 0 / 0
13.02.2008, 12:39
    #35129602
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
причем в когда идет ну запрос...вначале машина загружается....а потом по нулям.....
и ни в какое исключение не вываливается
...
Рейтинг: 0 / 0
13.02.2008, 12:55
    #35129679
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
Какая версия постгреса? (У меня, например, наблюдались подобные задержки в версиях до 8.2. Правда, только при загрузке данных на сервер)
Что видно в логах постгреса?
Нормально ли выполняется подобный запрос на чтение из psql?
P.S.
Яве может банально не хватать памяти, но это не тебя для обсуждений на этом форуме ;)
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
13.02.2008, 14:29
    #35130070
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
постгрес 8.2
вот лог его
DEBUG: parse <unnamed>: SELECT attValue from wikiattachments where AttID=12
STATEMENT: SELECT attValue from wikiattachments where AttID=12
DEBUG: StartTransactionCommand
STATEMENT: SELECT attValue from wikiattachments where AttID=12
DEBUG: StartTransaction
STATEMENT: SELECT attValue from wikiattachments where AttID=12
DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 41170/1/0, nestlvl: 1, children: <>
STATEMENT: SELECT attValue from wikiattachments where AttID=12
DEBUG: bind <unnamed> to <unnamed>


про параметры явы к сожалению ничего сказать не могу
...
Рейтинг: 0 / 0
13.02.2008, 14:52
    #35130202
кщьфт83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
из PGAdmin запрос выполняется....долго, отжирает памяти много, но выполняется
...
Рейтинг: 0 / 0
13.02.2008, 16:10
    #35130563
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
За отсутствием данных для анализа будем считать, что яве просто не хватает памяти ;)
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
13.02.2008, 16:15
    #35130576
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
а не подскажете где об этих данных можно вычитать.....
а то у меня кроме "Thinking in Java, 2nd Edition" ничего нет больше
...
Рейтинг: 0 / 0
13.02.2008, 16:17
    #35130584
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
Такие вопросы задают обычно тут
http://www.sql.ru/forum/actualtopics.aspx?bid=38
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
13.02.2008, 16:28
    #35130612
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
задал там....только пока все молчат, как партизаны:(
...
Рейтинг: 0 / 0
13.02.2008, 16:50
    #35130679
Vzhik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
ResultSet для INSERT вроде какой-то только в 8.3 появился...

диагноз - читать доки по JDBC http://jdbc.postgresql.org/documentation/82/index.html
...
Рейтинг: 0 / 0
13.02.2008, 17:00
    #35130711
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
???
...
Рейтинг: 0 / 0
13.02.2008, 19:35
    #35131109
Vzhik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
извиняюсь... сегодня не внимателен... глючу
...
Рейтинг: 0 / 0
14.02.2008, 21:40
    #35134153
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
в общем проблема пока решилась......установлением максимальной кучи у томкэта в 1гб..........
.......правда попытавшись запихнуть в базу файл размером 450Мб PSQL отказался это делать, сославшись на ошибку памяти.......времени просто не хватило, завтра продолжу...

но все таки насторожило, то, что запихивая в базу блоб размером 450мб, получаем отжирание памяти постгресом больше 1ГБ....
...
Рейтинг: 0 / 0
14.02.2008, 22:05
    #35134189
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
roman83в общем проблема пока решилась......установлением максимальной кучи у томкэта в 1гб. .........
.......правда попытавшись запихнуть в базу файл размером 450Мб PSQL отказался это делать, сославшись на ошибку памяти.......времени просто не хватило, завтра продолжу...

но все таки насторожило, то, что запихивая в базу блоб размером 450мб, получаем отжирание памяти постгресом больше 1ГБ....Если проблема решилась изменением настроек томката, то почему вы считаете, что память отжирает постгрес, а не джава?
...
Рейтинг: 0 / 0
15.02.2008, 11:42
    #35134405
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
roman83в общем проблема пока решилась......установлением максимальной кучи у томкэта в 1гб..........
.......правда попытавшись запихнуть в базу файл размером 450Мб PSQL отказался это делать, сославшись на ошибку памяти.......времени просто не хватило, завтра продолжу...

но все таки насторожило, то, что запихивая в базу блоб размером 450мб, получаем отжирание памяти постгресом больше 1ГБ....
450 метров - это круто. Может не стоит этого делать? Например есть вариант, что на этапе передачи экранируются спец символы и объём комманды лёгко увеличивается в 2-3 раза. Вот Вам и 1.5 гига. Это не считая других нагрузочных проблем.
...
Рейтинг: 0 / 0
15.02.2008, 11:48
    #35134427
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
Andrey DaeronМожет не стоит этого делать?
+1
В постгресе есть такая штука как LargeObject. Попробуйте её.
...
Рейтинг: 0 / 0
15.02.2008, 13:58
    #35134985
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
pamir roman83в общем проблема пока решилась......установлением максимальной кучи у томкэта в 1гб. .........
.......правда попытавшись запихнуть в базу файл размером 450Мб PSQL отказался это делать, сославшись на ошибку памяти.......времени просто не хватило, завтра продолжу...

но все таки насторожило, то, что запихивая в базу блоб размером 450мб, получаем отжирание памяти постгресом больше 1ГБ....Если проблема решилась изменением настроек томката, то почему вы считаете, что память отжирает постгрес, а не джава?
TaskManager сказал


ps....а вообще уж эксперименты с такики объемами делал так, ради личного интереса....
ограничения в 100бм хватит с головой
...
Рейтинг: 0 / 0
15.02.2008, 14:51
    #35135274
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
roman83
ps....а вообще уж эксперименты с такики объемами делал так, ради личного интереса....
ограничения в 100бм хватит с головой
О! А можно тут поподробнее, например сколько сожрал постгрес при засовывании в него 100МБ?
И как при этом выглядел запрос?
...
Рейтинг: 0 / 0
15.02.2008, 21:09
    #35136431
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
Andrey Daeron roman83
ps....а вообще уж эксперименты с такики объемами делал так, ради личного интереса....
ограничения в 100бм хватит с головой
О! А можно тут поподробнее, например сколько сожрал постгрес при засовывании в него 100МБ?
И как при этом выглядел запрос?
в понедельник предоставлю код...

а вообще вытаскивал PreparedStatment-ом
что-то вроде
select blob_field from table where blob_id=some_id
...
Рейтинг: 0 / 0
15.02.2008, 21:10
    #35136435
roman83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить bytea из таблицы
и отжираг он 1ГБ не при 100, а при запросе блоба в 450мб
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вытащить bytea из таблицы / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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