
Yaroslav
03.08.2018
13:03:25

Philip
03.08.2018
13:04:40
может вот такой путь /var/lib/postgresql_tablespaces/project_name_ts1
/var/lib/postgresql_tablespaces/project_name_ts2

Zamira
03.08.2018
13:05:24
Как обычно? Т.е. я вообще не понимаю, в чём проблема. :(
Условно в обычном случае делается так
select *, row_number() over ( partition by products.group )
from products
Это если бы у products было поле group. Я не знаю что в partition by писать, если надо получать group через связную таблицу

Google

Yaroslav
03.08.2018
13:05:38

Zamira
03.08.2018
13:06:40
JOIN?
Помогите дописать этот пример. Есть products.shop_id, который является id в таблице shops. И есть shops.group

Dmitry
03.08.2018
13:08:26
Я честно два раза пролистал документацию, и всё же не понял, зачем конкретно это нужно (engrish в больших количествах меня очень сбивает, правда). Вы бы привели какие-то примеры, лучше ближе к началу README.
Спасибо! Ну не было у меня времени, чтобы разжевать в документации на примере ? Вы посмотрите на простейший пример в example. Смысл в том, что есть каталоги, в них могут лежать подкаталоги, SQL-файлы, ярлыки (которые могут ссылаться на каталоги и файлы и другие ярлыки) - это всё называется ссылками (references). Например, чтобы пересоздать объекты какой-то схемы можно написать так: pgspa exec schemas/recreate, где schemas - это каталог, recreate - это ярлык, который ссылается на drop.sql и create.sql каталога schemas. Как-то так.

Yaroslav
03.08.2018
13:08:49

Zamira
03.08.2018
13:09:55
? спасибо
Что-то я затупила
Просто запрос в итоге ооочень сложный должен получиться. Это только одно из условий


Yaroslav
03.08.2018
13:21:31
Спасибо! Ну не было у меня времени, чтобы разжевать в документации на примере ? Вы посмотрите на простейший пример в example. Смысл в том, что есть каталоги, в них могут лежать подкаталоги, SQL-файлы, ярлыки (которые могут ссылаться на каталоги и файлы и другие ярлыки) - это всё называется ссылками (references). Например, чтобы пересоздать объекты какой-то схемы можно написать так: pgspa exec schemas/recreate, где schemas - это каталог, recreate - это ярлык, который ссылается на drop.sql и create.sql каталога schemas. Как-то так.
Всё равно документация оставляет ощущение "ничего не понимаю". :(
Например:
Зачем вообще для этого расширение?
Ну ладно расширение, зачем там код на... C++, правильно?
А если нет желания/возможности его компилировать, что я потеряю?
Чем это отличается от sqlitch, например?
Эта штука вообще "сносит" данные или нет?
И т.д. и т.п.
Всё IMHO, конечно.
И может, опять-таки, меня просто "сбивает" ломаный анлгийский. ;)


Dmitry
03.08.2018
13:28:30
Всё равно документация оставляет ощущение "ничего не понимаю". :(
Например:
Зачем вообще для этого расширение?
Ну ладно расширение, зачем там код на... C++, правильно?
А если нет желания/возможности его компилировать, что я потеряю?
Чем это отличается от sqlitch, например?
Эта штука вообще "сносит" данные или нет?
И т.д. и т.п.
Всё IMHO, конечно.
И может, опять-таки, меня просто "сбивает" ломаный анлгийский. ;)
Бывает ? Расширение устанавливать необязательно. Но в нём реализован функционал удаления объектов БД. Код на C++ там потому что мне нравится этот язык программирования ?
Чем отличается от sqlitch не знаю.
В расширении есть функции spa_clear_schema() и spa_clear_schemas_if_exists(). Они принимают в качестве аргументов массив типов объектов, подлежащих удалению. По умолчанию туда входят все поддерживаемые типы объектов, кроме таблиц. Поэтому данные удаляются только в случае если явно об этом попросить.
Я не документировал расширение, но уже очевидно, что надо.


Philip
03.08.2018
13:39:01
как сделать перечисление имен табличных прастранств

Terminator
03.08.2018
13:39:31
@plovdiver будет жить. Поприветствуем!

Philip
03.08.2018
13:40:40
как сделать перечисление имен табличных пространств
grant create on tablespace_1 tablespace_2 tablespace_3 to user;

Google

Данила
03.08.2018
13:41:36
Добрый день. Подскажите, есть ли у PostgreSQL аналог Galera в MySQL? (инструмент для создания кластера с синхронной репликацией данных)

Yaroslav
03.08.2018
13:43:27

TEH3OP
03.08.2018
13:53:35
Привет.
А есть какой-нить pythone или .net библиотек, который Pg/plsql парсит. Мне надо в запросе на создание индекса добавить concurently

Данила
03.08.2018
14:03:57

Ilia
03.08.2018
14:03:59

Данила
03.08.2018
14:04:17
Насколько я знаю, в postgres так можно делать

Yaroslav
03.08.2018
14:05:39

Данила
03.08.2018
14:06:19

Zamira
03.08.2018
14:08:24
А есть кто на rails пишет? Я тут пытаюсь этот partition by использовать через activerecord. Есть вопрос

Fedor
03.08.2018
14:10:32
https://habr.com/post/414269/
Вот тут ознакомьтесь с этой проблемой

Yaroslav
03.08.2018
14:12:45
Для горизонтального масштабирования БД.
Эээ... и причём тут была CephFS?
Скажите, Вы вообще в этой теме (горизонтального масштабирования) разбираетесь (работали, или хотя бы читали)?
Потому что если нет... то, что реально вам даст распределение (с любой "обычной" СУБД!), очень сильно отличается от "наивных" ожиданий. :(

Fedor
03.08.2018
14:14:55
ДА и прежде чем думать о горизонатльном шардировании нужно подумать на тему а что привело к этому что нам не хватает ресурсов.
И начать оптимизировать эти участки .

Yaroslav
03.08.2018
14:16:42

TEH3OP
03.08.2018
14:18:25

Fedor
03.08.2018
14:18:25
Да , как вариант , для этого надо будет еще параметры буферов подкрутить перейти на хьюдж пэйдж и выставить режимы powsever CPU в максимальные.

Ilia
03.08.2018
14:19:11

TEH3OP
03.08.2018
14:20:33
Постоянно в разных индексах. Надо реинлекс безблочный сделать, ибо система 24/7 работает. Oltp

Google

Fedor
03.08.2018
14:21:25
если хочешь в авто режиме делат это то не забудь проверять индекс после создания на флаг инвалидности

TEH3OP
03.08.2018
14:24:12

Fedor
03.08.2018
14:26:26
А как про это флаг гуглить?
https://www.google.ru/search?q=postgresql+list+invalid+indexes&oq=postgresql+invalid+index+&aqs=chrome.1.69i57j0.14343j0j7&sourceid=chrome&ie=UTF-8

TEH3OP
03.08.2018
14:26:50

Radim
03.08.2018
14:33:35
Добрый день, кто-нибудь сталкивался с такой проблемой, что процедура на одинаковых данных из pgadmin отрабатывает гораздо быстрее, чем из кода (python) (для сравнения, pgadmin 0.3sec, из python ~10sec)

Gennady
03.08.2018
14:42:52
Вот тут ознакомьтесь с этой проблемой
Статью читал, а опыт показывает, что не всё так однозначно, во время тестов pgbench база на CEPH показывает себя не хуже, а иногда лучше, чем на локальных ssd-дисках.
Кто-то реально использовал такое на продакшене?

redl1ne
03.08.2018
14:44:33
Скажите плз
Есть в постгрэсе конструкция on conflict do update
А если if exist do update
Будет работать?

Oleg
03.08.2018
14:45:16
а если not exists, insert?

redl1ne
03.08.2018
14:46:43
Угу

Oleg
03.08.2018
14:47:03
merge вроде называется и вроде нет пока

Oleg
03.08.2018
14:47:05
https://habr.com/company/postgrespro/blog/412605/

redl1ne
03.08.2018
14:47:19
Insert ... if exists do update ...

Yaroslav
03.08.2018
14:47:48

Oleg
03.08.2018
14:49:30
хотя в доке чтото есть https://www.postgresql.org/docs/9.5/static/sql-insert.html
ON CONFLICT Clause (https://wiki.postgresql.org/wiki/UPSERT)

Yaroslav
03.08.2018
14:52:14

redl1ne
03.08.2018
14:56:07
Щас сек
Есть таблица со значениями
логин
Временная метка
Если такой логин уже есть
Временная метка обновляется
Никаких уникальностей не задано

Google

Yaroslav
03.08.2018
14:58:15

elfiki
03.08.2018
14:58:39
а логин уникален?

redl1ne
03.08.2018
15:00:18
Там id который цепляется из другой таблицы (во 2 таблице просто логин + primary key, а в первой стоит референс на этот id)
И он не уникальный ибо там логи сессии и если одна закончилась вполне может начаться новая
И как раз условие
Если логин + время начала уже есть
Обновить время конца
Вот собственно и все)
И никаких конфликтов нет поэтому конструкция on conflict не срабатывает

Yaroslav
03.08.2018
15:04:54

Gubaydullin
03.08.2018
15:41:15
CREATE OR REPLACE FUNCTION "jsonb_minus" ( "left" JSONB, "keys" TEXT[] )
RETURNS JSONB
LANGUAGE SQL
IMMUTABLE
STRICT
AS $$
SELECT
CASE
WHEN jsonb_exists_any("left", "keys")
как думаете нужно ли jsonb_exists_any("left"::jsonb, "keys")

Admin
ERROR: S client not available

Gubaydullin
03.08.2018
15:41:39
добавить конкретное указание типа?
по идее не нужно же?

Yaroslav
03.08.2018
15:54:34

Gubaydullin
03.08.2018
15:55:00
По идее да

Данила
03.08.2018
18:06:27

Yaroslav
03.08.2018
18:06:59

Данила
03.08.2018
18:07:27

Yaroslav
03.08.2018
18:07:52

Денис
03.08.2018
18:12:28
ну так тпэшнись туда

Alex
03.08.2018
19:13:25

Михаил
03.08.2018
19:13:54

Yaroslav
03.08.2018
19:15:13

Google

Михаил
03.08.2018
19:16:05

Yaroslav
03.08.2018
19:17:53

Михаил
03.08.2018
19:20:37
Глупость - коду в БД разработчики отказывают в самостоятельном принятии транзакционых решений. Совершенно нелепое ограничение. Если в 11 исправят, то очень хорошо

Михаил
03.08.2018
19:21:59
Не исправят, а добавят)
И то, что кажется естественным для разработчика oracle не обязательно должно быть таким для всех других баз данных

S
03.08.2018
19:24:03
если вам надо отменить родительскую транзакцию то делайте raise exception

Yaroslav
03.08.2018
19:25:33

Михаил
03.08.2018
19:31:51
Дабы не зависеть от внешнего клиентского кода. Особенно актуально с множественными dml-операциями в процедурах с многократной вложенностью.
Да, блин. Странный вопрос, а-ля «зачем вам автомобиль, вот же отличный самокат»

Yaroslav
03.08.2018
19:35:55
Дабы не зависеть от внешнего клиентского кода. Особенно актуально с множественными dml-операциями в процедурах с многократной вложенностью.
Да, блин. Странный вопрос, а-ля «зачем вам автомобиль, вот же отличный самокат»
А зачем "не зависеть"? И я вообще не вижу, как это актуально. :(
> Да, блин. Странный вопрос, а-ля «зачем вам автомобиль, вот же отличный самокат»
А мне кажется, наоборот. Вы, опять-таки, привыкли к чему-то другому.

Михаил
03.08.2018
19:37:57
Ну, ок, спорить не буду.
Появится в v11, распробуете - понравится, уверен.

Yaroslav
03.08.2018
19:38:43

Михаил
03.08.2018
19:45:01
Перехват и самостоятельная обработка ошибок. Логирование в автономной транзакции. Несколько вложенных процедур с возможностью отката части инсертов. Многопоточная обработка с блокировками записей.


Yaroslav
03.08.2018
19:50:24
> Перехват и самостоятельная обработка ошибок.
Возможна и сейчас (savepoint).
> Логирование в автономной транзакции.
Вот это единственное, для чего это могло бы быть полезно, но и то только в случае, если нужно логгировать даже в тех транзакциях, с которыми случится ROLLBACK. Workaround у нас есть и сейчас, кстати (dblink).
> Несколько вложенных процедур с возможностью отката части инсертов.
Возможна и сейчас (savepoint).
> Многопоточная обработка с блокировками записей.
С учётом отсутвия threads в PostgreSQL вообще (и, опять-таки, чем это лучше сессий?), как-то не впечатляет. :)
Вообще, несколько отвлекаясь от темы, в PostgreSQL есть несколько features, которые либо почти бесполезны, либо вообще "вредны" (т.е. каждая попытка их использования — ошибка).
И они сделаны, в основном, по следующим причинам:
. Только чтобы соотвествовать ISO SQL.
. Под конкретного клиента (которому так хотелось "шоб было", что они даже смогли нанять/заплатить кому-то из committer-ов).
Последнее бывает, к счастью, очень редко.


Михаил
03.08.2018
20:05:41
Спорить лень, но вопрос есть:
>Возможна и сейчас (savepoint).
Разве возможен откат к именованному сейвпоинту, расположенному в одной из вышестоящих в стеке вызовов процедур?

S
03.08.2018
20:07:32
exception так и работают