@pgsql

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

Интересует почему оно сделано так

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

Можно сделать SELECT FOR UPDATE, если надо

Google
Yaroslav
12.10.2018
16:51:13
Интересует почему оно сделано так
А разве OFFSET/FETCH с UPDATE есть в ISO SQL (я не помню)? Если нет, то вот и ответ. ;)

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

Алексей
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) ?

Похоже и правда с NOW проблемы. Первый раз сталкиваюсь
там просто планировщик должен прикинуть, в каких секциях искать, а now() будет вычислен уже после него

Алексей
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 - функция, то он будет делать выборку из всех таблиц. Но если есть индекс, то все таблицы кроме одной при аппенде будут пустые. Если индекса нет,то он сольет все таблицы сначала, а потом поиск произойдет.

Алексей
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; результат предсказуем

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

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

@tairs будет жить. Поприветствуем!

@kg991 будет жить. Поприветствуем!

bebebe
13.10.2018
13:13:40
https://github.com/120dev/ElasticSearch-postgres вот примерно в таком направлении буду копать

мне вот это понравилось. только я до этого с event'ами в psql не сталкивался, они не просядут по нагрузке 2k/min?

я понимаю что зависит от того, как будет написан event_handler, у меня вопрос возник, а что происходит в том случае, когда event на событие повешан, но его никто не слушает?

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, то как рассчитать, сколько МБ было считано с диска?

Alexander
14.10.2018
05:36:02
что можно сделать с наглухо зависшей сессией, которая на килл не реагирует?

килл -9 не хочется делать, а эта зараза (сессия) залочила другие процессы

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
а кто уже использует https://github.com/yandex/odyssey
Although we run Odyssey in production, the project is currently in Beta. We appreciate any kind of feedback and contribution to the project.

Я бы побоялся тащить в прод, ибо очевидных преимуществ не вижу, а менять проверенный тулинг на новый еба-пулер от Яндекса - нужны везкие причины

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 будет жить. Поприветствуем!

Google
Aleksander
14.10.2018
18:23:41
а кто уже использует https://github.com/yandex/odyssey
Чёт не понял, как оно работает. Приблуда, которая сторонним сервисом встаёт, потом пулит и роутит коннекшены? Или это библиотека с пуллом для сишных прилаг

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.

клиент ушел а коннект в wait остался
и вместо N коннектов у тебя до 2xN реальных на машине

Mikhail
14.10.2018
18:43:00
и вместо N коннектов у тебя до 2xN реальных на машине
Вы как куда коннектитесь и через что откуда?

Dmitry
14.10.2018
18:44:22
Вы как куда коннектитесь и через что откуда?
а какая разница? клиент ушел, по tcp попрощался, а коннект в статусе active (wait) остался.

говорят во внутренем трекере 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
Щас я найду : были патчи в pgbouncer если не путаю
о! было интереснее такой вариант конечно.

плюс еще как я понимаю с одисеем можно 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 , другой по роутингу-прокси уже

Страница 1034 из 1062