@pgsql

Страница 185 из 1062
Ryzhikov
09.12.2016
09:49:23
@Komzpa - выглядит как решение

только я на два запроса разобью - первый оценит селективность

второй уже вытащит данные либо с ранкигом либо без

Darafei
09.12.2016
09:51:10
зачем?

Google
Darafei
09.12.2016
09:51:16
это на что-то повлияет?

Stas
09.12.2016
09:51:35
чет я потерял нить рассуждений) как оценить количество доков если там лимит 100?

больше 10 секунд для john
просил explain (analyze, buffers) ибо это долго подозрительно

Ryzhikov
09.12.2016
09:53:30
сейчас сделаю explain

завис :)

Stas
09.12.2016
10:01:31
нуу должны быть те же 10 секунд если запрос не менялся

Ryzhikov
09.12.2016
10:01:44
QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------- Limit (cost=63778.35..63778.60 rows=100 width=1231) (actual time=13632.699..13632.803 rows=100 loops=1) -> Sort (cost=63778.35..63825.46 rows=18843 width=1231) (actual time=13632.697..13632.744 rows=100 loops=1) Sort Key: (ts_rank(p.search, query.query, 1)) DESC Sort Method: top-N heapsort Memory: 126kB -> Nested Loop (cost=194.28..63058.18 rows=18843 width=1231) (actual time=27.701..13191.481 rows=74376 loops=1) -> Function Scan on to_tsquery query (cost=0.25..0.26 rows=1 width=32) (actual time=0.025..0.026 rows=1 loops=1) -> Bitmap Heap Scan on practitioner p (cost=194.03..62822.39 rows=18843 width=1227) (actual time=27.661..12971.466 rows=74376 loops=1) Recheck Cond: (search @@ query.query) Rows Removed by Index Recheck: 198605 Heap Blocks: exact=40567 lossy=27306 -> Bitmap Index Scan on practitioner_ts_idx (cost=0.00..189.32 rows=18843 width=0) (actual time=19.734..19.734 rows=74376 loops=1) Index Cond: (search @@ query.query) Planning time: 0.582 ms Execution time: 13633.103 ms (14 rows)

Stas
09.12.2016
10:03:52
буфферы не включил)

Ryzhikov
09.12.2016
10:04:24
кстати видимо статистика набралась - стало быстее :)

QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------- Limit (cost=63778.35..63778.60 rows=100 width=1231) (actual time=1286.499..1286.593 rows=100 loops=1) Buffers: shared hit=67946 -> Sort (cost=63778.35..63825.46 rows=18843 width=1231) (actual time=1286.497..1286.540 rows=100 loops=1) Sort Key: (ts_rank(p.search, query.query, 1)) DESC Sort Method: top-N heapsort Memory: 126kB Buffers: shared hit=67946 -> Nested Loop (cost=194.28..63058.18 rows=18843 width=1231) (actual time=27.777..846.612 rows=74376 loops=1) Buffers: shared hit=67946 -> Function Scan on to_tsquery query (cost=0.25..0.26 rows=1 width=32) (actual time=0.032..0.033 rows=1 loops=1) -> Bitmap Heap Scan on practitioner p (cost=194.03..62822.39 rows=18843 width=1227) (actual time=27.728..627.899 rows=74376 loops=1) Recheck Cond: (search @@ query.query) Rows Removed by Index Recheck: 198605 Heap Blocks: exact=40567 lossy=27306 Buffers: shared hit=67936 -> Bitmap Index Scan on practitioner_ts_idx (cost=0.00..189.32 rows=18843 width=0) (actual time=19.763..19.763 rows=74376 loops=1) Index Cond: (search @@ query.query) Buffers: shared hit=27 Planning time: 0.560 ms Execution time: 1286.979 ms (19 rows)

Stas
09.12.2016
10:05:01
закешировалось скорее

а до этого в шаред буфферс читалось с диска

секунда больше уже похожа на правду

Google
Stas
09.12.2016
10:06:46
а теперь убрать сорт, подзапрос и просто каунт сделать)

два раза подряд

а потом поставить нормальные настройки shared_buffers)

Ryzhikov
09.12.2016
10:08:02
SELECT count(*) FROM "practitioner" "p", to_tsquery($TSQUERY$john$TSQUERY$) "query" WHERE "search" @@ "query" LIMIT 100; count ------- 74376 (1 row) Time: 877.708 ms

а нормальные - это что значит?

Stas
09.12.2016
10:08:49
чтоб индекс помещался в него

Ryzhikov
09.12.2016
10:09:23
pg_settings where name='shared_buffers'; name | setting | min_val | max_val | context ----------------+---------+---------+------------+------------ shared_buffers | 262144 | 16 | 1073741823 | postmaster (1 row)

Stas
09.12.2016
10:09:29
SELECT count(*) FROM "practitioner" "p", to_tsquery($TSQUERY$john$TSQUERY$) "query" WHERE "search" @@ "query" LIMIT 100; count ------- 74376 (1 row) Time: 877.708 ms
тут лимит что есть, что нет. вернется же тебе одна строка с числом

Ryzhikov
09.12.2016
10:09:49
я понял - просто запрос правил

Stas
09.12.2016
10:10:38
это два гига?

там они в 8к страницах

Ryzhikov
09.12.2016
10:10:58
что-то типа того

Stas
09.12.2016
10:11:11
это чрезмерно консервативно

Stas
09.12.2016
10:11:37
три бэктика

` код `

Roman
09.12.2016
10:12:09
спасибо)

Stas
09.12.2016
10:12:13
только три)

что-то типа того
ставь чтоб база с индексами влезала

Ryzhikov
09.12.2016
10:12:44
Стас спасибо - буду ковырятся

Google
Anton [Mgn, az09@osm]
09.12.2016
10:36:52
только три)
И только на десктопе((

Павел П.
09.12.2016
11:12:14
Чат, вопрос простенький.

Есть запрос UPDATE table1 SET "somefield" = foo.fieldvalue FROM( SELECT id, COALESCE( CASE WHEN (table2.json_field ->> 'Imeetsya_deneg') IS NULL THEN '' ELSE (table2.json_field -> 'Imeetsya_deneg' -> 'value')::text END , '') as fieldvalue FROM table2 WHERE ...) as foo WHERE table1.value_id = foo.id;

Он выполняется, всё ок

НО как только я его хочу выполнить из триггера, обернув в EXECUTE 'Update ....' Ругается на cannot extract element from a scalar (ибо не всегда в джейсоне есть нужные мне значения)

Но для этого проверку в кейсе и писал. Вопрос: Внутри функции кейсы как-то по-другому работают?

А вообще, ну его нафиг это всё, ежу понятно что не в кейсах дело, пойду лучше пива выпью

Славик
09.12.2016
11:27:08
обращайся

Anastasia
09.12.2016
11:28:13
кавычки

Павел П.
09.12.2016
11:29:17
Спасибо гуглу, другая проверка помогла

Darafei
09.12.2016
11:55:31
а можно ли как-нибудь у постгресового экстеншена дропнуть тип? :)

Arthur
09.12.2016
11:58:44
насколько я знаю, тип можно удалять только вместе с экстеншенем

Denis
09.12.2016
12:03:13
можно, большинство эекстеншенов идут с sql который запускается при create extentions,и в нем эти типы и создаются

их и можно допнуть

Darafei
09.12.2016
12:13:55
да, но вот уже созданный и импортированный экстеншен хочется разломать и заменить кусочек

Denis
09.12.2016
12:15:40
замени операции у типа, может этого хватит

Darafei
09.12.2016
12:17:22
надо тип :(

Arthur
09.12.2016
12:23:17
можно конечно попробовать хак, удалив вхождения типа из pg_depend select * from pg_depend where objid = 657444 or refobjid = 657444; delete from pg_depend where objid = 657444 or refobjid = 657444; потом добавить oid нового типа

Павел П.
09.12.2016
12:45:18
Чат, а как начать гуглить чтобы догуглиться о том чтобы Select только те колонки, тип которых - integer ?

Google
Славик
09.12.2016
12:46:48
я бы предположил, что сначала нужно получить список колонок с типами из таблицы и тогда уже делать запрос

Павел П.
09.12.2016
12:47:46
получить-то получу из information_schema , а вот дальше как быть не придумаю

Arthur
09.12.2016
12:55:44
не уверен ) но добавлять возможно тоже неправильно. От этого типа могут зависеть другие объекты, например функции, и они могут перестать работать. Поэтому лучше перед удалением посмотреть зависимости с помощью select * from pg_depend where refobjid = 657444; (refobjid - это oid родительского объекта в отношении зависимости)

Admin
ERROR: S client not available

Sergey
09.12.2016
13:12:38
Es

Yury
09.12.2016
13:13:21
кому то теперь будут страшные сны снится

Ivan
09.12.2016
13:13:45
и тёмные люди в погонах за спиной

blkmrkt
10.12.2016
22:05:33
короче странно, пробую делать`VACUUM FULL COMMENTS`, получаю: WARNING: concurrent delete in progress within table "comments" ERROR: MultiXactId 3036690260 does no longer exist -- apparent wraparound Забытых процессов постгрес нет, но есть вот эта ситуация с xmax, которых должно быть 0, тк других процессов там нет. Есть ли смысл попробовать UPDATE comments SET xmax = 0;?

Павел П.
12.12.2016
06:51:05
Чат, вопрос.

Create table foo( "money_total" text, "101676ba" text, "cdc6889c" text );

почему поле "101676ba" в созданной таблице остается с кавычками, а поле cdc6889c - без них? В нем есть какие-то прерывающие символы (их последовательность)? А если есть, почему постгр их не обрабатывает?

Павел П.
12.12.2016
06:53:18
такая же фигня если назвать поля f21d8bf4 de6aa783 d588e20d

они не с цифры начинаются

Александр
12.12.2016
06:53:35
Так в том и дело

Аггей
12.12.2016
06:53:36
Hex?

Александр
12.12.2016
06:53:54
2 разных названия, одно с цифры другео с буквы, не?

Павел П.
12.12.2016
06:54:11
еще раз

Google
Александр
12.12.2016
06:54:15
или f21... тоже в кавычках?

Yury
12.12.2016
06:54:20
тогда не понял вопросса

сделай \d на таблицу

Павел П.
12.12.2016
06:54:46
Create table foo( "money_total" text, "cdc6889c" text ); поле мани создается с кавычками в названии, cdc6889c - без кавычек

Александр
12.12.2016
06:55:44
А если заменить на апостраф или вообще без кавычек?

Откуда вообще кавычки?

В доке же на сколько я помню нет кавычек ни каких при создании таблицы

Павел П.
12.12.2016
06:57:18
Откуда вообще кавычки?
на случай кириллических названий

Александр
12.12.2016
06:57:39
Но тут же их нет

Всё равно не понимаю. ересь какая-та..\

Павел П.
12.12.2016
07:01:16
сделай \d на таблицу
ERROR: column "reltriggers" does not exist

Петр
12.12.2016
07:01:40
Create table foo( "money_total" text, "cdc6889c" text ); поле мани создается с кавычками в названии, cdc6889c - без кавычек
postgres=# Create table foo( postgres(# "money_total" text, postgres(# "cdc6889c" text ); CREATE TABLE postgres=# \d+ foo Table "public.foo" Column | Type | Modifiers | Storage | Stats target | Description -------------+------+-----------+----------+--------------+------------- money_total | text | | extended | | cdc6889c | text | | extended | | Has OIDs: no ?

Павел П.
12.12.2016
07:02:56
...а может это просто пгадмин не так показывает..?

Darafei
12.12.2016
07:03:47
любое название таблицы можно заключать в кавычки

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