@pgsql

Страница 330 из 1062
Just
12.05.2017
07:16:58
я так понял нельзя сделать, чтобы distinct по индексу быстро работал, как в mysql? запрос вида select distinct field from table limit 20;

raksita
12.05.2017
07:46:09
Darafei
12.05.2017
08:03:12
а, кстати, почему?

Google
Kirill
12.05.2017
08:35:27
а, кстати, почему?
почему order by ? по крайней мере хочется получать предсказуемый результат https://www.postgresql.org/docs/current/static/queries-limit.html The query optimizer takes LIMIT into account when generating query plans, so you are very likely to get different plans (yielding different row orders) depending on what you give for LIMIT and OFFSET. Thus, using different LIMIT/OFFSET values to select different subsets of a query result will give inconsistent results unless you enforce a predictable result ordering with ORDER BY. This is not a bug; it is an inherent consequence of the fact that SQL does not promise to deliver the results of a query in any particular order unless ORDER BY is used to constrain the order.

Darafei
12.05.2017
08:48:19
но иногда это как раз то, что нужно

примерно в тех же целях, в которых есть tablesample

ты хочешь посмотреть, что бывает в таблице

Wom
12.05.2017
09:15:01
select distinct field from table where field is not null limit 20;
почему "where field is not" даст ускорение?

Darafei
12.05.2017
09:16:43
На моих данных это поднимает селективность и делает index only scan вместо seq scan

Айтуар
12.05.2017
09:20:24
Darafei
12.05.2017
09:21:16
Тогда мне тоже интересно, как стриггерить index only scan (и нужно ли)

Aleksandr
12.05.2017
10:15:21
а кто что юзает в качестве гуевых утилит на маке?

Zhenia
12.05.2017
10:57:22
datagrip

Igor
12.05.2017
11:02:56
postico/psequel pro пробовал, бесполезные какие-то обе, хоть и мелкие-красивые на sqlpro studio наткнулся, но еще не смотрел

Alexander
12.05.2017
11:04:39
datagrip на всех платформах хорош.

Google
Ascandar
12.05.2017
11:09:40
надо заценить датагрип

юзал через idea похожее на эту

Wom
12.05.2017
11:17:35
datagrip плохо показывает INTERVAL

ну или я не смог настроить :)

Anton
12.05.2017
11:32:23
Коллеги, подскатиже есть у кого под рукой скрипт для построения дерева блокировок на 9.6 ?

raksita
12.05.2017
11:44:05
Игорь
12.05.2017
11:47:15
Коллеги, подскатиже есть у кого под рукой скрипт для построения дерева блокировок на 9.6 ?
SELECT COALESCE(blockingl.relation::regclass::text,blockingl.locktype) as locked_item, blockeda.pid AS blocked_pid, blockeda.query as blocked_query, blockedl.mode as blocked_mode, blockinga.pid AS blocking_pid, blockinga.query as blocking_query, blockingl.mode as blocking_mode FROM pg_catalog.pg_locks blockedl JOIN pg_stat_activity blockeda ON blockedl.pid = blockeda.pid JOIN pg_catalog.pg_locks blockingl ON( ( (blockingl.transactionid=blockedl.transactionid) OR (blockingl.relation=blockedl.relation AND blockingl.locktype=blockedl.locktype) ) AND blockedl.pid != blockingl.pid) JOIN pg_stat_activity blockinga ON blockingl.pid = blockinga.pid WHERE NOT blockedl.granted AND blockinga.datname='DATABASE'; CREATE VIEW lock_monitor AS( SELECT COALESCE(blockingl.relation::regclass::text,blockingl.locktype) as locked_item, now() - blockeda.query_start AS waiting_duration, blockeda.pid AS blocked_pid, blockeda.query as blocked_query, blockedl.mode as blocked_mode, blockinga.pid AS blocking_pid, blockinga.query as blocking_query, blockingl.mode as blocking_mode FROM pg_catalog.pg_locks blockedl JOIN pg_stat_activity blockeda ON blockedl.pid = blockeda.pid JOIN pg_catalog.pg_locks blockingl ON( ( (blockingl.transactionid=blockedl.transactionid) OR (blockingl.relation=blockedl.relation AND blockingl.locktype=blockedl.locktype) ) AND blockedl.pid != blockingl.pid) JOIN pg_stat_activity blockinga ON blockingl.pid = blockinga.pid AND blockinga.datid = blockeda.datid WHERE NOT blockedl.granted AND blockinga.datname = current_database() );

Just
12.05.2017
11:53:26
спасибо, но это так или иначе 10-15 сек, а на том же mysql это меньше секунды

order by field добавьте, limit без order by - ат-ат-ат

select distinct field from table where field is not null limit 20;

Kirill
12.05.2017
12:05:30
спасибо, но это так или иначе 10-15 сек, а на том же mysql это меньше секунды
давайте \d ваша таблица , количество строк в ней и explain analyze select distinct field from table ...

Just
12.05.2017
12:10:29


Denis
12.05.2017
12:11:57
я дошёл примерно досюда: kom@junocat gevel % make USE_PGXS=1 gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -g -O2 -fdebug-prefix-map=/build/postgresql-9.6-999=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/mit-krb5 -fPIC -pie -fno-omit-frame-pointer -fpic -I. -I./ -I/usr/include/postgresql/9.6/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.6 -c -o gevel.o gevel.c gevel.c: In function ‘gin_statpage’: gevel.c:1381:6: error: ‘emptyDataPages’ undeclared (first use in this function) emptyDataPages++; ^~~~~~~~~~~~~~ gevel.c:1381:6: note: each undeclared identifier is reported only once for each function it appears in <builtin>: recipe for target 'gevel.o' failed make: *** [gevel.o] Error 1
Проблема была в том, что Федор суров и сейчас в последнем коммите мастера у него лежит работающая только с 10 постгресом версия (но не собирающаяся под 9.6). Нужно выбрать снапшот для 9.6. Поэтому, алгоритм такой: 1. скачать и распаковать gevel.tar.gz с http://www.sigaev.ru/git/gitweb.cgi?p=gevel.git;a=snapshot;h=bd8b8b031a8049a6e7c18c00946bfbd99d75d27f;sf=tgz 2. USE_PGXS=1 make 3. USE_PGXS=1 make install 4. psql your_database < /usr/share/postgresql/9.6/contrib/gevel.sql 5. Подключаемся, проверяем функционал из http://www.sai.msu.su/~megera/postgres/gist/gevel/README.gevel 6. PROFIT!

Kirill
12.05.2017
12:41:36
1) trans_date | date | not null Indexes: "trans_date_idx" btree (trans_date) 2) ~48 млн
WITH RECURSIVE t AS ( (SELECT trans_date FROM YOUR_TABLE ORDER BY trans_date LIMIT 1) UNION ALL SELECT (SELECT trans_date FROM YOUR_TABLE WHERE trans_date > t.trans_date ORDER BY trans_date LIMIT 1) FROM t WHERE t.trans_date IS NOT NULL ) SELECT trans_date FROM t WHERE trans_date IS NOT NULL LIMIT 20;

Nikita
12.05.2017
12:49:42
WITH RECURSIVE t AS ( (SELECT min(val) AS val FROM test) UNION ALL SELECT (SELECT min(val) FROM test WHERE val > t.val) AS val FROM t WHERE t.val IS NOT NULL ) SELECT val FROM t WHERE val IS NOT NULL;

Denis
12.05.2017
12:51:36
ну так distinct отродясь болеет в pg, хотя он стал гораздо лучше, чем раньше. вначале он у вас выгребает из индекса все 48кк строк, а потом из них делает unique limit 20. в общем, в pipeline mode он не работает. а вот group by - прекрасно работает. попробуйте select trans_date from transactions group by trans_date limit 20;

Google
Anatoliy
12.05.2017
13:00:14
можно же в два действия с CTE, не?

Pavel
12.05.2017
13:28:44
«Наиболее серьезной возможностью я, конечно, считаю мультимастер», — Иван Фролков о разработке Postgres Pro EE

Так все-таки мультимастер нужен? ;)

Denis
12.05.2017
13:29:20
WITH RECURSIVE t AS ( (SELECT min(val) AS val FROM test) UNION ALL SELECT (SELECT min(val) FROM test WHERE val > t.val) AS val FROM t WHERE t.val IS NOT NULL ) SELECT val FROM t WHERE val IS NOT NULL;
Я хочу сказать - вау! Очень крутая идея в запросе. Запрос отрабатывает с бешенной скоростью, хотя возвращает не рандомные заначения explain analyze with recursive t as ( (select min(trans_date) as trans_date from transactions) union all select ( select min(trans_date) from transactions where trans_date > t.trans_date ) as trans_date from t where t.trans_date is not null ) select trans_date from t where trans_date is not null limit 20;

Darafei
12.05.2017
13:29:41
Так все-таки мультимастер нужен? ;)
продаётся, наверное, неплохо

Kirill
12.05.2017
18:48:59
спасибо, этот и вариант за ним оба за 5 сек работают, это уже юзабельно
видимо очень много уникальных значений, если их относительно немного то должно работать шустрее, подробнее тут можно почитать https://wiki.postgresql.org/wiki/Loose_indexscan

Pavel
13.05.2017
10:49:22
Остался один подписчик до круглого числа в 1024 ))

Сергей
13.05.2017
14:16:34
как всегда юбилей проходит быстро )))

Anton
13.05.2017
14:16:47
))

Pavel
13.05.2017
14:21:14
Надо одного кикнуть просто?

Denis
13.05.2017
14:23:15
О достопочтенный джин, трачу ещё одно желание из 999 - не кикай меня)

Pavel
13.05.2017
14:24:43
?

Anton [Mgn, az09@osm]
13.05.2017
15:56:46
простите за вопрос лентяя. нет ли у кого готового sql-скрипта для поиска всех таблиц в базе имеющих определённое поле? ^_^

Петр
13.05.2017
16:33:45
Anton [Mgn, az09@osm]
13.05.2017
16:37:07
нет страшного запроса, есть imposm3 и его внутренняя магия ) хочу в консоли не имея представления о структуре базы выяснить имена таблиц в которых встречается колонка "name"

Петр
13.05.2017
16:38:20
посмотрите в information_schema.columns

Anton [Mgn, az09@osm]
13.05.2017
16:50:28
спасибо, всё просто конечно select table_name from information_schema.columns where column_name = 'name' and table_name not like 'pg_%'; лень с позором изгнана =)

Maxim
14.05.2017
10:47:43
Кто все эти люди?..

Google
Gherman
14.05.2017
10:50:24
HR'ы наверное

Denis
14.05.2017
10:55:55
Ну что вы, долой стереотипы! Это просто девушки, которым интересен постгрес

Admin
ERROR: S client not available

Pavel
14.05.2017
10:56:57
Предлагаю сразу на входе тест проводить ))

Alex
14.05.2017
10:57:20
Экспресс тестирование ?

Denis
14.05.2017
10:57:47
Вы сомневаетесь, что это девушки?

Аггей
14.05.2017
10:57:48
Уровни изоляции? ))

Pavel
14.05.2017
10:58:27
Расшифровка ACID

Gherman
14.05.2017
11:00:07
Интересно как они рекрутировать планируют ?

Через телеграмм

Maxim
14.05.2017
11:00:55
Расшифровка ACID
CAP-теорема со всеми отягчающими ;)

Gherman
14.05.2017
11:02:47
Для них это просто канал где пасутся Pg DBA

Anton [Mgn, az09@osm]
14.05.2017
11:03:44
подозреваю что это просто боты. HR по воскресеньям в чаты не ходят

а вот ботов можно огородить простой текстовой капчей 2+7=?

Fike
14.05.2017
11:05:19
Они ещё ни слова здесь не написали

Gherman
14.05.2017
11:05:27
Это можно

Ждём когда напишут

Anton [Mgn, az09@osm]
14.05.2017
11:06:59
светка11 еще и в девопсе сидит например

Wom
14.05.2017
11:10:19
Тогда ей ещё и модель оси

Pavel
14.05.2017
11:13:43
гг

Google
Mike Chuguniy
14.05.2017
11:51:02
Расшифровка ACID
Расширенная, с примерами, например, разными.

подозреваю что это просто боты. HR по воскресеньям в чаты не ходят
оне разные бывают, точно говорю. Запросто могут в воскресенье ... эээ... охотиться за головами, ага...

Fike
14.05.2017
11:56:07
Ага, разные примеры к durability

Darafei
14.05.2017
18:29:14
а кто был на pgconf - вам удалось найти применение какому-нибудь из инструментов на слоне-брелке?

Alexander
14.05.2017
18:30:14
Очень полезная штука!)

Darafei
14.05.2017
18:32:10
Очень полезная штука!)
а кроме открывашки? :)

Alexander
14.05.2017
18:33:03
Отвёрткой очень удобно всякие упаковки вскрывать)

Darafei
14.05.2017
18:35:45
ага

я сегодня на нём искал, но не нашёл, ключ на 15 и шестигранник и задумался, что не встречаю в окружающей меня жизни ключей тех размеров, что там есть :)

Anton [Mgn, az09@osm]
14.05.2017
18:38:01
показали бы хоть

Александр
14.05.2017
19:00:49
Бот

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