@pgsql

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

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

Mike Chuguniy
31.01.2018
15:10:16
еще "PostgreSQL always does things correctly!"
Читая это где-то тут плачет один несчастный человек, ага.

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

Sergey
31.01.2018
15:13:45
Администрировать мыскль проще?! Это серьёзно?! Годный заход, да...
Это моё личное мнение, и я никоим образом его не навязываю. Вполне допускаю, что это самое мнение окружающие могут считать ошибочным - у меня не подгорит.

Yaroslav
31.01.2018
15:16:17
Особенно correctly, когда экземпляр сынициализирован без чексумм.
Я с некоторых пор всегда инициализирую с ними. И да, лучше бы это было по умолчанию.

Alex
31.01.2018
15:34:09
с мыскля на постгрес и говорить о выгоде?! о_О
можно еще производительность обсудить )

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

Yaroslav
31.01.2018
15:54:10
еще "PostgreSQL always does things correctly!"
А это откуда (просто любопытно)?

Илья
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, примерно как выше показали.

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

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

Илья
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
Что лучше использовать как PK, обычное инкрементное поле или uuid?
абсолютно точного ответа не существует. мне uuid не нравится, но где-то инкремент не вариант вообще

три "не" в одном ответе. это личный рекорд!)

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

Что лучше использовать как PK, обычное инкрементное поле или uuid?
По-моему, обычное инкрементное поле в большинстве случаев. UUID можно добавить и потом, если он понадобится для обмена с другими системами или чего-то подобного.

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

Хотя и в конец тоже ребаланс

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

Yaroslav
31.01.2018
19:37:25
Правдиво ли моё утверждение что uuid не особо хорош из-за чуть более медленная вставка в индекс так как вставка будет проходить не в конец дерева а в середину из-за этого будет ребаланс?
Конечно правдиво. И главное тут не ребаланс, а то, что serial всегда вставляется в последнюю страницу индекса, а вот UUID —- в случайную. Enters the cache. :(

Google
Evgeniy
31.01.2018
19:38:35
Что лучше использовать как PK, обычное инкрементное поле или uuid?
если хочется и последовательности и секретности или отсутствия координации, то ulid можно взять

Yaroslav
31.01.2018
19:38:36
@az09_mgn, Yaroslav, понял, спасибо за ответы
Рассчитывайте, что по совокупности факторов UUIID может быть медленее раз в 40 (навскидку, но где-то я эту цифру видел).

Это хреновая секретность.

Илья
31.01.2018
20:00:21
Сергей
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. Так что... какие претензии-то?

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

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

Yaroslav
31.01.2018
21:17:10
а вот такое что ой такой классный параметр но пг без него консервная банка - это лукавство
Где Вы это вычитали? Кто его рекомендует на prod-е включать "просто так"? Кстати, по идее, есть FS (ZFS?), на которых он не нужен.

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

Yaroslav
31.01.2018
21:18:19
это не возможность а лишний повод показать что пг не так хорош по перформансу когда он таки начинает ACID делать
Ещё раз: _любая_ база должна это делать, иначе она не ACID. Так что все здесь в равных условиях, нет?

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
Но есть ручка - eatmydata
Это не "eatmydata". Я Вам уже назвал 2 причины её существования.

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).

Да вы знаете что страница битая и при этом не имеете возможность эту страницу из бекапа или с реплики восстановить , переключаетесь на реплику, заливаете старый мастер и пока он заливается пальцы крестиком

Alex
31.01.2018
21:32:01
Ну кто-то и с fsync=off наперевес бегает. ;)
Конечно, основной посыл быстрее.

Alex
31.01.2018
21:37:13
Кто Вам мешает делать свои сборки (пакеты)? У этого, кстати, есть и другие преимущества (вроде возможности тут же применить bugfix для именно Вашей проблемы, до release-а).
Это не мешает делать тому, кто знает и понимает что и где делать, для простых пользователей ПГ это не так доступно во первых, а во вторых за использование кастомных пакетов можно и получить по шапке случись чего

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), но сути, опять же, не меняет

Михаил
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 или что-то другое? Заранее спасибо за ответ!

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