
Konstantin
29.05.2017
08:22:21

Darafei
29.05.2017
08:23:11
как это сделать?
https://postgrespro.ru/docs/postgrespro/9.6/queries-table-expressions.html#queries-subqueries

Konstantin
29.05.2017
08:51:53
сделал count подзапросом отдельным, вроде работает как надо. спасибо)

Eugenia
29.05.2017
11:15:31
Всем привет! Коллеги, подскажите, пожалуйста, при добавлении столбца с дефолтным значением в существующую таблицу что физически происходит с файлом данных? 9.4

Google

Артур
29.05.2017
11:23:20

Darafei
29.05.2017
11:27:09
что именно должен сделать analyse?

Ildar
29.05.2017
11:33:48
в pg_class поменяется relfilenode

Артур
29.05.2017
11:50:07
Или их ручками стартовать надо будет

Darafei
29.05.2017
11:51:00

Артур
29.05.2017
11:52:29
ясно. Почему интересуюсь - у меня на выгрузку 4Гб отобранных таблиц на продакшн. Я вот не хочу потом сюда писать "срочно помогите, триггеры не стартовали", поэтому хочу заранее понять все возможные проблемы и икак их решать

Vova
29.05.2017
12:52:26
чет не могу написать системд-юнит для пгадмин4, может кто свой покажет?:)

Eugenia
29.05.2017
13:01:47
в pg_class поменяется relfilenode
Спасибо! Тогда другой вопрос. Рекомендуют выполнять добавление столбца с дефолтом в 2 операции: собственно добавление столбца без дефолта, а потом добавление дефолта в определение столбца. Дескать, это не вызывает физических изменений и не сказывается на производительности. В чем же отличие? В последнем случае туплы будут переноситься в отложенном режиме?

Darafei
29.05.2017
13:02:41
в старые записи не прожжётся дефолт, а останется нулл

Eugenia
29.05.2017
13:11:56
Ок, если тогда в старой записи устанавливается значение в новом столбце, изменения будут производиться в старом файле?

Darafei
29.05.2017
13:13:04
в постгресе не бывает "изменения", любое изменение - вставка и удаление

Google

Eugenia
29.05.2017
13:13:43
Вставка всегда в конец?
Существующего файла

Darafei
29.05.2017
13:15:03
по возможности на ту же страницу

Dmitry
29.05.2017
13:15:22
Вставка в место, помеченное свободным.

Darafei
29.05.2017
13:16:25
тут нужно различать два сценария - строка будет переписываться и строка не будет переписываться
всё остальное обычно непринципиальные детали

Dmitry
29.05.2017
13:17:11

Darafei
29.05.2017
13:18:35

Eugenia
29.05.2017
13:21:55
Где про такие тонкости можно почитать? в исходниках только?

Сергей
29.05.2017
13:26:51
Лекции можно послушать

Sergey
29.05.2017
13:28:00
Если хватит времени посмотреть то можно здесь https://www.youtube.com/watch?v=PTWk0SVKYOA&index=3&list=PLaFqU3KCWw6JgufXBiW4dEB2-tDpmOXPH

Eugenia
29.05.2017
13:29:37
Спасибо. Для 9.4 годно?

Dmitry
29.05.2017
13:29:58
Годно

Eugenia
29.05.2017
13:30:35
Всем большое спасибо!

Dmitry
29.05.2017
14:01:19
http://www.pgcon.org/2017/schedule/attachments/453_corruption-pgcon-2017.pdf

Mike Chuguniy
29.05.2017
14:11:04

Eugenia
29.05.2017
14:19:54

blkmrkt
29.05.2017
14:26:04

Pavel
29.05.2017
17:33:21
А что правда на постгресе лучше всего делать графовую БД ?

ღ.Leyla.ღ
29.05.2017
17:40:28
всем привет!

Google

ღ.Leyla.ღ
29.05.2017
17:40:33
как вы?

Fike
29.05.2017
17:47:06

Pavel
29.05.2017
17:47:23
Да нет, статья же была

Fike
29.05.2017
17:48:11
chances are что очень сильная неправда

Darafei
29.05.2017
17:49:07
а почему это может быть неправда?

Pavel
29.05.2017
17:49:23
Ну может кто копал глубже и разбирается в графовой информатике. Подробнее ответит

Fike
29.05.2017
17:49:30
потому что это реляционка, нет?

Darafei
29.05.2017
17:49:32
у меня графы в постгресе ворочались куда быстрее, чем в редисе :)

Fike
29.05.2017
17:49:52
редис тоже к ним особого отношения не имеет

Darafei
29.05.2017
17:50:05
а граф нельзя отобразить на объектно-реляционную структуру?

Fike
29.05.2017
17:50:20
эффективно - вряд ли

Darafei
29.05.2017
17:50:35
эффективно для какого применения?

Fike
29.05.2017
17:51:42
ходить по ребрам, вестимо

Darafei
29.05.2017
17:56:15
ну, вконтактовый граф с хождением по рёбрам у меня на лаптопе в обычной таблице с btree-индексами неплохо ворочается

Fike
29.05.2017
17:57:58
я не говорю, что это невозможно, я говорю, что движок затачивается под другие вещи. и рекомендация делать графовую бд на чем-то, когда есть вполне себе отдельно существующие графовые бд - это кхм странная рекомендация.

Pavel
29.05.2017
17:58:34
Ну вот в той статье утверждалось что их бд на основе постгреса уделала neo4j
Сильное утверждение, проверять его у меня нет скиллов.

Lev
29.05.2017
18:47:11
Всё зависит от метрик и от того, что требуется. Я тоже обрабатываю графы pgRouting'ом, но для продакшена есть гораздо более быстрые решения.

Артур
30.05.2017
07:37:59
Ни разу не писал сам триггеры. Но очень нравится то, что не надо писать доп. код в бэке.
Отсуда вопрос: использовать или нет триггеры при генерации содержимого VARACHAR поля.
Есть подозрение что это будет провоцировать дополнительную нагрузку. Но может я зря боюсь и PG это оптимизировал настолько, что разниц не заметна.
Как понимаете, выяснит, правильно ли я поступил, применив триггеры смогу только уже на продакшне.

Denis
30.05.2017
07:45:49

Google

Александр
30.05.2017
07:46:22

Denis
30.05.2017
07:46:32
Ещё на выражение

Артур
30.05.2017
07:46:33
на событие

Admin
ERROR: S client not available

Denis
30.05.2017
07:47:07
Но на событие не поможет обновить строки - оно не умеет old и new

Александр
30.05.2017
07:47:18
Понял, спасибо

Артур
30.05.2017
07:48:18
Denis то есть получается следующее. Триггеры применимы к таблицам, где обновление/добавление очень редко (по факту почти статические таблицы)
с точки зрения общего положительного эффекта

Denis
30.05.2017
07:48:44
В остальных случаях - пусть нужные данные пакетно вставляет запрос

Артур
30.05.2017
07:50:16
ясно. спасибо

Darafei
30.05.2017
09:18:01
ты не можешь читать из несконструированного тапла, да

Артур
30.05.2017
09:18:18
придется в select оборачивать?

Darafei
30.05.2017
09:19:12
да
или повторять кусочек

Igor
30.05.2017
09:19:32
жуть(
так расстраивает это

Google

Igor
30.05.2017
09:19:56
но, кстати, в GROUP BY / ORDER BY можно цифирки указывать

Denis
30.05.2017
09:20:20
Или вместо locality_type написать address_locality_type.title

Артур
30.05.2017
09:20:48
да
Спасибо, ато запутался немного. Потому что в MySQL можно так делать (хоть и строго слева на право)

Denis
30.05.2017
09:23:21

Артур
30.05.2017
09:23:45

Sergey
30.05.2017
12:28:45
А почему нельзя через oracle_fdw дважды проапдейтить строчку в рамках одной функции?
create or replace function check_fdw_serialization()
returns void AS
$$
DECLARE
ts_start timestamp;
BEGIN
/* fix on the oracle end the time of last update */
update ts_table set ts = clock_timestamp();
select pg_sleep(30); /* some work */
update ts_table set ts = clock_timestamp();
END;
$$
LANGUAGE 'plpgsql'
SECURITY DEFINER;
postgres=# select check_fdw_serialization();
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function check_fdw_serialization() line 8 at SQL statement
Time: 30020.336 ms
postgres=#

Anatoliy
30.05.2017
12:32:13
Ошибка то не о fdw у вас
Юзайте LANGUAGE SQL
Или вызывайте запросы по другому

Denis
30.05.2017
12:32:48
Напишите perform pg_sleep(30)

Sergey
30.05.2017
12:35:12
Это testcase. Вместо pg_sleep там pl/pgsql