@pgsql

Страница 256 из 1062
Dmitrii
28.02.2017
12:52:14
> Pavel Golub removed Yet Another Stats ?

Аггей
28.02.2017
13:25:43
> Pavel Golub removed Artur Alimgulov

Pavel
28.02.2017
13:26:34
> Pavel Golub removed Artur Alimgulov
Да, слушаю вас внимательно

Аггей
28.02.2017
13:27:09
Просто предсказываю логичный шаг - бороться с причиной, а не следствием

Google
Pavel
28.02.2017
13:27:30
Так уже ?

Alexander
28.02.2017
16:26:56
господа, а у кого-нибудь под рукой есть какой-нибудь готовый инструмент, способный разложить всю базоньку на кучу отдельных ddl'ных sql'ек, а не в один файл дампа всего ddl за раз?

lemi
01.03.2017
07:32:06
а нельзя просто после дампа разбить любой утилитой по знаку ";" ?

Darafei
01.03.2017
07:33:24
нет, конечно

как минимум по ';\n', и то, если в данных такого нет

lemi
01.03.2017
07:35:14
;\n - это если тексты храничть в БД

вряд ли таких таблиц огромно количество

банально разбиваем на файлы делаем cat *.sql > out.sql Запускаетм out.sql локально смотрим если нет ошибок значит все хорошо

я вот точно знаю что Jdbc Драйвер делит по точке с запятой запросы

Pavel
01.03.2017
07:47:18
Google
lemi
01.03.2017
07:47:37
счас проверим

даже интересно стало

Akzhan
01.03.2017
07:47:54
а что там проверять, никто не делит просто по ;

lemi
01.03.2017
07:47:57
я как давно исходники драйвера ковырял

Anton
01.03.2017
07:48:01


Оффтопик :)

Pavel
01.03.2017
07:48:33
DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$;

И вот еще пример живой

Тут вообще бесполезно. Тут нужен парсер полноценный

Akzhan
01.03.2017
07:50:06
+

lemi
01.03.2017
07:56:43
Таще таки да парсер в jdbc встроенный

и выполняются запросы отдельно

Артур
01.03.2017
08:40:11
Вопрос. Как написать запрос, чтобы индекс не дублировался Проще говоря при выполнении CREATE INDEX CONCURRENTLY on mods_monitoring (md); CREATE INDEX CONCURRENTLY on mods_monitoring (md); Создается 2 идентичных индекса

Andrey
01.03.2017
08:41:03
Явно указывать имя, например.

Darafei
01.03.2017
08:41:38
указывать имя и if not exists

Артур
01.03.2017
08:42:42
ясно. благодарю. я чегой-то никогда особо не заморачивался с именами. Оказывается зря

ещё вопрос. при удалении индекса - есть возможность указать удалять каскадно. Я мозгом том то понимаю что он не будет удалять данные (теоретически), но тогда зачем параметр cascade?

Артур
01.03.2017
08:47:51
то есть по дефолту нужно каскад добавлять в конце?

нужно = рекомендуется

Google
Pavel
01.03.2017
08:49:07
нужно = рекомендуется
Исходя из задачи и модели вашей

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode); Создаст системный индекс по двум полям

Системный = автоматически создаст

Артур
01.03.2017
08:51:10


хе

доку не ту смотрю в 9.1 нет

lemi
01.03.2017
08:52:06
посвежее доки открой

9.5 например

Артур
01.03.2017
08:53:08


Еще вопрос, который крутится со вчерашнего дня. Почему бы не указывать при создании индекса всегда CONCURRENTLY Есть радикальные отличия, кроме блокировки таблицы?

Darafei
01.03.2017
08:54:44
работает медленнее

Артур
01.03.2017
08:55:32
То есть на продакшне обязательно чтобы параметр был, а вот в локали - лучше, чтобы не был.

Артур
01.03.2017
08:55:36
Правильно?

Артур
01.03.2017
08:57:23
Я с транзакциями не работал. Как понял это что-то типа отложенных запросов и пока не понял как их юзать, даже не лез

Ну как бы раз не понимаю - не использую ?

Айтуар
01.03.2017
08:59:18
А щас будет вопрос - А что такое атомарность? ))

Pavel
01.03.2017
08:59:33
Тогда сразу и консистентность ))

Артур
01.03.2017
08:59:33
))) неа.

Google
lemi
01.03.2017
08:59:40
concurently работает в два прохода, сначала по записям которые не залочено, потом ждет пока освобоодятся залоченные чтобы доделать т.е. будет ждать пока все транзакции который держат локи на записях не отработают те дольше чем обычный

https://ru.wikipedia.org/wiki/ACID

Айтуар
01.03.2017
09:00:03
Pavel
01.03.2017
09:00:36
Или так ? но можно напугать

Артур
01.03.2017
09:00:46
А щас будет вопрос - А что такое атомарность? ))
Если конечно ничем не отличается от понятия в программировании. Операция, которая либо выполняется, либо нет (если кратко)

Артур
01.03.2017
09:02:16
верно. Проще говоря - либо return true и сохранение, либо false и ничего

Admin
ERROR: S client not available

Vadim
01.03.2017
09:02:49
https://blog.2ndquadrant.com/create-index-concurrently/

Артур
01.03.2017
09:03:30
Тогда сразу и консистентность ))
А вот это как-бы эволюционно дохожу, но детально никогда не ковырял. Целостность же сейчас обеспечивается связями и гарантией СУБД о том, что данные не сотрутся при крахе системы

https://blog.2ndquadrant.com/create-index-concurrently/
За это спасибо, сегодня почитаю

Vadim
01.03.2017
09:05:01
За это спасибо, сегодня почитаю
Не за что. CONCURRENTLY не всегда может завершиться успешно. Вообще статья интересная

Артур
01.03.2017
09:06:22
Я как понимаю - атомарность в бд очень хороша при фин операциях, когда важно исполнение действия в комплексе какой-то обработки. И если обработка где-то каюкнулась, то нужен откат всех измнеений совершенных ими.

Верно?

lemi
01.03.2017
09:09:51
это самый распростаненный пример

с одного счета снять на другой положить общая сумма до и после должна остаться такой же вне зависимости от успешности завершения процедуры

Kirill
01.03.2017
09:13:56
про транзакции https://www.youtube.com/watch?v=QU2PVSnBGEY&index=2&list=PLaFqU3KCWw6JgufXBiW4dEB2-tDpmOXPH

Артур
01.03.2017
09:14:10
В ACID - за Durability отвечает postgres. Или разрабу тоже думать надо?

lemi
01.03.2017
09:16:01
если не autocommit=true То разрабу тоже

Google
lemi
01.03.2017
09:16:15
по необходимости

Артур
01.03.2017
09:17:16
Ну судя по тому что опция существует, наверное автокоммит порой отключают :)

Kirill
01.03.2017
09:17:54
автокомит тут ни при чём

lemi
01.03.2017
09:18:36
автокомит тут ни при чём
разрабу тоже думать надо?

Akzhan
01.03.2017
09:18:56
?

Kirill
01.03.2017
09:19:13
при определенной ловкости можно настроить постгрес что он будет гарантировать: * что данные попали в кэш ос * данные попали на диск * данные попали на диск и среплицировались на другой сервер

Darafei
01.03.2017
09:19:47
все забывают про часть "или говорить, что не попали"

Артур
01.03.2017
09:20:04
Ну так долговечность подразумевает отключение электроэнергии например или крах системы.

Sergey
01.03.2017
09:20:08
Артур
01.03.2017
09:20:15
То есть мгновенное прерывание операций с БД

Артур
01.03.2017
09:21:12
Получается что, если транзакция попала в БД, за остальное отвечает СУБД. А не попасть она может только если бэкенд не смог отправить информацию

Тут я как понимаю накопление информации выполняется.

Но ведь в идеале (не факт конечно) легче развернуть бд рядом с бэкендом для накопительных оопераций и еее синхронизировать с основной бд

Или я не прав?

есть же синзронизация в постгрис

сейчас почитал - репликация по научному :)

Kirill
01.03.2017
09:27:06
нет, обычно, если приблизительно, то СУБД ведут журнал транзакций на случай сбоя, вот можно настроить чтоб commit отдавал ок только тогда когда данные были записаны (с вариантами) или не записаны (сбрасываются на диск пачками) и в последнем случае вы получаете ок, но уходите по питанию и все, даных нет

сейчас почитал - репликация по научному :)
она нужна для защиты от аппаратного сбоя

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