powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / libpq-Получение данных в бинарном виде
8 сообщений из 8, страница 1 из 1
libpq-Получение данных в бинарном виде
    #33450593
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поковырял сабж и выяснил такую штуку - скорость получения данных выросла почти в 2 раза (исключается лишняя конвертация в текст и обратно).

Для типов int,short int, date, time, bool я формат и конвертацию разгреб.
Остались timestamp, numeric, bitset.

Может кто уже решил подобную проблему - поделитесь решениями...
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33452132
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HordiПоковырял сабж и выяснил такую штуку - скорость получения данных выросла почти в 2 раза (исключается лишняя конвертация в текст и обратно).Для типов int,short int, date, time, bool я формат и конвертацию разгреб.Остались timestamp, numeric, bitset.Может кто уже решил подобную проблему - поделитесь решениями...


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

хотя - чего только не придумает горацио в этом мире(С)...


с уважением
(круглый)
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33452582
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0а что там её разгребать то ?

Для numeric и для дат там есть чего разгребать.
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33452727
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Но думаю поповоду 2 раз - енто эээээээээээ, что то смахивает на хфантастику... скорее >всего не все случаи убили...

Я написал "почти".
Получение 100тыс записей (около 6 int, 4 date)
текст: 0.62 с
бинарный: 0.36 с

Для меня это большая разница, т.к. бывает и по 3 миллиона выбирать приходиться.
Но с разгребанием numeric невеселая конечно картина... В общем, сделаю - протестирую и о разнице в скорости сообщу.
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33453381
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Узкое место сеть или CPU сервера? Если сеть - имеет смысл попробовать сжатие (например через SSH) и сравнить тоже.
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33453722
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ффффУзкое место сеть или CPU сервера? Если сеть - имеет смысл попробовать сжатие (например через SSH) и сравнить тоже.

Все запущено локально. Измерял именно получение данных, т.е. время выполнения запроса не учитывалось. Запускал несколько раз - результат практически одинаков.

Если я не ошибаюсь, то в результате выполнения обычного запроса (не курсор) все полученные данные сразу передаются на сторону клиента, т.к. дальнейшее получение значений по столбцам-рядам происходит через обычный массив значений по указателю.

Не пойму я чего они так геморно все сделали - все только через текст и все! Остальное на свой страх и риск. Вот Firebird берем - у них написаны функции конвертации данных из внутреннего формата хранения в обычные типы... И все просто, никаких проблем. А тут в коде приходиться лазить. И переносимость тут не при чем.
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33453794
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, что так сделали потому ,что:
1. В постгресе ты можешь создавать свои типы и соответсвенно свои форматы их внутреннего хранения. Соответсвенно тебе придется переделывать всякий раз клиентскую либу каждый раз при такого рода изменениях.
2. На разных платформах на которых работает сервер - может быть разное внутренне представление хранения данных.
3. Данные могут передаваться через сложную систему шлюзов( например по инету)
И не все шлюзы могут передавать бинарные данные. Во многих местах идет отсечение бинарного трафика.

Т.е. клиентская либа получается не очень переносимой и расходы на поддержание ее в устойчивом состоянии становятся непомерно велики. Поэтому разработчики PG и делегировали сию функцию конечному пользователю системы. Мол ежели тебе нада- то делай сам и сам в таком случае неси отвественность за возможные ошибки и проблемы.
Думаю такой подход вполне прагматичен и понятен... Тем более в опен сорц решении.
...
Рейтинг: 0 / 0
libpq-Получение данных в бинарном виде
    #33453860
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>1. В постгресе ты можешь создавать свои типы и соответсвенно свои форматы их внутреннего хранения. Соответсвенно тебе придется переделывать всякий раз клиентскую либу каждый раз при такого рода изменениях.

А как текстовое представление это может решить?

>2. На разных платформах на которых работает сервер - может быть разное внутренне представление хранения данных.

double, int и т.п. никто не отменял.

>3. Данные могут передаваться через сложную систему шлюзов( например по инету)
И не все шлюзы могут передавать бинарные данные. Во многих местах идет отсечение бинарного трафика.

Ну что тут сказать... Открывать коннект к базе по инету... Ну не представляю я такого в реале... Особенно когда данных много.
Да никакого ограничения тут нет, т.к. результаты могут возвращаться в бинарном виде простым указанием параметра в PQexecParam - никакого хака! А вот как этими данными воспользоваться - это в САД!

>Т.е. клиентская либа получается не очень переносимой и расходы на поддержание ее в устойчивом состоянии становятся непомерно велики.

Реально нужно 5 основных функций. Остальное можно и на откуп пользователям отдать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / libpq-Получение данных в бинарном виде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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