Re: pgbench - allow to create partitioned tables
От | Dilip Kumar |
---|---|
Тема | Re: pgbench - allow to create partitioned tables |
Дата | |
Msg-id | CAFiTN-vJSPgMTT8b-McocsUU0id-kKRNSE86n1tQRZHeAUcXGA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: pgbench - allow to create partitioned tables (Fabien COELHO <coelho@cri.ensmp.fr>) |
Список | pgsql-hackers |
On Fri, Sep 13, 2019 at 2:05 PM Fabien COELHO <coelho@cri.ensmp.fr> wrote: > > > Hello Dilip, > > > + /* For RANGE, we use open-ended partitions at the beginning and end */ > > + if (p == 1) > > + sprintf(minvalue, "minvalue"); > > + else > > + sprintf(minvalue, INT64_FORMAT, (p-1) * part_size + 1); > > + > > + if (p < partitions) > > + sprintf(maxvalue, INT64_FORMAT, p * part_size + 1); > > + else > > + sprintf(maxvalue, "maxvalue"); > > > > I do not understand the reason why first partition need to be > > open-ended? Because we are clear that the minimum value of the aid is 1 > > in pgbench_accout. So if you directly use sprintf(minvalue, > > INT64_FORMAT, (p-1) * part_size + 1); then also it will give 1 as > > minvalue for the first partition and that will be the right thing to do. > > Am I missing something here? > > This is simply for the principle that any value allowed for the primary > key type has a corresponding partition, and also that it exercices these > special values. IMHO, the primary key values for the pgbench_accout tables are always within the defined range minvalue=1 and maxvalue=scale*100000, right? > > It also probably reduces the cost of checking whether a value belongs to > the first partition because one test is removed, so there is a small > additional performance benefit beyond principle and coverage. Ok, I agree that it will slightly reduce the cost for the tuple falling in the first and the last partition. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: