
Кондр
12.10.2018
16:32:47
Как сделать, я разобрался. Интересует почему это сделать нельзя без подзапроса как в других бд
Интересует почему оно сделано так

Алексей
12.10.2018
16:34:59
Точно не знаю, но полагаю это может быть связано с MVCC и блокировками строк
Можно сделать SELECT FOR UPDATE, если надо

Google

Yaroslav
12.10.2018
16:51:13

Кондр
12.10.2018
16:58:05

Yaroslav
12.10.2018
16:59:45
все очень плохо
Почему? Я вот даже не помню, чтобы это было часто нужно. Если нужно, то это обычно какая-то очередь, и там уже всё равно применяются особые средства (FOR UPDATE SKIP LOCKED, например).

Кондр
12.10.2018
17:00:23
Я это использую часто и мне это создает неудобства.

Darafei
12.10.2018
17:09:39
а с какой целью вы это используете?

Yaroslav
12.10.2018
17:34:50

Алексей
12.10.2018
18:13:30
Подскажите плиз кто в курсе. В 10 версии вроде бы сделали секционные таблицы, но такое чувство, что недоделали. Поговаривают, что к 11 только будет более менее нормально.
Суть вопроса. Есть таблица test с PARTITION BY RANGE (dt)
и две секции test_all и test_last:
FOR VALUES FROM ('2000-01-01') TO ('2018-10-01')
FOR VALUES FROM ('2018-10-01') TO ('2999-12-31')
Когда делаю explain select * from test where dt = '2018-10-12' --все ок. Выборка происходит из test_last
Когда делаю explain select * from test where dt = NOW()::DATE --ничего не ок, выборка происходит из двух таблиц
Это нормально? Или ждать 11 версии?
Запросы для тестов: https://pastebin.com/m5QvqG9X

Darafei
12.10.2018
18:16:09

Алексей
12.10.2018
18:17:05
Все норм. :/
Похоже и правда с NOW проблемы. Первый раз сталкиваюсь

Darafei
12.10.2018
18:17:45
зарепортай в -hackers что ли

Alexander
12.10.2018
18:18:50
Уже второй кейс за последние пару недель в чате с now()

Darafei
12.10.2018
18:19:20
ну, он ещё и в fdw не очень хорошо прокидывается, например

Google

Darafei
12.10.2018
18:21:12
Алексей а если заменить now()::date -> (select now()::date) ?

Алексей
12.10.2018
18:22:29
Неа. Из двух таблиц все равно
select * from test where dt = ANY (ARRAY[DATE '2018-10-12', DATE '2018-10-13']); --- ok
select * from test where dt IN (DATE '2018-10-12', DATE '2018-10-13') ---ok
select * from test where dt IN (VALUES (DATE '2018-10-12'), (DATE '2018-10-13')) ---не ok
Разобрался. Планировщик определяет секцию только если данные статические. Стоит использовать функцию в запросе,а NOW - функция, то он будет делать выборку из всех таблиц. Но если есть индекс, то все таблицы кроме одной при аппенде будут пустые. Если индекса нет,то он сольет все таблицы сначала, а потом поиск произойдет.

Yaroslav
12.10.2018
19:23:20

Алексей
12.10.2018
19:24:24
Не пробовал
Но попробовал
create or replace function a() returns date as $$ begin return DATE '2018-10-12'; end; $$ VOLATILE language plpgsql;
create or replace function b() returns date as $$ begin return DATE '2018-10-12'; end; $$ immutable language plpgsql;
результат предсказуем

Yaroslav
12.10.2018
19:29:56

Алексей
12.10.2018
19:32:22
Шикарно. Значит надо делать потихоньку .)

Terminator
12.10.2018
19:58:08
Zhak Sherak будет жить. Поприветствуем!
@tairs будет жить. Поприветствуем!
@kg991 будет жить. Поприветствуем!

Let Eat
13.10.2018
13:13:08

bebebe
13.10.2018
13:13:40
https://github.com/120dev/ElasticSearch-postgres вот примерно в таком направлении буду копать
мне вот это понравилось.
только я до этого с event'ами в psql не сталкивался, они не просядут по нагрузке 2k/min?
я понимаю что зависит от того, как будет написан event_handler,
у меня вопрос возник, а что происходит в том случае, когда event на событие повешан, но его никто не слушает?

Let Eat
13.10.2018
13:37:02

bebebe
13.10.2018
13:37:48
А опыт был с такой репликацией?

Google

Let Eat
13.10.2018
13:43:34
У меня нет, но тут у кого то кажется подписка на события в приложении через такую штуку была

Nikita
13.10.2018
22:21:21
Кто-нибудь знает, чему равен размер блока памяти внутри shared_buffers? (лучше ссылку на доку или исходники)
Т.е., когда в плане запроса пишет Buffers: shared read XXX, то как рассчитать, сколько МБ было считано с диска?

Yaroslav
13.10.2018
22:40:25

Alexander
14.10.2018
05:36:02
что можно сделать с наглухо зависшей сессией, которая на килл не реагирует?
килл -9 не хочется делать, а эта зараза (сессия) залочила другие процессы

Ivan
14.10.2018
06:18:34

Alexander
14.10.2018
06:35:35
Ну я с этого и начал. В итоге залез на SQL Server, куда сессия лезла через дблинк, и прибил ее на той стороне - сработало.

Terminator
14.10.2018
07:01:54
@BasmanJacks будет жить. Поприветствуем!
Untitled будет жить. Поприветствуем!

Dmitry
14.10.2018
09:37:34
а кто уже использует https://github.com/yandex/odyssey
оно себя адекватно ведет?

никогда не слушайте
14.10.2018
14:56:13
Здравствуйте! Не подскажите, что почитать/посмотреть юному падавану на тему PostgreSQL?
На текущий момент, я ознакомился с первой частью документации, со всеми разделами тут - (https://www.postgresql.org/docs/10/static/tutorial.html)
Перешел ко второй части, но что-то очень туго идет.
Читаю, в принципе все понятно, но т.к. у меня целиком и полностью отсутствует опыт работы с базами данных, для меня все как белый шум и реального применения столь широкому функционалу, я увы не вижу.
В общем, ищу какое-то руководство, с примерами и реальными юзер-кейсами, в любом формате статьи/книги/видео.
Заранее спасибо.


Ivan
14.10.2018
15:36:08
Здравствуйте! Не подскажите, что почитать/посмотреть юному падавану на тему PostgreSQL?
На текущий момент, я ознакомился с первой частью документации, со всеми разделами тут - (https://www.postgresql.org/docs/10/static/tutorial.html)
Перешел ко второй части, но что-то очень туго идет.
Читаю, в принципе все понятно, но т.к. у меня целиком и полностью отсутствует опыт работы с базами данных, для меня все как белый шум и реального применения столь широкому функционалу, я увы не вижу.
В общем, ищу какое-то руководство, с примерами и реальными юзер-кейсами, в любом формате статьи/книги/видео.
Заранее спасибо.
Добрый. Чтобы кватиться, достаточно вот этого https://www.youtube.com/channel/UCawnwMqZ6JeoSiEhrS6X69A/playlists и https://postgresql.leopard.in.ua/ Но самое главное, не просто тупо смотреть и читать, а делать то, что там написано.
Я бы побоялся тащить в прод, ибо очевидных преимуществ не вижу, а менять проверенный тулинг на новый еба-пулер от Яндекса - нужны везкие причины


Dmitry
14.10.2018
15:38:25

Ivan
14.10.2018
15:39:21
Открыл issues на гитхабе, 21 проблема из них добрая треть про отсутствие документации, гайдов, поддержки и официального docker образа)

Dmitry
14.10.2018
15:39:53
А проверенный пулинг иногда коннекты теряет, хотя может бажина и на стороне пг. Коннекты со стороны системы есть а данные не в ту не в другую сторону не летят

Terminator
14.10.2018
15:39:56
@stneg будет жить. Поприветствуем!

никогда не слушайте
14.10.2018
15:42:44

Google

Mikhail
14.10.2018
18:14:51

Aleksander
14.10.2018
18:23:41


Dmitry
14.10.2018
18:37:01
Это как?
datid | 33780
pid | 11695
client_addr | 192.168.184.110
client_hostname |
client_port | 40058
backend_start | 2018-10-14 15:33:12.122172+00
xact_start | 2018-10-14 15:36:04.087668+00
query_start | 2018-10-14 15:36:04.087668+00
state_change | 2018-10-14 15:36:04.087669+00
wait_event_type | Lock
wait_event | relation
state | active
backend_xid |
backend_xmin | 321494172
# lsof -i -nP | grep 11695
postmaste 11695 postgres 10u IPv6 474226410 0t0 UDP [::1]:39943->[::1]:39943
postmaste 11695 postgres 11u IPv4 669013996 0t0 TCP 192.168.184.110:5432->192.168.184.110:40058 (CLOSE_WAIT)
#
вот так
клиент ушел а коннект в wait остался
*документация* говорит о том что:
Advanced transactional pooling
Odyssey tracks current transaction state and in case of unexpected client disconnection can emit automatic Cancel connection and do Rollback of abandoned transaction, before putting server connection back to the server pool for reuse. Additionally, last server connection owner client is remembered to reduce a need for setting up client options on each client-to-server assignment.


Mikhail
14.10.2018
18:43:00

Dmitry
14.10.2018
18:44:22
говорят во внутренем трекере pgpro говорят до сих пор тикет болтается что починить со стороны pg:)

Mikhail
14.10.2018
18:52:22
Типа оно во время лока не обрабатывает сокет?

Dmitry
14.10.2018
18:52:49

Mikhail
14.10.2018
18:52:57
Угу
Костыли на это были

Dmitry
14.10.2018
18:56:22
а парни выступали уже с докладами про свой продукт?

Mikhail
14.10.2018
18:56:49
Щас я найду : были патчи в pgbouncer если не путаю

Dmitry
14.10.2018
18:58:20
плюс еще как я понимаю с одисеем можно ssl/cpu-bound унести на соседний хост

Google

Mikhail
14.10.2018
18:59:11
Или даже это вкоммтчивали. Подотстал я уже на пару лет

Dmitry
14.10.2018
18:59:12
тоесть с хостом работать raw а ssl наружу для клиентов

Mikhail
14.10.2018
18:59:23
В bouncer для такого надо городить два их слоя
Один слой для ssl , другой по роутингу-прокси уже