
Alexey
31.01.2018
15:09:32
можно будет вообще не рефлексировать

Alex
31.01.2018
15:09:36
прикольное преимущество у БД делать вещи правильно

Mike Chuguniy
31.01.2018
15:10:16

Alex
31.01.2018
15:10:39

Google

Mike Chuguniy
31.01.2018
15:10:49
Особенно correctly, когда экземпляр сынициализирован без чексумм.

Sergey
31.01.2018
15:13:45

Yaroslav
31.01.2018
15:16:17

Alex
31.01.2018
15:34:09
конференция близко, все разминаются видимо :)

Yaroslav
31.01.2018
15:54:10

Илья
31.01.2018
15:57:56
подскажите, а есть группировка, которая позводит собрать значения из столбца в массив?

Darafei
31.01.2018
15:58:04
array_agg

Илья
31.01.2018
15:59:11
сеньк, сам не нашёл в доке :(

Евгений
31.01.2018
16:24:28
Коллеги, подскажите, пожалуйста, есть таблица с двумя колонками № и Boolean. В номере есть дубликаты. Мне нужно убрать дубликаты, приоритет Boolean = true. Если вводных не хватает , напишите.

Darafei
31.01.2018
16:25:47
насколько велика и насколько можно лочить?
create table new_table as (select distinct on (num) * from ttt order by boolfield desc nulls last);

Google

Darafei
31.01.2018
16:27:03
и дропнуть и переименовать

Yaroslav
31.01.2018
16:27:06
и дропнуть и переименовать
Осторожно: это можно делать, если параллельно с ней никто не работает (ну это если Вам корректность результатов запросов к ней вообще важна).

Евгений
31.01.2018
16:30:27

Yaroslav
31.01.2018
16:31:47
Выбрать.
Если дубликатов на один номер немного, то DISTINCT ON, примерно как выше показали.

Евгений
31.01.2018
16:32:11

Yaroslav
31.01.2018
16:33:53
Я вижу, что здесь на один proc_number две записи. Если это в среднем так, опять-таки, см. выше.

Илья
31.01.2018
19:01:15
подскажите, плиз, в столбце находится jsonb массив объектов key:value, т.е. [{key1":"value1"},{{key2":"value1"}]. как можно их агрегировать в один массив уникальных объектов? jsonb_agg делает массив массивов

Yaroslav
31.01.2018
19:09:56

Илья
31.01.2018
19:12:14
[{key1":"value1"},{key2":"value1"}] + [{key1":"value1"},{key3":"value3"}] результат должен быть [{key1":"value1"},{key2":"value1"},{key3":"value3"}] не важно jsonb или array

Max
31.01.2018
19:24:32
Что лучше использовать как PK, обычное инкрементное поле или uuid?

Anton [Mgn, az09@osm]
31.01.2018
19:29:15
три "не" в одном ответе. это личный рекорд!)

Yaroslav
31.01.2018
19:33:05
[{key1":"value1"},{key2":"value1"}] + [{key1":"value1"},{key3":"value3"}] результат должен быть [{key1":"value1"},{key2":"value1"},{key3":"value3"}] не важно jsonb или array
— То есть что-то типа такого?
WITH a(j) AS (
VALUES ('[{"key1":"value1"},{"key2":"value1"}]'::jsonb), ('[{"key1":"value1"},{"key3":"value3"}]')
), grouped AS (
SELECT kv.key, kv.value
FROM a
CROSS JOIN jsonb_array_elements(a.j) AS v(v)
CROSS JOIN jsonb_each(v.v) AS kv(key, value)
GROUP BY kv.key, kv.value
)
SELECT jsonb_agg(jsonb_build_object(key, value))
FROM grouped


Сергей
31.01.2018
19:35:32
Правдиво ли моё утверждение что uuid не особо хорош из-за чуть более медленная вставка в индекс так как вставка будет проходить не в конец дерева а в середину из-за этого будет ребаланс?
Хотя и в конец тоже ребаланс

Max
31.01.2018
19:37:24
@az09_mgn, Yaroslav, понял, спасибо за ответы

Yaroslav
31.01.2018
19:37:25

Google

Сергей
31.01.2018
19:38:26

Evgeniy
31.01.2018
19:38:35

Yaroslav
31.01.2018
19:38:36
Это хреновая секретность.

Илья
31.01.2018
20:00:21
— То есть что-то типа такого?
WITH a(j) AS (
VALUES ('[{"key1":"value1"},{"key2":"value1"}]'::jsonb), ('[{"key1":"value1"},{"key3":"value3"}]')
), grouped AS (
SELECT kv.key, kv.value
FROM a
CROSS JOIN jsonb_array_elements(a.j) AS v(v)
CROSS JOIN jsonb_each(v.v) AS kv(key, value)
GROUP BY kv.key, kv.value
)
SELECT jsonb_agg(jsonb_build_object(key, value))
FROM grouped
спасибо. пока развернул значения при помощи jsonb_array_elements, а затем уже использовал jsonb_agg. Жаль сразу нельзя, select from select городить пришлось

Vadim
31.01.2018
20:24:13

Сергей
31.01.2018
20:24:37
о спасибо большое !

Alex
31.01.2018
20:58:40
https://blog.2ndquadrant.com/on-the-impact-of-full-page-writes/
Есть ещё вот такая проблема
Вообще это в духе пг написать что такой присяд по перформансу будет ойойой, но вы параметр этот не троньте тк пг будет немного поломан если чо, но мы его для удобства уничтожения вашей БД вынесли в guc.
А потом появляются админы в слезах , такие что fsync и этот fullpage выключают тк пг с нагрузкой не справился изза тогоже write amplification, но ручки покрутить дают и статьи провокационные пишут.
А то что не дают поменять прям в коде definами намазывают иногда ,обосновывая принципом бабка надвое сказала и нефиг лезть в наш мир высоких нагрузок, созданных pgbench на ноутбуке, хотя вреда с этих definов в виде guc гораздо меньше будет, а толку в тюнинге может и поболее будет.


Yaroslav
31.01.2018
21:11:36
Вообще это в духе пг написать что такой присяд по перформансу будет ойойой, но вы параметр этот не троньте тк пг будет немного поломан если чо, но мы его для удобства уничтожения вашей БД вынесли в guc.
А потом появляются админы в слезах , такие что fsync и этот fullpage выключают тк пг с нагрузкой не справился изза тогоже write amplification, но ручки покрутить дают и статьи провокационные пишут.
А то что не дают поменять прям в коде definами намазывают иногда ,обосновывая принципом бабка надвое сказала и нефиг лезть в наш мир высоких нагрузок, созданных pgbench на ноутбуке, хотя вреда с этих definов в виде guc гораздо меньше будет, а толку в тюнинге может и поболее будет.
Дело в том, что любая СУБД, которая использует WAL (т.е. чуть менее чем все существующие) должна исполнять такие "танцы" (если только FS не танцует их сама), иначе она не durable.
Так что... какие претензии-то?

Alex
31.01.2018
21:12:58

Yaroslav
31.01.2018
21:14:17
А если я быстро хочу сделать начальную загрузку данных, а если что не так —- снесу кластер и повторю ещё раз?
Почему Вы у меня хотите эту возможность отобрать?

Alex
31.01.2018
21:14:26
а вот такое что ой такой классный параметр но пг без него консервная банка - это лукавство

Yaroslav
31.01.2018
21:17:10

Alex
31.01.2018
21:17:21

Yaroslav
31.01.2018
21:18:19

Alex
31.01.2018
21:20:37
Так же вот даже из этой статьи изречение-
8kB and 4kB pages - (which requires compiling a custom package). but reduction from ~140GB to ~90GB is still quite significant.

Yaroslav
31.01.2018
21:21:20
Выключать (очепятался).

Alex
31.01.2018
21:21:31
Иии? Где та ручка насчет поменять размер блока?
Но есть ручка - eatmydata

Google

Alex
31.01.2018
21:21:54
Логика не очень на мой взгляд

Yaroslav
31.01.2018
21:22:31

Alex
31.01.2018
21:23:54
Сейчас вот тесты некоторые делаю - там вот например запись WAL свыше гигабайта в секунду, была бы ручка было бы меньше
Размер вал файла тоже уже коммуна обсуждает давно
Много есть чего. Я понимаю что выключение этих параметров позволит быстрее загрузит данные, но:
Но их в основном начинают использовать не для массовой загрузки а потому что сервер быстрее начинает работать.
Вот это высказывание тоже интересное-
But even if it’s still an issue, data checksums may be sufficient protection (it won’t fix the issue, but will at least let you know there’s a broken page).
Да вы знаете что страница битая и при этом не имеете возможность эту страницу из бекапа или с реплики восстановить , переключаетесь на реплику, заливаете старый мастер и пока он заливается пальцы крестиком

Yaroslav
31.01.2018
21:30:49

Alex
31.01.2018
21:32:01

Yaroslav
31.01.2018
21:32:02

Alex
31.01.2018
21:37:13

Yaroslav
31.01.2018
21:38:46

Alex
31.01.2018
21:40:38
Вот эта мысль тоже интересная - So it’s important to tune checkpoints not to happen too often.
При этом про портянку из wal файлов уже никакими барьерами не контролируемую при этом ни слова.

Yaroslav
31.01.2018
21:42:39
Но посыл-то правильный, а статья совсем не об этом. ;)

Kirill
01.02.2018
05:55:14
https://techno.2gis.ru/event/postgresqlday Брюс Момжан в Новосибирске, 12 февраля

Vladislav
01.02.2018
08:07:58
В чем проблема, кто подскажет?

Sergey
01.02.2018
08:09:43
Пытаетесь много раз выбрать count(*) из таблицы J

Google

Andrey
01.02.2018
08:09:58
http://www.letmegooglethat.com/?q=ORA-00942

Sergey
01.02.2018
08:11:33
а нужно в духе https://docs.oracle.com/cloud/latest/db112/LNPLS/dynamic.htm#LNPLS01108

Andrey
01.02.2018
09:14:33
Я уже плохо помню plsql, но кажется вам надо использовать динамический sql.
И потом неясно, КУДА вы выбираете.

Михаил
01.02.2018
10:25:50
"j" здесь - не таблица, из нее нельзя сделать select. j в цикле for - это строка (1 запись) таблицы (точнее, dictionary, но не важно) user_tables со всеми соответствующими полями (j.table_name, j.iot_name). Если задача посчитать там записи (select count(*), то цикл вообще не нужен, цикл нужен для работы с полями внутри каждой отобранной записи. Какая вообще задача-то?
про j.iot_name я загнул (выбирается только table_name), но сути, опять же, не меняет

Yaroslav
01.02.2018
10:31:26

Михаил
01.02.2018
10:35:06
Что ж теперь, и на вопрос не отвечать?
Тем более, что логика plsql и plpgsql во многом схожа

Yaroslav
01.02.2018
10:40:27

Михаил
01.02.2018
10:54:58
Но вообще, там вяленько, народу мало

Anton [Mgn, az09@osm]
01.02.2018
11:02:16
вяленько - в https://t.me/mssql_ru ?

Vladimir
01.02.2018
11:17:33
Всем доброго времени суток! Не мог бы кто-нибудь подсказать новичку по апдейту множества ключей jsob в одном запросе:
к примеру есть запись - id | payload | status
3 | {"DialogID": 8, "TotalDuration": 3} |4
Я хочу сделать update сразу для "DialogID" и для "TotalDuration" - возможно ли это? Нужно использовать jsonb_set или что-то другое? Заранее спасибо за ответ!