@pgsql

Страница 916 из 1062
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
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
Помогите дописать этот пример. Есть products.shop_id, который является id в таблице shops. И есть shops.group
Как-то так? SELECT ..., ROW_NUMBER() OVER (PARTITION BY s.group ORDER BY что-то) FROM products AS p JOIN shops AS s ON s.id = p.shop_id;

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
Добрый день. Подскажите, есть ли у PostgreSQL аналог Galera в MySQL? (инструмент для создания кластера с синхронной репликацией данных)
Зависит от того, что именно нужно. К примеру: http://bucardo.org/ https://sourceforge.net/projects/postgres-xc/ http://www.postgres-xl.org/ https://www.citusdata.com/ И есть просто встроенная синхронная master/standby репликация.

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

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

Yaroslav
03.08.2018
14:05:39
А если я просто примонтирую CephFS к /var/lib/postgresql ?
Откуда я знаю? Вы так и не объяснили, зачем Вам это нужно.

Данила
03.08.2018
14:06:19
Откуда я знаю? Вы так и не объяснили, зачем Вам это нужно.
Для горизонтального масштабирования БД.

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

Fedor
03.08.2018
14:10:32
А если я просто примонтирую CephFS к /var/lib/postgresql ?
Сразу кучу проблем админских поимеете . Проблему флапов сети , а так же латенси что приведет закономерно к уменьшению производительности базы и вы таким образом ничего не выйграете горизонтально рашардировав это дело

https://habr.com/post/414269/

Вот тут ознакомьтесь с этой проблемой

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

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

TEH3OP
03.08.2018
14:18:25
Руками не лучше ли?
Руки не настолько прямые ещё. Ну нет, так нет.

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

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

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

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

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
Insert ... if exists do update ...
А в чём проблема запрос с EXISTS написать?

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
Insert ... if exists do update ...
(Перечитал) А в чём разница-то? Можете пример показать?

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 не срабатывает

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:07:27
Стоп, что? ?
В postgresql есть транзакции?

Yaroslav
03.08.2018
18:07:52
В postgresql есть транзакции?
Всегда. Т.е. сделать так, чтобы их не было, нельзя.

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

Михаил
03.08.2018
19:13:54
В postgresql есть транзакции?
Ими из кода управлять нельзя (вот глупость-то), но вообще они есть, конечно

Google
Михаил
03.08.2018
19:16:05
В смысле "нельзя управлять"?
В том смысле, что ты в функции роллбек, скажем, не сделаешь, а из клиента - запросто

Yaroslav
03.08.2018
19:17:53
В том смысле, что ты в функции роллбек, скажем, не сделаешь, а из клиента - запросто
Во-первых, почему это "глупость"? Может, Вы просто к другому привыкли? Во-вторых, процедуры с такой возможностью будут в v11.

Михаил
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
Глупость - коду в БД разработчики отказывают в самостоятельном принятии транзакционых решений. Совершенно нелепое ограничение. Если в 11 исправят, то очень хорошо
Частично, для этого есть SAVEPOINT-ы (и основанные на них exceptions), да. А зачем вообще коду в БД принимать самостоятельные транзакционные решения?

Михаил
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
Ну, ок, спорить не буду. Появится в v11, распробуете - понравится, уверен.
И пробовать не буду, скорее всего. Вообще не вижу смысла. Можете хоть какой-то пример показать?

Михаил
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 так и работают

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