65.2. ÐÑÑÑоеннÑе клаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов
РбазовÑй диÑÑÑибÑÑив Postgres Pro вклÑÑÐµÐ½Ñ ÐºÐ»Ð°ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов BRIN, пеÑеÑиÑленнÑе в ТаблиÑе 65.1.
ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов minmax Ñ ÑанÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑе и макÑималÑнÑе знаÑениÑ, вÑÑÑеÑаÑÑиеÑÑ Ð² индекÑиÑованном ÑÑолбÑе в опÑеделÑнной зоне. ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов inclusion Ñ ÑанÑÑ Ð·Ð½Ð°Ñение, в коÑоÑом ÑодеÑжаÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑиÑованного ÑÑолбÑа в опÑеделÑнной зоне. ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов bloom ÑÑÑоÑÑ ÑилÑÑÑ ÐлÑма Ð´Ð»Ñ Ð²ÑÐµÑ Ð·Ð½Ð°Ñений в опÑеделÑнной зоне. ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов minmax-multi Ñ ÑанÑÑ Ð½ÐµÑколÑко минималÑнÑÑ Ð¸ макÑималÑнÑÑ Ð·Ð½Ð°Ñений, вÑÑÑеÑаÑÑÐ¸Ñ ÑÑ Ð² индекÑиÑованном ÑÑолбÑе в опÑеделÑнной зоне.
ТаблиÑа 65.1. ÐÑÑÑоеннÑе клаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов BRIN
| ÐÐ¼Ñ | ÐндекÑиÑÑемÑе опеÑаÑоÑÑ |
|---|---|
bit_minmax_ops | = (bit,bit) |
< (bit,bit) | |
> (bit,bit) | |
<= (bit,bit) | |
>= (bit,bit) | |
box_inclusion_ops | @> (box,point) |
<< (box,box) | |
&< (box,box) | |
&> (box,box) | |
>> (box,box) | |
<@ (box,box) | |
@> (box,box) | |
~= (box,box) | |
&& (box,box) | |
<<| (box,box) | |
&<| (box,box) | |
|&> (box,box) | |
|>> (box,box) | |
bpchar_bloom_ops | = (character,character) |
bpchar_minmax_ops | = (character,character) |
< (character,character) | |
<= (character,character) | |
> (character,character) | |
>= (character,character) | |
bytea_bloom_ops | = (bytea,bytea) |
bytea_minmax_ops | = (bytea,bytea) |
< (bytea,bytea) | |
<= (bytea,bytea) | |
> (bytea,bytea) | |
>= (bytea,bytea) | |
char_bloom_ops | = ("char","char") |
char_minmax_ops | = ("char","char") |
< ("char","char") | |
<= ("char","char") | |
> ("char","char") | |
>= ("char","char") | |
date_bloom_ops | = (date,date) |
date_minmax_ops | = (date,date) |
< (date,date) | |
<= (date,date) | |
> (date,date) | |
>= (date,date) | |
date_minmax_multi_ops | = (date,date) |
< (date,date) | |
<= (date,date) | |
> (date,date) | |
>= (date,date) | |
float4_bloom_ops | = (float4,float4) |
float4_minmax_ops | = (float4,float4) |
< (float4,float4) | |
> (float4,float4) | |
<= (float4,float4) | |
>= (float4,float4) | |
float4_minmax_multi_ops | = (float4,float4) |
< (float4,float4) | |
> (float4,float4) | |
<= (float4,float4) | |
>= (float4,float4) | |
float8_bloom_ops | = (float8,float8) |
float8_minmax_ops | = (float8,float8) |
< (float8,float8) | |
<= (float8,float8) | |
> (float8,float8) | |
>= (float8,float8) | |
float8_minmax_multi_ops | = (float8,float8) |
< (float8,float8) | |
<= (float8,float8) | |
> (float8,float8) | |
>= (float8,float8) | |
inet_inclusion_ops | << (inet,inet) |
<<= (inet,inet) | |
>> (inet,inet) | |
>>= (inet,inet) | |
= (inet,inet) | |
&& (inet,inet) | |
inet_bloom_ops | = (inet,inet) |
inet_minmax_ops | = (inet,inet) |
< (inet,inet) | |
<= (inet,inet) | |
> (inet,inet) | |
>= (inet,inet) | |
inet_minmax_multi_ops | = (inet,inet) |
< (inet,inet) | |
<= (inet,inet) | |
> (inet,inet) | |
>= (inet,inet) | |
int2_bloom_ops | = (int2,int2) |
int2_minmax_ops | = (int2,int2) |
< (int2,int2) | |
> (int2,int2) | |
<= (int2,int2) | |
>= (int2,int2) | |
int2_minmax_multi_ops | = (int2,int2) |
< (int2,int2) | |
> (int2,int2) | |
<= (int2,int2) | |
>= (int2,int2) | |
int4_bloom_ops | = (int4,int4) |
int4_minmax_ops | = (int4,int4) |
< (int4,int4) | |
> (int4,int4) | |
<= (int4,int4) | |
>= (int4,int4) | |
int4_minmax_multi_ops | = (int4,int4) |
< (int4,int4) | |
> (int4,int4) | |
<= (int4,int4) | |
>= (int4,int4) | |
int8_bloom_ops | = (bigint,bigint) |
int8_minmax_ops | = (bigint,bigint) |
< (bigint,bigint) | |
> (bigint,bigint) | |
<= (bigint,bigint) | |
>= (bigint,bigint) | |
int8_minmax_multi_ops | = (bigint,bigint) |
< (bigint,bigint) | |
> (bigint,bigint) | |
<= (bigint,bigint) | |
>= (bigint,bigint) | |
interval_bloom_ops | = (interval,interval) |
interval_minmax_ops | = (interval,interval) |
< (interval,interval) | |
<= (interval,interval) | |
> (interval,interval) | |
>= (interval,interval) | |
interval_minmax_multi_ops | = (interval,interval) |
< (interval,interval) | |
<= (interval,interval) | |
> (interval,interval) | |
>= (interval,interval) | |
macaddr_bloom_ops | = (macaddr,macaddr) |
macaddr_minmax_ops | = (macaddr,macaddr) |
< (macaddr,macaddr) | |
<= (macaddr,macaddr) | |
> (macaddr,macaddr) | |
>= (macaddr,macaddr) | |
macaddr_minmax_multi_ops | = (macaddr,macaddr) |
< (macaddr,macaddr) | |
<= (macaddr,macaddr) | |
> (macaddr,macaddr) | |
>= (macaddr,macaddr) | |
macaddr8_bloom_ops | = (macaddr8,macaddr8) |
macaddr8_minmax_ops | = (macaddr8,macaddr8) |
< (macaddr8,macaddr8) | |
<= (macaddr8,macaddr8) | |
> (macaddr8,macaddr8) | |
>= (macaddr8,macaddr8) | |
macaddr8_minmax_multi_ops | = (macaddr8,macaddr8) |
< (macaddr8,macaddr8) | |
<= (macaddr8,macaddr8) | |
> (macaddr8,macaddr8) | |
>= (macaddr8,macaddr8) | |
name_bloom_ops | = (name,name) |
name_minmax_ops | = (name,name) |
< (name,name) | |
<= (name,name) | |
> (name,name) | |
>= (name,name) | |
numeric_bloom_ops | = (numeric,numeric) |
numeric_minmax_ops | = (numeric,numeric) |
< (numeric,numeric) | |
<= (numeric,numeric) | |
> (numeric,numeric) | |
>= (numeric,numeric) | |
numeric_minmax_multi_ops | = (numeric,numeric) |
< (numeric,numeric) | |
<= (numeric,numeric) | |
> (numeric,numeric) | |
>= (numeric,numeric) | |
oid_bloom_ops | = (oid,oid) |
oid_minmax_ops | = (oid,oid) |
< (oid,oid) | |
> (oid,oid) | |
<= (oid,oid) | |
>= (oid,oid) | |
oid_minmax_multi_ops | = (oid,oid) |
< (oid,oid) | |
> (oid,oid) | |
<= (oid,oid) | |
>= (oid,oid) | |
pg_lsn_bloom_ops | = (pg_lsn,pg_lsn) |
pg_lsn_minmax_ops | = (pg_lsn,pg_lsn) |
< (pg_lsn,pg_lsn) | |
> (pg_lsn,pg_lsn) | |
<= (pg_lsn,pg_lsn) | |
>= (pg_lsn,pg_lsn) | |
pg_lsn_minmax_multi_ops | = (pg_lsn,pg_lsn) |
< (pg_lsn,pg_lsn) | |
> (pg_lsn,pg_lsn) | |
<= (pg_lsn,pg_lsn) | |
>= (pg_lsn,pg_lsn) | |
range_inclusion_ops | = (anyrange,anyrange) |
< (anyrange,anyrange) | |
<= (anyrange,anyrange) | |
>= (anyrange,anyrange) | |
> (anyrange,anyrange) | |
&& (anyrange,anyrange) | |
@> (anyrange,anyelement) | |
@> (anyrange,anyrange) | |
<@ (anyrange,anyrange) | |
<< (anyrange,anyrange) | |
>> (anyrange,anyrange) | |
&< (anyrange,anyrange) | |
&> (anyrange,anyrange) | |
-|- (anyrange,anyrange) | |
text_bloom_ops | = (text,text) |
text_minmax_ops | = (text,text) |
< (text,text) | |
<= (text,text) | |
> (text,text) | |
>= (text,text) | |
tid_bloom_ops | = (tid,tid) |
tid_minmax_ops | = (tid,tid) |
< (tid,tid) | |
> (tid,tid) | |
<= (tid,tid) | |
>= (tid,tid) | |
tid_minmax_multi_ops | = (tid,tid) |
< (tid,tid) | |
> (tid,tid) | |
<= (tid,tid) | |
>= (tid,tid) | |
timestamp_bloom_ops | = (timestamp,timestamp) |
timestamp_minmax_ops | = (timestamp,timestamp) |
< (timestamp,timestamp) | |
<= (timestamp,timestamp) | |
> (timestamp,timestamp) | |
>= (timestamp,timestamp) | |
timestamp_minmax_multi_ops | = (timestamp,timestamp) |
< (timestamp,timestamp) | |
<= (timestamp,timestamp) | |
> (timestamp,timestamp) | |
>= (timestamp,timestamp) | |
timestamptz_bloom_ops | = (timestamptz,timestamptz) |
timestamptz_minmax_ops | = (timestamptz,timestamptz) |
< (timestamptz,timestamptz) | |
<= (timestamptz,timestamptz) | |
> (timestamptz,timestamptz) | |
>= (timestamptz,timestamptz) | |
timestamptz_minmax_multi_ops | = (timestamptz,timestamptz) |
< (timestamptz,timestamptz) | |
<= (timestamptz,timestamptz) | |
> (timestamptz,timestamptz) | |
>= (timestamptz,timestamptz) | |
time_bloom_ops | = (time,time) |
time_minmax_ops | = (time,time) |
< (time,time) | |
<= (time,time) | |
> (time,time) | |
>= (time,time) | |
time_minmax_multi_ops | = (time,time) |
< (time,time) | |
<= (time,time) | |
> (time,time) | |
>= (time,time) | |
timetz_bloom_ops | = (timetz,timetz) |
timetz_minmax_ops | = (timetz,timetz) |
< (timetz,timetz) | |
<= (timetz,timetz) | |
> (timetz,timetz) | |
>= (timetz,timetz) | |
timetz_minmax_multi_ops | = (timetz,timetz) |
< (timetz,timetz) | |
<= (timetz,timetz) | |
> (timetz,timetz) | |
>= (timetz,timetz) | |
uuid_bloom_ops | = (uuid,uuid) |
uuid_minmax_ops | = (uuid,uuid) |
< (uuid,uuid) | |
> (uuid,uuid) | |
<= (uuid,uuid) | |
>= (uuid,uuid) | |
uuid_minmax_multi_ops | = (uuid,uuid) |
< (uuid,uuid) | |
> (uuid,uuid) | |
<= (uuid,uuid) | |
>= (uuid,uuid) | |
varbit_minmax_ops | = (varbit,varbit) |
< (varbit,varbit) | |
> (varbit,varbit) | |
<= (varbit,varbit) | |
>= (varbit,varbit) |
65.2.1. ÐаÑамеÑÑÑ ÐºÐ»Ð°ÑÑа опеÑаÑоÑов
ÐÐ»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
вÑÑÑоеннÑÑ
клаÑÑов опеÑаÑоÑов можно задаваÑÑ Ð¿Ð°ÑамеÑÑÑ, влиÑÑÑие на иÑ
поведение, а именно: Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов опеÑаÑоÑов bloom и minmax-multi. У ÑазнÑÑ
клаÑÑов опеÑаÑоÑов ÑазнÑй Ð½Ð°Ð±Ð¾Ñ Ð´Ð¾Ð¿ÑÑÑимÑÑ
паÑамеÑÑов.
ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов bloom пÑинимаÑÑ ÑÑи паÑамеÑÑÑ:
n_distinct_per_rangeÐпÑеделÑÐµÑ Ð¿Ñедполагаемое колиÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений (без ÑÑÑÑа NULL) в зоне блоков, в завиÑимоÑÑи Ð¾Ñ ÐºÐ¾ÑоÑого вÑбиÑаеÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑилÑÑÑа ÐлÑма в BRIN-индекÑе. РабоÑÐ°ÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно паÑамеÑÑÑ
n_distinctÐ´Ð»Ñ ALTER TABLE. ÐоложиÑелÑное знаÑение непоÑÑедÑÑвенно задаÑÑ Ð¿Ñедполагаемое колиÑеÑÑво. ÐинималÑное колиÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений (без ÑÑÑÑа NULL) знаÑений â16. ÐÑли заданное знаÑение оÑÑиÑаÑелÑно, Ñо колиÑеÑÑво ÑÐ°ÐºÐ¸Ñ Ð·Ð½Ð°Ñений линейно завиÑÐ¸Ñ Ð¾Ñ Ð¼Ð°ÐºÑималÑного возможного ÑиÑла коÑÑежей в зоне блоков (один блок Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð´Ð¾ 290 ÑÑÑок). ÐоÑÑÑиÑиенÑом завиÑимоÑÑи бÑÐ´ÐµÑ Ð¼Ð¾Ð´ÑÐ»Ñ ÑÑого знаÑениÑ, коÑоÑÑй не должен пÑевÑÑаÑÑ 1. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â-0.1.false_positive_rateÐпÑеделÑÐµÑ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼ÑÑ Ð´Ð¾Ð»Ñ Ð»Ð¾Ð¶Ð½ÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑÑ ÑÑабаÑÑваний, в завиÑимоÑÑи Ð¾Ñ ÐºÐ¾ÑоÑой вÑбиÑаеÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑилÑÑÑа ÐлÑма в BRIN-индекÑе. ÐÑинимаÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ñ 0,0001 до 0,25. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0,01, Ñо еÑÑÑ Ð²ÐµÑоÑÑноÑÑÑ Ð»Ð¾Ð¶Ð½ÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑÑ ÑÑабаÑÑваний Ñавна 1%.
ÐлаÑÑÑ Ð¾Ð¿ÐµÑаÑоÑов minmax-multi пÑинимаÑÑ ÑÑи паÑамеÑÑÑ:
values_per_rangeÐпÑеделÑÐµÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво знаÑений, Ñ ÑанимÑÑ BRIN-индекÑами Ñипа minmax Ð´Ð»Ñ Ð¾Ð±Ð¾Ð±ÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии по зоне блоков. Ðаждое знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ Ñобой либо ÑоÑкÑ, либо гÑаниÑÑ Ð¸Ð½ÑеÑвала. ÐÑинимаÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ñ 8 до 256, а знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 32.