powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Партицирование по jsonb
10 сообщений из 10, страница 1 из 1
Партицирование по jsonb
    #39444552
inforse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, добрый день!

Подскажите пожалуйста, работает ли секционирование по jsonb с использование jsquery?

Начал тестировать, оказалось что если использовать явные обращения к объектам :
Код: plsql
1.
CONSTRAINT partitioning_check CHECK (((kz -> 'passport'::text) ->> 'list'::text)::integer) = 715



Код: sql
1.
select 1 from kz_jb where (((kz -> 'passport'::text) ->> 'list'::text)::integer) = 715



То партицирование при обращении к родительской таблице срабатывает.

Но если сделать так :
Код: plsql
1.
CONSTRAINT partitioning_check CHECK (kz@@ '"passport"."list" = 715'::jsquery)



То запрос ходит по всем партициям.

В связи с этим вопрос, реализовано ли секционирование при помощи jsquery?
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444762
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inforse,

Условие в check должно совпадать с условием в запросе.
А вы запросы не привели и я подозреваю что когда по всем партициям шел перебор - вы с условием в запросе что то накрутили не то.
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444764
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

offtop

гораздо страньше, что условие вида where tableoid=constant... не учитывается планировщиком.
//по крайней -- не учитывался, когда я это проверял//

как грицца -- "это всё, что вам нужно знать о ..."
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444795
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqMaxim Boguk,

offtop

гораздо страньше, что условие вида where tableoid=constant... не учитывается планировщиком.
//по крайней -- не учитывался, когда я это проверял//

как грицца -- "это всё, что вам нужно знать о ..."

То что к системным полям таблицы можно обращаться из запросов - совсем не значит что так можно/нужно/стоит делать в реальности кроме ситуации решения каких то проблем с базой.

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444808
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukТо что к системным полям таблицы ...

вернее так:

"то, что так было бы проще решать многие проблемы партицирования (в т.ч. помогать планировщику) совсем не означает, что писатели планировщика колхозники, а вы, максим, -- дятел"

(что--то не могу найти, но вам я уже с мишей это где-то тут сообщал) (да, я болван 17672024 ; 17489274 ; 17470725 ; , как вы помните, но не настолько)
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444812
inforse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Прошу прощения за недостаток информации.

Одна из таблиц партиций
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE seans.seans_kz_jb_701
(
  kz jsonb,
  mix integer,
  CONSTRAINT partitioning_check CHECK (kz @@ '"passport"."list" = 701'::jsquery)
)
INHERITS (seans.seans_kz_jb_)
WITH (
  OIDS=FALSE
);



Запрос:
Код: plsql
1.
select * from seans.seans_kz_jb_ where kz @@ '"passport"."list" = 701'::jsquery



Планировщик:

"Append (cost=0.00..312.56 rows=27 width=36) (actual time=0.214..0.214 rows=0 loops=1)"
" -> Seq Scan on seans_kz_jb_ (cost=0.00..0.00 rows=1 width=36) (actual time=0.002..0.002 rows=0 loops=1)"
" Filter: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_735 (cost=8.01..12.02 rows=1 width=36) (actual time=0.014..0.014 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_735_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.013..0.013 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_716 (cost=8.01..12.02 rows=1 width=36) (actual time=0.010..0.010 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_716_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.009..0.009 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_721 (cost=8.01..12.02 rows=1 width=36) (actual time=0.006..0.006 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_721_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.006..0.006 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_731 (cost=8.01..12.02 rows=1 width=36) (actual time=0.009..0.009 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_731_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.008..0.008 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_744 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_744_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_702 (cost=8.01..12.02 rows=1 width=36) (actual time=0.009..0.009 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_702_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.009..0.009 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_734 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_734_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_733 (cost=8.01..12.02 rows=1 width=36) (actual time=0.004..0.004 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_733_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.004..0.004 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_747 (cost=8.01..12.02 rows=1 width=36) (actual time=0.004..0.004 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_747_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.004..0.004 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_701 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_701_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_754 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_754_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_753 (cost=8.01..12.02 rows=1 width=36) (actual time=0.003..0.003 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_753_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.003..0.003 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_742 (cost=8.01..12.02 rows=1 width=36) (actual time=0.014..0.014 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_742_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.014..0.014 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_732 (cost=8.01..12.02 rows=1 width=36) (actual time=0.008..0.008 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_732_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.008..0.008 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_801 (cost=8.01..12.02 rows=1 width=36) (actual time=0.009..0.009 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_801_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_736 (cost=8.01..12.02 rows=1 width=36) (actual time=0.013..0.013 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_736_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.011..0.011 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_719 (cost=8.01..12.02 rows=1 width=36) (actual time=0.006..0.006 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_719_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.006..0.006 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_723 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_723_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_717 (cost=8.01..12.02 rows=1 width=36) (actual time=0.012..0.012 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_717_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.006..0.006 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_730 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_730_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_755 (cost=8.01..12.02 rows=1 width=36) (actual time=0.014..0.014 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_755_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.013..0.013 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_751 (cost=8.01..12.02 rows=1 width=36) (actual time=0.006..0.006 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_751_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.004..0.004 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_715 (cost=8.01..12.02 rows=1 width=36) (actual time=0.005..0.005 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_715_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_743 (cost=8.01..12.02 rows=1 width=36) (actual time=0.009..0.009 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_743_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.008..0.008 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_745 (cost=8.01..12.02 rows=1 width=36) (actual time=0.005..0.005 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_745_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.003..0.003 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Heap Scan on seans_kz_jb_720 (cost=8.01..12.02 rows=1 width=36) (actual time=0.007..0.007 rows=0 loops=1)"
" Recheck Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
" -> Bitmap Index Scan on seans_kz_jb_720_kz_idx (cost=0.00..8.01 rows=1 width=0) (actual time=0.007..0.007 rows=0 loops=1)"
" Index Cond: (kz @@ '"passport"."list" = 701'::jsquery)"
"Planning time: 3.070 ms"
"Execution time: 0.612 ms"
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444894
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inforse,

Странные дела творятся да.
Судя по документации: "JsQuery matchig operator @@ is immutable and can be used in CHECK constraint." - должно работать.
На всякий случай покажите что у вас говорит \df+ jsquery_json_exec

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39444915
inforse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
Код: powershell
1.
2.
3.
4.
5.
6.
bd=# \df+ jsquery_json_exec
                                                                      List of functions
 Schema |       Name        | Result data type | Argument data types |  Type  | Security | Volatility |  Owner   | Language |    Source code    | Description
--------+-------------------+------------------+---------------------+--------+----------+------------+----------+----------+-------------------+-------------
 dbo    | jsquery_json_exec | boolean          | jsquery, jsonb      | normal | invoker  | immutable  | postgres | c        | jsquery_json_exec |
(1 row)
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39445019
Фотография Rinka777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inforse, pg_pathman секционировали?
...
Рейтинг: 0 / 0
Партицирование по jsonb
    #39445220
inforse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rinka777,

Нет, его не используем.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Партицирование по jsonb
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]