
Alex
07.09.2017
18:34:46
о чем и речь

Igor
07.09.2017
18:34:47
теперь нужно убить будет этот дэфолтный кластер, спасбо за помощь!
о чем и речь
я думал если полностью стопанул кластер, то к его конфигу уже не буде обращения и т.д.

Mikhail
07.09.2017
19:27:40
Скажите, а запросы которые я делаю в pqsql они автоматом становятся prepared, или лучше их подготавливать?

Google

Stepan
07.09.2017
19:33:54
Здравствуйте, я впервые работаю с большими базами.
У меня сейчас есть база доменных имён (три столбца: id, имя, зона)
Я добавил в базу ~44 миллиона записей.
Теперь строю индексы:
По зонам индекс на хеше ( данные можно востановить из другого источника, поэтому потери я не боюсь.
По доменам, поскольку мне надо извлекать интервалы командой between - на деревьях.
Серввер: 32 GB RAM, 8 cores Intel Xeon CPU, 500GB SSD.
Кто-нибудь знает, сколько это примерно может занять времени?( часы, десятки часов, дни недели)


عاصم بن حارث
07.09.2017
19:36:15
Здравствуйте, я впервые работаю с большими базами.
У меня сейчас есть база доменных имён (три столбца: id, имя, зона)
Я добавил в базу ~44 миллиона записей.
Теперь строю индексы:
По зонам индекс на хеше ( данные можно востановить из другого источника, поэтому потери я не боюсь.
По доменам, поскольку мне надо извлекать интервалы командой between - на деревьях.
Серввер: 32 GB RAM, 8 cores Intel Xeon CPU, 500GB SSD.
Кто-нибудь знает, сколько это примерно может занять времени?( часы, десятки часов, дни недели)
а экспайн по запросу, что тебе говорит? оценивал?

Darafei
07.09.2017
19:38:19
44 миллиона - это не большая база
hash выкинь

عاصم بن حارث
07.09.2017
19:40:06
опа! не успел про хэш отпечатать )))

Darafei
07.09.2017
19:54:29
Импорт такого должен занять десятки минут в худшем случае

Stepan
07.09.2017
19:55:08
Спасибо.
EXPLAIN - На индексах не работает, насколько я знаю.
EXPLAIN CREATE INDEX ON domains (name);
ERROR: syntax error at or near "INDEX"
LINE 1: EXPLAIN CREATE INDEX ON domains (name);
https://stackoverflow.com/questions/34032896/postgresql-probabilities-explain-on-create-index
Насчет хеша:
1) Чем он мне грозит, кроме меньшей безопасности данных?
2) Какой лучше использовать на 44 миллионах записей из которых уникальны ~ 100? ( Насколько я понимаю, если вынести их в отдельную таблицу и доставать с помощью JOIN по id - будет медленнее )

Darafei
07.09.2017
19:56:00
Всегда btree вместо hash

Stepan
07.09.2017
19:56:37
Или GIN? Если да, то какой именно?

Darafei
07.09.2017
19:57:36
А как ты gin создашь по этим данным?

Maksim
07.09.2017
19:58:27


Stepan
07.09.2017
20:06:07
>Импорт такого должен занять десятки минут в худшем случае.
Перед импортом я дропнул хеши. Индекс строится уже часа 3. Диск правда грузится, база растёт на несколько мегабайт в час. Поскольку управляю всем из питона (sqlalchemy), то не могу понять толи проблема в питоне, толи в том, что они и должны так строится.
>А как ты gin создашь по этим данным?
CREATE INDEX idx_domains_name ON domains USING gin(name);
Или тут подвох?
Насколько я знаю GIN полнотекстовый, т.е. сомневаюсь, что он оптимален здесь.

Google

Stepan
07.09.2017
20:06:47
*база растёт на несколько мегабайт в час.
В час на пару десятков ( после первого часа)

Darafei
07.09.2017
20:08:03
Хеш не работает, выбрось и замени btree
gin нужен правильный opclass
Чтобы было, что инвертировать

Stepan
07.09.2017
20:16:38
Спасибо. Просто для справки: хеш это индекс, который вообще не построить на большой таблице? ( в документации сказано только про то, что это не безопасно для данных)
>gin нужен правильный opclass
>Чтобы было, что инвертировать
Я и пришел к выводу, что если в базе нет имён доменов больше 7ми символов и я выполняю Beetween на 40 строк, GIN - не нужен.
Убираю хеш, отпишу результат.
Я правильно понимаю, что если такой индекс строится часами, то что-то не так?
Огромное спасибо. Проблема была в хешах.
Всё построилось

عاصم بن حارث
07.09.2017
21:20:05
??

Marat
08.09.2017
03:23:50
Привет.
Подскажите пожалуйста, почему не используются индексы.
Есть таблицы phone_numbers и locations,
есть колонки с типом tsvector по которым необходимо производить поиск по тексту.
если есть OR, как в примере запроса ниже, то индексы не используются
SELECT * FROM phone_numbers
JOIN locations ON phone_numbers.location_id = locations.id
WHERE locations.searchable_vector @@ to_tsquery('mos:*') OR phone_numbers.searchable_vector @@ to_tsquery('205');
индексы
CREATE INDEX phone_numbers_search_vector_index
ON public.phone_numbers
USING gin
(searchable_vector);
CREATE INDEX locations_search_vector_index
ON public.locations
USING gin
(searchable_vector);

Алексей
08.09.2017
03:32:28
Не большой спец в постгре - но может вместо OR сделать 2 запроса и объединить результат через UNION ALL?
Тогда и индексы должны работать

Denis
08.09.2017
06:13:26
я вчера собрал из последней ревизии pgadmin4 в режиме приложения и сегодня пробовал в нем работать. итог - на текущий момент оно сырое, неудобное и тяжелое. из забавных особенностей - нельзя открывать папки с кириллическими именами, не работает autorollback (хорошо, что отключение autocommit работает нормально), нет кнопок commit/rollback (только командами), автодоплнение работает только в uppercase, принудительно перевести в нижний регистр функции нет. Ну и завелось оно только после небольших правок сишной части проекта (проброс виртуального окружения болеет, но в redmine есть задача переписать эту часть кода). Как итог, я сильно сомневаюсь, что pgadmin4 будет готов для нормального использования к выходу десятки.


Артур
08.09.2017
08:39:48
Всем привет. Вопрос: "как поступить лучше - в отдельные схемы или всё оставить в схеме public?"
Есть у меня следующие
Финансвоая часть. Полностью изолированные 4 таблицы, отвечающие только за движение средств. Не связаны ни с чем кроме как между собой
Картотека. Полностью изолированные 3 таблицы, отвечающие за информацию о пользователе. Такие сущности как контактные данные, телефоны, юр/физ лицо, день рождения и прочее
Пользователи: Полностью изолированные 6 таблиц, отвечающие за информацию по авторизации.
Адресная база: Полностью изолированные 8 таблиц, содержащие информацию об адресах
Таких групп таблиц более 10 и каждая отвечает за какую либо самостоятельную логику у каждой есть процедуры, вьюхи для распределения прав на основе роли пользователя в БД
Также есть таблицы многие кол многим для связи этих групп таблиц.
Дикое желание сделать по схеме на каждую группу таблиц. Провести рефакторинг процедур, перенеся туда изолированные. В паблике оставить только таблицы многие ко многим и общие процедуры.
Но:
а) многие фреймворки не умеют кастомно работать со схемами.
б) не знаю насколько это плохо со стороны архитектуры


Pavel
08.09.2017
08:41:52
Всем привет. Вопрос: "как поступить лучше - в отдельные схемы или всё оставить в схеме public?"
Есть у меня следующие
Финансвоая часть. Полностью изолированные 4 таблицы, отвечающие только за движение средств. Не связаны ни с чем кроме как между собой
Картотека. Полностью изолированные 3 таблицы, отвечающие за информацию о пользователе. Такие сущности как контактные данные, телефоны, юр/физ лицо, день рождения и прочее
Пользователи: Полностью изолированные 6 таблиц, отвечающие за информацию по авторизации.
Адресная база: Полностью изолированные 8 таблиц, содержащие информацию об адресах
Таких групп таблиц более 10 и каждая отвечает за какую либо самостоятельную логику у каждой есть процедуры, вьюхи для распределения прав на основе роли пользователя в БД
Также есть таблицы многие кол многим для связи этих групп таблиц.
Дикое желание сделать по схеме на каждую группу таблиц. Провести рефакторинг процедур, перенеся туда изолированные. В паблике оставить только таблицы многие ко многим и общие процедуры.
Но:
а) многие фреймворки не умеют кастомно работать со схемами.
б) не знаю насколько это плохо со стороны архитектуры
Схемы помимо разделения несвязанных обхектов упрощают управления правами на объекты схемы. Со стороны архитектуры выглядит изящно. Фреймворки, которые не умеют работать со схемами, должны быть покрашены в зеленый цвет и выброшены в траву


Артур
08.09.2017
08:43:35

Pavel
08.09.2017
08:43:52


Айтуар
08.09.2017
08:45:26
Всем привет. Вопрос: "как поступить лучше - в отдельные схемы или всё оставить в схеме public?"
Есть у меня следующие
Финансвоая часть. Полностью изолированные 4 таблицы, отвечающие только за движение средств. Не связаны ни с чем кроме как между собой
Картотека. Полностью изолированные 3 таблицы, отвечающие за информацию о пользователе. Такие сущности как контактные данные, телефоны, юр/физ лицо, день рождения и прочее
Пользователи: Полностью изолированные 6 таблиц, отвечающие за информацию по авторизации.
Адресная база: Полностью изолированные 8 таблиц, содержащие информацию об адресах
Таких групп таблиц более 10 и каждая отвечает за какую либо самостоятельную логику у каждой есть процедуры, вьюхи для распределения прав на основе роли пользователя в БД
Также есть таблицы многие кол многим для связи этих групп таблиц.
Дикое желание сделать по схеме на каждую группу таблиц. Провести рефакторинг процедур, перенеся туда изолированные. В паблике оставить только таблицы многие ко многим и общие процедуры.
Но:
а) многие фреймворки не умеют кастомно работать со схемами.
б) не знаю насколько это плохо со стороны архитектуры
Только учти, если количество схем будет сотни сам потом замучаешься.


Артур
08.09.2017
08:48:44

Google

Айтуар
08.09.2017
08:50:13
Эм... чем замучаюсь?
Поддерживать весь зоопарк схем. Если их 10-20 то ещё норм, а вот если сотня - у тебя даже дапм тормозить будет.

Артур
08.09.2017
08:51:09
Хм. А дамп на больше чем 500 таблиц быстрее будет.
И потом, когда дело касается прав, обычный дам уже не пашет нормально. Приходится юзать pg_dumpall. Но (как мне кажется) он работает несколько иначе, чем простая генерация SQL кода.

Айтуар
08.09.2017
08:56:42

Артур
08.09.2017
08:56:59

Айтуар
08.09.2017
08:57:02

Петр
08.09.2017
08:59:17
Пакеты нужны, чтобы не городить огород из схем

Артур
08.09.2017
09:27:21
То есть для установки конечно норм. Но получается для доработки ужно изолированно базу поднимать, а потом выгрузку пакета делать

Петр
08.09.2017
09:35:14
надо, чтобы пакеты были из коробки

Darafei
08.09.2017
09:36:43
...пакет с пакетами из коробки...

Mike Chuguniy
08.09.2017
09:41:01
народ, а что за пакеты имеются в виду? Прошу прощения за идиЁЦЦкий вопрос.


Kirill
08.09.2017
09:41:41
Всем привет. Вопрос: "как поступить лучше - в отдельные схемы или всё оставить в схеме public?"
Есть у меня следующие
Финансвоая часть. Полностью изолированные 4 таблицы, отвечающие только за движение средств. Не связаны ни с чем кроме как между собой
Картотека. Полностью изолированные 3 таблицы, отвечающие за информацию о пользователе. Такие сущности как контактные данные, телефоны, юр/физ лицо, день рождения и прочее
Пользователи: Полностью изолированные 6 таблиц, отвечающие за информацию по авторизации.
Адресная база: Полностью изолированные 8 таблиц, содержащие информацию об адресах
Таких групп таблиц более 10 и каждая отвечает за какую либо самостоятельную логику у каждой есть процедуры, вьюхи для распределения прав на основе роли пользователя в БД
Также есть таблицы многие кол многим для связи этих групп таблиц.
Дикое желание сделать по схеме на каждую группу таблиц. Провести рефакторинг процедур, перенеся туда изолированные. В паблике оставить только таблицы многие ко многим и общие процедуры.
Но:
а) многие фреймворки не умеют кастомно работать со схемами.
б) не знаю насколько это плохо со стороны архитектуры
В oracle схемы именно так и работают. Но в postgres'e схемы это скорее package, они не предназначены для изоляций. Можно конечно извратиться и использовать search path, но если реально разные не связанные сущности, то можно разделить вообще на разные базы


raksita
08.09.2017
10:30:49
я вчера собрал из последней ревизии pgadmin4 в режиме приложения и сегодня пробовал в нем работать. итог - на текущий момент оно сырое, неудобное и тяжелое. из забавных особенностей - нельзя открывать папки с кириллическими именами, не работает autorollback (хорошо, что отключение autocommit работает нормально), нет кнопок commit/rollback (только командами), автодоплнение работает только в uppercase, принудительно перевести в нижний регистр функции нет. Ну и завелось оно только после небольших правок сишной части проекта (проброс виртуального окружения болеет, но в redmine есть задача переписать эту часть кода). Как итог, я сильно сомневаюсь, что pgadmin4 будет готов для нормального использования к выходу десятки.
у bigsql есть форк pgadmin3 с пометкой LTS: поддержка 9.6 и 10, отдельно скачать нельзя, но можно взять бинарник из установленной сборки


Andy
08.09.2017
10:35:54
Добрый день!
Больше месяца работала реплика, wal_keep_segments на мастере 128
Вчера ночью вдруг начала писать, что нужный фрагмент удален и репликация встала.
Может кто-то подскажет куда смотреть?

Алексей
08.09.2017
10:36:06
Только заставку свою вкрячили. По крайней мере касательно версии для Мак.

raksita
08.09.2017
10:39:47

Google

raksita
08.09.2017
10:40:11
на винде тоже только заставка

Алексей
08.09.2017
10:40:16
Я имел в виду, что ни одного бага не пофиксили.
Чем отличается эта версия от обычного pgAdmin? Заставкой и "якобы будущей поддержкой 10-й версии" Но при этом с 9-й версией как не работал (нормально), так и не работает.

raksita
08.09.2017
10:49:56
один баг они точно пофиксили: когда вылетало соединение по таймауту в основном окне, переконнект приводил к вылету приложения

Артур
08.09.2017
11:18:40
pg 10 вышел чтоли?

Darafei
08.09.2017
11:19:15
вышел, не вышел - использовать не мешает

Artem
08.09.2017
11:19:38

Артур
08.09.2017
11:20:11

Darafei
08.09.2017
11:20:40
ну, у меня падает не страшнее 9.6

Петр
08.09.2017
11:20:53

Artem
08.09.2017
11:21:11
Если не окажется архивных WALов

Артур
08.09.2017
11:22:49

Artem
08.09.2017
11:28:06
Но, дай бог здоровья разработчикам, выход 9.6.5 решил эту проблему.

Дмитрий
08.09.2017
11:37:17
Привет, коллеги, подскажите, пожалуйста, можно ли увеличить скорость накатывания WAL-логов на хот стендбай при использовании потоковой репликации? Сейчас один WAL-лог накатывается за ~10 секунд. Сами логи и дата-файлы находятся на ssd, версия постгреса - 9.6.5, версия ОС - CentOS 6.9. Буду благодарен за любые подсказки!

Artem
08.09.2017
11:58:18

Дмитрий
08.09.2017
11:58:53

Vadim
08.09.2017
12:04:01

Artem
08.09.2017
12:04:08
У меня раз в час, посмотрите логи, если чекпоинты не слишком часто происходят, то тогда смотреть в сторону следующих параметров: synchronous_commit
wal_buffers
wal_writer_delay
commit_delay

Google

Дмитрий
08.09.2017
12:04:27

Vadim
08.09.2017
12:07:22
Потоковую и делаем
в потоковой журнал накатывается сразу по записям и не по файлам, как ты определил что 1 файл накатывается 10 секунд

Artem
08.09.2017
12:07:30
synchronous_commit = off

Дмитрий
08.09.2017
12:07:34

Artem
08.09.2017
12:07:46
А fsync нежелательно отключать

Дмитрий
08.09.2017
12:08:44

Artem
08.09.2017
12:10:30
А какой примерно объем данных прилетает каждые 10 секунд?

Дмитрий
08.09.2017
12:12:27
Где-то мегабайт 200-300

Vadim
08.09.2017
12:12:37

Artem
08.09.2017
12:12:49
Мне кажется, тут дело даже не в объеме данных, а именно в настройках параметров WAL журнала.

Дмитрий
08.09.2017
12:12:53
Думаю в сторону увеличения размера wal-файла, только придется пересобирать постгрес

Artem
08.09.2017
12:13:37
Если не потоковая, то логическая, но pglogical или Slony тут не видно :)
Пересобирать Постгрес для увеличения размера WAL? O_o

Дмитрий
08.09.2017
12:14:36
Поставить 128 мегабайт