@pgsql

Страница 389 из 1062
Darafei
05.07.2017
07:07:00
в debian от постгиса отпилили сотни зависимостей: https://github.com/Oslandia/SFCGAL/issues/136#issuecomment-313008690

Vadim
05.07.2017
07:43:41
прям повод таки серьезный))

Pavel
05.07.2017
09:07:16
а какой самый крутой бинарный key-value storage?

Google
WoodyFire
05.07.2017
09:35:13
Всем доброго времени суток!

Vova
05.07.2017
09:40:19
в debian от постгиса отпилили сотни зависимостей: https://github.com/Oslandia/SFCGAL/issues/136#issuecomment-313008690
тоесть дебиан 9 можно постгис без иксов уже использовать?:)

Darafei
05.07.2017
09:40:44
stretch-backports

Vova
05.07.2017
09:41:42
непонял ето не в стабильной ветке?

или просто нужно подключить бекпортс?

Dmitry
05.07.2017
09:43:34
vc_production=# reindex table vcfront.api_calls; ERROR: could not create unique index "api_calls_pkey" DETAIL: Key (id)=(2841984) is duplicated. vc_production=# reindex table vcfront.api_calls; ERROR: could not create unique index "api_calls_pkey" DETAIL: Key (id)=(2841889) is duplicated. vc_production=# reindex table vcfront.api_calls; ERROR: could not create unique index "api_calls_pkey" DETAIL: Key (id)=(2841935) is duplicated. vc_production=# select count(id) from vcfront.api_calls; count —------- 1162531 (1 row)

кто такие проблемы решает? :)

WoodyFire
05.07.2017
09:56:50
Так у тебя походу в этом поле значения одинаковые есть
не походу, а имеются и значения id выводит в ругани

Anton
05.07.2017
09:56:57
Google
nindider
05.07.2017
09:57:16
Ну я и говорю, напиши запрос на вывод количества каждого айди

пусть напишет*

WoodyFire
05.07.2017
09:57:30
select count(id) from vcfront.api_calls;

Pavel
05.07.2017
09:57:35
redis не походит?
redis неплох

WoodyFire
05.07.2017
09:57:51
этот запрос показывает количество записей, но не связан с ключем

nindider
05.07.2017
09:57:57
select count(id) from vcfront.api_calls;
Не, не так. Ща покажу

select product_id, count(product_id) from products_prices group by product_id having count(product_id) > 1 order by product_id, count(product_id);

Во

Значения полей конечно же свои подставить

Точнее наименования*

Dmitry
05.07.2017
10:00:43
это физику разъебало. чексуммы не включены

nindider
05.07.2017
10:01:26
Аа, понятно. А что за чексуммы, поясни плиз

Не сталкивался с таким

WoodyFire
05.07.2017
10:02:09
да вот так сделай запрос select id from vcfront.api_calls where id=2841984; сколько покажет записей?

nindider
05.07.2017
10:02:53
Да с логикой у него все норм оказывается, значения уникальны как я понял, что-то там в недрах сломалось)

Mike Chuguniy
05.07.2017
10:02:59
это физику разъебало. чексуммы не включены
Физику - это именно физика, или таки ФС?

WoodyFire
05.07.2017
10:03:24
или вот так можно select count(id) from vcfront.api_calls where id=2841984; или так без разницы

так сколько у тебя выводиться записей

?

Google
Mike Chuguniy
05.07.2017
10:05:10
WoodyFire
05.07.2017
10:06:22
Да с логикой у него все норм оказывается, значения уникальны как я понял, что-то там в недрах сломалось)
где выхлоп запроса говорящий об уникальности поля по тем занчениям на которые он ругался?

nindider
05.07.2017
10:06:40
Хз, у него спрашивать надо

WoodyFire
05.07.2017
10:06:52
)))

Fike
05.07.2017
10:07:10
redis не походит?
redis - самый плохой k/v storage

Darafei
05.07.2017
10:09:50
а расскажите, как бороться с напастью есть таблица, в которую пишется много событий по разным пользователям, по мере происхождения событий а читать из неё надо лог одного пользователя за интервал времени как бы сделать так, чтобы вся информация про одного пользователя лежала поближе друг к другу?

Dmitry
05.07.2017
10:10:52
или вот так можно select count(id) from vcfront.api_calls where id=2841984; или так без разницы
Одна строка, так как поиск происходит по индексу, а он не разебан

Darafei
05.07.2017
10:11:52
materialized view
нет времени на рефреш перед запросом

nindider
05.07.2017
10:12:02
Рефрешить один раз в сутки?

Darafei
05.07.2017
10:12:16
там вся таблица за сутки

Darafei
05.07.2017
10:12:19
:)

nindider
05.07.2017
10:12:54
Вот даже самому интересно, может DBA че подскажут

Вангую там что-то с tablespaces

Darafei
05.07.2017
10:14:03
а партицировать по часам не поможет?
мы будем проходить больше таблиц, чтобы добыть из них так же размазанные данные :)

Igor
05.07.2017
10:14:10
сорри :(

Darafei
05.07.2017
10:14:49
нужно достать данных за пару часов, это ~тысяча ивентов, размытых среди миллионов чужих

Igor
05.07.2017
10:15:00
Привет! Подскажите, настроил repmgr, в конфиге /etc/repmgr.conf следующие строки: logfile='/var/log/postgresql/repmgr.log' loglevel='INFO' но файл repmgr.log не создаётся, ни на мастере ни на слейве, подскажите в чём может быть проблема?

Google
Darafei
05.07.2017
10:17:26
если бы данные были статическими, я бы сделал индекс по пользователю и времени и покластеризовал по нему

но данные динамические, и чаще всего нужны те самые, последние, которые лежат как пришли :)

Anton [Mgn, az09@osm]
05.07.2017
10:20:17
а партицировать по часам не поможет?
почему обязательно по часам? потому что так в примере в книжке написато? пусть по юзеру партиционирутся же

100500 частей правда будет

Admin
ERROR: S client not available

Andrey
05.07.2017
10:20:59
100500 частей правда будет
Партиция по сотням пользователей

Anton [Mgn, az09@osm]
05.07.2017
10:21:27
ну или по первым буквам логина пользователя

Igor
05.07.2017
10:21:29
Andrey
05.07.2017
10:22:01
почему обязательно по часам? потому что так в примере в книжке написато? пусть по юзеру партиционирутся же
Но это настолько банально, что Дорофей эту гипотезу явно рассмотрел и отмел

Darafei
05.07.2017
10:22:34
Партиция по сотням пользователей
отлично! как отсчитать сотни пользователей и насоздавать партиций, если id - uuid? :)

Lev
05.07.2017
10:22:39
@iamigor , использовать redis для хранения заранее подготовленного ответа (по user_id) - не?

Mike Chuguniy
05.07.2017
10:23:02
если бы данные были статическими, я бы сделал индекс по пользователю и времени и покластеризовал по нему
Я таки начинаю понимать, когда MS SQL-щики говорят про клястерные индексы...

Anton [Mgn, az09@osm]
05.07.2017
10:23:14
Дорофей нас просто немного тролит, он уже наверняка придумал решение и теперь просто ждёт подтверждение )

Anton [Mgn, az09@osm]
05.07.2017
10:24:13
но это всё накладные расходы...

Mike Chuguniy
05.07.2017
10:24:42
Убрать uu. Пронумеровать
Переписывать приложение? Занятие не вот уж интересное.

Darafei
05.07.2017
10:28:02
Убрать uu. Пронумеровать
за "убрать uu" ребята сделают "убрать постгрес" и поставят монгу ;)

Google
Darafei
05.07.2017
10:29:45
Дорофей нас просто немного тролит, он уже наверняка придумал решение и теперь просто ждёт подтверждение )
нет у меня решения, к сожалению. есть сколько-то путей обхода, но они так себе :)

Andrey
05.07.2017
10:30:16
за "убрать uu" ребята сделают "убрать постгрес" и поставят монгу ;)
Ну не убрать в прямом смысле, а добавить порядковый номер при добавлении пользователей. Хотя если они никак в БД не учитываются, а только прилетают в виде uuid c event'ами, то схема не работает

Vadim
05.07.2017
10:36:17
нет у меня решения, к сожалению. есть сколько-то путей обхода, но они так себе :)
Попробуй сделать партиций 2го уровня и мазать данные по uuid :) но придется искать партицию руками :)

WoodyFire
05.07.2017
10:36:35
Одна строка, так как поиск происходит по индексу, а он не разебан
извиняюсь за скорость. Студент как никак ))) попробуй по таблице пробежаться вот так: CREATE OR REPLACE FUNCTION "MySchema"."MyFunction"(out iCount integer) RETURNS integer as $$ declare keys integer; iCount integer default 0; curs1 cursor for select myID from "MySchema"."myTable"; begin open curs1; fetch curs1 into keys; if keys=2 then iCount=iCount+1; end if; close curs1; end $$ LANGUAGE plpgsql VOLATILE; только подставь свое. Это последовательный проход по таблице. На индексы не смотрит. Как раз и покажет сколько у тебя одинаковых значений которые ты укажешь в условии

Dmitry
05.07.2017
10:37:24
Да я уже переключился на реплику

WoodyFire
05.07.2017
10:37:33
)))

Anton [Mgn, az09@osm]
05.07.2017
10:39:01
Попробуй сделать партиций 2го уровня и мазать данные по uuid :) но придется искать партицию руками :)
вот да, что-то такое. интересно можно ли брать ту партицию на запись где меньше всего данных? ?

Darafei
05.07.2017
10:39:50
Попробуй сделать партиций 2го уровня и мазать данные по uuid :) но придется искать партицию руками :)
а не руками опции есть? а то так copy делать не очень красиво получается :)

Stas
05.07.2017
10:39:57
Mike Chuguniy
05.07.2017
10:40:24
нет у меня решения, к сожалению. есть сколько-то путей обхода, но они так себе :)
В порядке бреда, а если евенты складировать в табличку вида: user_id uuid, jsonb [] Где в массив валить некоторое разумное количество собственно евентов. Вопрос в критериях и значениях разумности. А так - в общем случае как-то грустно в этом плане всё.

Vadim
05.07.2017
10:43:11
да, toast будет серьезный) Зато даннные пожмешь)

а не руками опции есть? а то так copy делать не очень красиво получается :)
с copy проблем быть не должно мне кажется. Будут проблемы на SELECT )

Darafei
05.07.2017
10:45:27
так уже :)

Fike
05.07.2017
10:50:00
по 256 юзеров: select get_byte(decode(md5(user.uuid::text),'hex'), 15);
++, просто прикинуть максимальное количество юзеров и исходя из этого партиционировать по хэшу от идентификатора

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