
Artyem
05.09.2017
03:57:35
Добрый день, а не скажите, как вы констрейнты (если вы про внешние ключи, конечно) отключали? На сколько я знаю, в postgres нет отключения внешних ключей, там их можно только удалить и потом создать заново. Некоторое время назад делал утилиту для синхронизации схем MSSQL -> PostgreSQL, вот там было сложно именно с этим. Если у MSSQL можно было вырубить их командой, то для PostgreSQL пришлось делать запрос, который выводил DDL для манипулирования внешними ключами, потом убирать их (удалять), а по завершению - создавать.
https://postgrespro.ru/docs/postgrespro/9.5/sql-set-constraints позволяет отложить проверку до окончания транзакции

Alexandr
05.09.2017
04:00:52

Yura
05.09.2017
06:14:13
Кроме того, можно перевести коннект в режим репликации, и тогда ничего выполнятся не будет.

Sergey
05.09.2017
06:16:25

Google

Yura
05.09.2017
06:17:13
Ищу. Вылетело из головы.

Айтуар
05.09.2017
06:25:03
Добрый день, а не скажите, как вы констрейнты (если вы про внешние ключи, конечно) отключали? На сколько я знаю, в postgres нет отключения внешних ключей, там их можно только удалить и потом создать заново. Некоторое время назад делал утилиту для синхронизации схем MSSQL -> PostgreSQL, вот там было сложно именно с этим. Если у MSSQL можно было вырубить их командой, то для PostgreSQL пришлось делать запрос, который выводил DDL для манипулирования внешними ключами, потом убирать их (удалять), а по завершению - создавать.
Не было внешних ключей. Ну да, сначало удалил ограничения, потом когда удалил строки с null заново создал их.

Yura
05.09.2017
06:26:24
https://www.postgresql.org/docs/9.6/static/runtime-config-client.html#GUC-SESSION-REPLICATION-ROLE
set session_replication_role=replica; и ломай базу как хочешь.
(но только от суперюзера)

Sergey
05.09.2017
06:34:06
Спасибо, интересно.

Alexandr
05.09.2017
06:34:55

Mikhail
05.09.2017
11:34:53
Всем привет! Есть jsonb столбец. Можно ли найти пересечение json ключей у двух строк этой таблицы?

Dmitry
05.09.2017
11:37:08
двух конкретных строк?

Mikhail
05.09.2017
11:38:11

Dmitry
05.09.2017
11:39:02
ну или джоин на себя или просто подзапрос
ну и написать какую-нить хранимку для пересечения

Mikhail
05.09.2017
11:43:28
Так, а что писать в этой хранимке? Есть примеры как работать с jsonb в хранимке?

Google

Darafei
05.09.2017
11:44:19
так а что ты хочешь сделать? :)

Yuriy
05.09.2017
11:44:31

Mikhail
05.09.2017
11:44:33
Найти пересечение ключей :)

Darafei
05.09.2017
11:45:03
в https://www.postgresql.org/docs/9.6/static/functions-json.html всего достаточно

Dmitry
05.09.2017
11:45:11
да в общем не обязательно хранимку... но мне кажется нужно двигаться в направлении разворачивания json в строки и потом две таких "таблицы" SELECT ... INTERSECT

Darafei
05.09.2017
11:45:25
когда недостаточно, можно распаковать в таплы и обычным SQL

Mikhail
05.09.2017
11:46:03
Да, хранимку не желательно конечно, лучше запросом

Darafei
05.09.2017
11:46:28
a-(a-b) даст пересечение
чёрт, jsonb - jsonb нет

Mikhail
05.09.2017
11:47:00

Darafei
05.09.2017
11:48:16
select * from jsonb_object_keys(a) a, jsonb_object_keys(b) where a=b

Mikhail
05.09.2017
11:48:43

Darafei
05.09.2017
11:49:01
поровнять напильником, пока не заработает

Mikhail
05.09.2017
12:08:01

??Suffer
05.09.2017
12:34:13
Привет.
У меня на рабочем компьютере 16gb памяти и ssd который есть узким местом при запросах. Можно как-то заставить постгрес агресивней кешировать данные между запросами?
Данные одни и те же

Lev
05.09.2017
12:36:40
working mem какой стоит?

Sergey
05.09.2017
12:37:24
shared_buffers https://www.postgresql.org/docs/current/static/runtime-config-resource.html

Darafei
05.09.2017
12:37:36
если твой датасет меньше 16гб, то он просто системой поднимется в память

Google

Darafei
05.09.2017
12:37:53
если больше, то непонятно, что в память складывать

??Suffer
05.09.2017
12:41:43
Вся база 120гб, но нужные мне данные занимают примерно половину
max_connections = 10
shared_buffers = 5560MB
effective_cache_size = 7680MB
work_mem = 1256MB
maintenance_work_mem = 640MB
min_wal_size = 1GB
max_wal_size = 2GB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
Так work_mem или shared_buffers?

Anton [Mgn, az09@osm]
05.09.2017
12:42:20
оба два. и памяти побольше )

Darafei
05.09.2017
12:42:23

Alex
05.09.2017
12:43:07
может посмотреть почему на диск лезет ?

Darafei
05.09.2017
12:43:16
что ты туда закешируешь, чтобы не ходить за 60 гигами данных на диск? :)
если это аналитика и один запрос на всю машину, то смотреть в параллельность (ssd на параллельном чтении разгоняются быстрее)
быстрее 5 минут всё равно твои данные не прочитать

??Suffer
05.09.2017
12:48:07

Darafei
05.09.2017
12:48:50
а, машина для числодробления и для рисования окошек должна быть разной

Dmitry
05.09.2017
12:49:03
удали гигов 100 и можешь спокойно делать другие задачи ;)

Alex
05.09.2017
12:49:23
ну что то же пользует диск

Darafei
05.09.2017
12:49:38
А как?
explain / explain (analyze, verbose, buffers)

Ilya
05.09.2017
12:49:46

??Suffer
05.09.2017
12:50:11

Alex
05.09.2017
12:50:35
комплексное решение проблемы :)

Maksim
05.09.2017
12:51:16
можно и далее - применить патч Бармина

Google

??Suffer
05.09.2017
12:51:18
Мигрировать в mysql?

Ilya
05.09.2017
12:51:27
Вот!

Darafei
05.09.2017
12:51:42

Ilya
05.09.2017
12:51:44
Убер смигрировал в Мускул и счастлив. ?

Stas
05.09.2017
12:51:44

??Suffer
05.09.2017
12:51:53

Fike
05.09.2017
12:52:14

??Suffer
05.09.2017
12:52:40

Darafei
05.09.2017
12:52:53

Ilya
05.09.2017
12:53:14
Приходит молодой еврей к ребе:
- Ребе, ребе, что мне делать женится или нет?
Ребе:
- Женись.
- Но она страшная.
- Тогда не женись.
- Но у неё богатый отец.
- Тогда женись.
- Так что мне делать? Женится или нет?
- Слушай, а ты не думал принять православие?

Darafei
05.09.2017
12:53:38
ну и "16 гигов памяти и SSD" может быть и старым макбуком
и тогда это постгрес на маке

Stas
05.09.2017
12:54:11

Vadim
05.09.2017
12:55:29

Ilya
05.09.2017
12:55:34
а может быть и не SSD

??Suffer
05.09.2017
12:55:59

Darafei
05.09.2017
12:56:06
а в iotop что?

??Suffer
05.09.2017
12:56:18
postgres 99%

Darafei
05.09.2017
12:56:46
а в explain что?

Google

Darafei
05.09.2017
12:57:08

Alex
05.09.2017
12:57:47

Darafei
05.09.2017
12:59:51
нормальный десктоп тоже нормально стоит :)

??Suffer
05.09.2017
13:00:03
такс
А что порядок записи джойнов в запросе влияет на то как это будет делать постгрес?

Alex
05.09.2017
13:00:59
смотря какие условия джойнов еще

??Suffer
05.09.2017
13:02:05
Всем спасибо. Вопрос снят :)

Darafei
05.09.2017
13:02:44

??Suffer
05.09.2017
13:03:07
Лучше купить новый M.2 ssd или +48 памяти?

Darafei
05.09.2017
13:03:53
лучше научиться читать explain
и в целом оценивать асимптотическую сложность алгоритма / запроса

Mikhail
05.09.2017
13:04:55
и потом искать пересечение именно массивов

Dmitry
05.09.2017
13:08:08

Alex
05.09.2017
13:09:29

Darafei
05.09.2017
13:36:58