@pgsql

Страница 412 из 1062
Anton [Mgn, az09@osm]
23.07.2017
10:47:30
А если так? SELECT * FROM pg_extension
ох, нехило так постгис в extcondition вывалил

Артур
23.07.2017
10:48:42
То есть просто экстеншнов 3, а вот если смотреть в списке доступных,
Хотя нет. Идентично. Смутило Bollean поле :), а это оказываетя переносимость в другую схему :)

Anton [Mgn, az09@osm]
23.07.2017
11:46:18
ох, нехило так постгис в extcondition вывалил
в качестве упражнения хотел было соединить всё это в одну строку, но оказалось не так всё просто

Aleksander
24.07.2017
06:12:07
Привет всем, а у кого-нибудь в проектах есть Postgres с таблицами от 3 миллиардов записей?

Google
Darafei
24.07.2017
06:17:44
3991181109 подойдёт?

عاصم بن حارث
24.07.2017
06:18:15
Darafei
24.07.2017
06:20:15
там ещё рядом табличка лежит, в которую один юзер вставил 326511847 строк

Aleksander
24.07.2017
06:24:41
3991181109 подойдёт?
Нормас :) скажи, как постгрес справляется с таблицами таких размеров ? Есть ли у тебя индексы на ней дополнительные и долго ли происходит вставка ?

Darafei
24.07.2017
06:25:05
оно не у меня, оно на api.openstreetmap.org

там есть индексы по id, и кастомный не-постгисовый по геометрии

всё работает нормально

Aleksander
24.07.2017
06:27:09
всё работает нормально
Я просто думаю как лучше сделать, одну большую таблицу или n маленьких таблиц и на вставку поставить триггер

Darafei
24.07.2017
06:27:15
партиционирований и тому подобного нет

триггер точно всё притормозит

Aleksander
24.07.2017
06:29:19
Да но и индекс при вставке тоже отожрет в большую таблу

Ilya
24.07.2017
06:30:07
Darafei
24.07.2017
06:30:11
а почему сумма размеров индексов по маленьким таблицам будет меньше размера одного индекса по суммарной таблице?

Google
Aleksander
24.07.2017
06:30:49
А ты чаще читаешь или пишешь?
Чаще читаю, но операций вставки полно

Ilya
24.07.2017
06:30:53
а почему сумма размеров индексов по маленьким таблицам будет меньше размера одного индекса по суммарной таблице?
Потому что партицирование берёт только те кусочки, которые попадают в рендж?

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

Darafei
24.07.2017
06:32:24
https://github.com/postgrespro/pg_pathman

Darafei
24.07.2017
06:32:53
если идёт аппенд, то непонятно, чем партиции будут лучше

Ilya
24.07.2017
06:34:14
А по твоему опыту триггеры как?
Настроил и забыл. Это иногда доставляло проблемы, но скорее после того как окунался в код после перерыва. А так в целом удобно.

если идёт аппенд, то непонятно, чем партиции будут лучше
Я думаю у него там всякие удаления ещё и прочее. Вакуум по кучке маленьких таблиц разве не лучше, чам по одной большой?

Darafei
24.07.2017
06:35:19
партиции удобны, когда нужно внезапно резко стереть чанк данных в размере партиции

Aleksander
24.07.2017
06:35:27
Удалений скорее всего нет, но есть апдейты частые

Но это ещё не самые мощные таблицы, рядом будет стоять кликхаус в котором по триллиону записей в табле

Но там совсем другая история

Чувствую, я как всегда спроектирую и все развалится :)

Anton [Mgn, az09@osm]
24.07.2017
06:42:38
@Komzpa @pasha_golub #report #spam

Pavel
24.07.2017
07:26:48
Anton [Mgn, az09@osm]
24.07.2017
07:28:50
Pavel
24.07.2017
07:29:16
Давно ее прибили. Я лично

Anton [Mgn, az09@osm]
24.07.2017
07:29:36
Айфонопроблемы значит

Subb98
24.07.2017
07:49:21
Привет, подскажите, как можно сделать update from select нескольких полей, для каждого поля при этом в select должен быть свой where. Такое вообще возможно?

Google
Subb98
24.07.2017
07:51:01
Пример: есть update за месяц, год и всё время (это и есть where) И есть поля с мес., годом и всем временем.

Vadim
24.07.2017
07:51:20
несколько апдейтов

Subb98
24.07.2017
07:51:32
А если одним?

Несколько уже есть.

Сказали, мол, можно одним

Anton [Mgn, az09@osm]
24.07.2017
07:53:53
Несколько селектов. Подзапросы

Subb98
24.07.2017
07:54:10
Спасибо, попробую.

Darafei
24.07.2017
08:32:32
Расскажи
http://www.openstreetmap.org/stats/data_stats.html

Anton [Mgn, az09@osm]
24.07.2017
08:33:27
http://www.openstreetmap.org/stats/data_stats.html
А, ну это же не за один раз

Но тоже впечатляет конечно

Slach
24.07.2017
11:14:31
он раз в минуту отсылает в zabbix разницу между локальным временем и временем в последнем wal-сегменте пришедшего с другого сервера
Ой! дорогой ты мой человек!!! чего ж я в субботу то это не увидел спасибо тебе, а я уже маляву накатал https://www.facebook.com/groups/postgresql/permalink/627585317438219/ сидел разбирался сегодня три часа с исходниками mamonsu...

Dmitry
24.07.2017
11:21:35
Alexey
24.07.2017
11:29:04
тут кто-то интересовался расценками на солидный постгрес для солидных господ. @vladimir_lyshenko ? так вот: http://www.1csoft.ru/publications/8143/23901658/?ELEMENT_ID=23901658

из той ссылки следует, что enterprise можно купить только пожизненно всего за 360 000 рублей за ядро. а версии 1С и standard можно купить с поддержкой на ограниченный срок

Dmitry
24.07.2017
11:34:00
но судя по всему 1с гарантирует работу только с EE версией

Darafei
24.07.2017
11:34:22
а что будет, если купить на 1 ядро, а запустить на 100-ядерной машине?

Dmitry
24.07.2017
11:34:50
как у оракла - все на честном слове

dmitriy
24.07.2017
11:34:52
надо сделать плагин, который будет таблицу периодически обновлять :) Григорий расказывал на PgConf как писать плагин :)
Есть repl_mon. Сие поделие раз в интервал бгворкером пишет now, позицию и fqdn мастера в таблицу, на реплике можно с точностью до интервала измерять запросом лаг

Dmitry
24.07.2017
11:35:33
Есть repl_mon. Сие поделие раз в интервал бгворкером пишет now, позицию и fqdn мастера в таблицу, на реплике можно с точностью до интервала измерять запросом лаг
ну это отдельный сервис, который надо права предоставлять и контролировать. проще в mamonsu сделать плагин который будет тоже самое писать

а это bgworker?

Google
Dmitry
24.07.2017
11:36:16
он в yum.postgresql.org есть?

Admin
ERROR: S client not available

Dmitry
24.07.2017
11:37:13
он в yum.postgresql.org есть?
в смысле его прийдется еще опакечивать и собирать, обновлять и менять конфиг :) а тут сторонний сервис который с работает с ванильным/любым pg как обычный клиент

dmitriy
24.07.2017
11:42:16
если вы пг сами компилите, то можете прям в контриб чекаутить его и собирать с ним, можно через PGXS компилить

Dmitry
24.07.2017
11:43:12
на проде где gcc не должно стоять? :)

dmitriy
24.07.2017
11:43:16
ну а так, да, нужно в shared_preload_libraries его добавлять

ну пакеты же вы не на проде собираете

Dmitry
24.07.2017
11:44:00
на проде где gcc не должно стоять? :)
хотя кого я обманываю, на проде с pg и gdb обязан стоять :)

dmitriy
24.07.2017
11:44:34
Dmitry
24.07.2017
11:44:39
ну пакеты же вы не на проде собираете
для этих пакетов еще и писать прийдется debian/control, spec и прочее :(

а потом еще и контролировать обновления :(

хотя я понял к чему вы клоните

что собираете свою версию

Anton [Mgn, az09@osm]
24.07.2017
12:00:14
Alexander
24.07.2017
12:47:57
Ребята, здесь выше уже обсуждали партицирование, но хотелось бы задать еще пару вопросов. Допустим, есть большая таблица отношений UNIQUE(a,b). Записи в нее постоянно добавляются, их могут быть миллиарды. Очень часто нужно проверять, существует ли отношение (a, b) или находить всех b для указанного а. А теперь вопрос: есть ли смысл делать партицирование по а (например, по модулю N) для данных задач?

По сути, будет не одна огромная таблица, а N поменьше с теми же индексами. Насколько я понимаю, выиграш будет при чтении, потому что читать индекс конкретной таблицы быстрее, потому что он меньше (собственно, в N раз, если все распределено равномерно).

Aleksander
24.07.2017
12:58:17
По сути, будет не одна огромная таблица, а N поменьше с теми же индексами. Насколько я понимаю, выиграш будет при чтении, потому что читать индекс конкретной таблицы быстрее, потому что он меньше (собственно, в N раз, если все распределено равномерно).
Проверка отношения это же запрос на чтение, если у тебя есть n таблиц поменьше. То в какой из таблиц проверять отношение ? Придётся во всех последовательно проверять. Это ничем не отличается от большого индекса, если не хуже. Т.к непонятно как твои таблицы упорядочены.

Google
Aleksander
24.07.2017
13:07:41
Нет, здесь понятно. Я планировал сделать партицирование по принципу a % n == номер_партиции, т.е. я точно буду знать, для какого a в какой партиции нужно искать данные.
Мне кажется, что на чтение не будет особого прироста. Так как чтение из b дерева log по основанию кол-ва элементов на уровне дерева. У тебя будет по сути n деревьев меньшего размера. А вообще надо посчитать, насколько у деревьев будет меньше уровней, если ты их так разделишь. Точно не могу так сказать навскидку.

Надо подумать

Ildar
24.07.2017
13:12:18
навскидку 1000-2000 записей в одном узле (если int32). Допустим 1000. Тогда 2 уровня дерева это миллион записей, три уровня - миллиард

Aleksander
24.07.2017
13:12:19
Alexander
24.07.2017
13:14:54
Ну да, быстрее. У тебя по сути получается хеш таблица, а таблицы с индексами это бакеты в виде дерева
Я просто хочу решить, стоит ли мучать такими задачами postgres или лучше сразу смотреть в сторону Cassandra, где все это можно будет легко распределить по узлам и все такое. :)

Fike
24.07.2017
13:16:06
я вот прямо горел желанием порекомендовать взять хранилище, которое шардируется из коробки

но кассандра весьма ограничена по сравнению с классическим sql, какие-нибудь агрегации и джойны вы гонять не сможете

Alexander
24.07.2017
13:20:19
а сколько партиций планируете?
Хороший вопрос. Я думаю, можно сделать 100.

Ildar
24.07.2017
13:21:02
выигрыш может быть, например, за счет того, что можно мейнтейнить партиции независимо (вакуумить, например). Или раскидать их по разным тейблспейсам на разных дисках. Ну и обновление маленького индекса (особенно если их несколько) будет происходить быстрее

Хороший вопрос. Я думаю, можно сделать 100.
тогда рекомендую посмотреть на pg_pathman. Там и хеш-партиционирование без приседаний идет в комплекте

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