Amit-san, On Wed, Mar 20, 2019 at 3:01 PM, Amit Langote wrote: > > On Wed, Mar 20, 2019 at 2:34 AM, Amit Langote wrote: > >> On 2019/03/20 11:21, Imai, Yoshikazu wrote: > >>> (4) > >>> We expect the performance does not depend on the number of > >>> partitions > >> after applying all patches, if possible. > >>> > >>> num of part TPS > >>> ----------- ----- > >>> 1024 7,257 (7274, 7246, 7252) > >>> 2048 6,718 (6627, 6780, 6747) > >>> 4096 6,472 (6434, 6565, 6416) (quoted from above (3)'s > results) > >>> 8192 6,008 (6018, 5999, 6007) > >>> > >>> It seems the performance still depend on the number of partitions. > >>> At > >> the moment, I don't have any idea what cause this problem but can we > >> improve this more? > >> > >> I've noticed [1] this kind of degradation when the server is built > >> with Asserts enabled. Did you? > >> ... > >> [1] > >> > https://www.postgresql.org/message-id/a49372b6-c044-4ac8-84ea-90ad18 > >> b1770d%40lab.ntt.co.jp > > > > No. I did test again from configuring without --enable-cassert but > problem I mentioned still happens. > > Hmm, OK. Can you describe your test setup with more details?
Here the details. [creating partitioned tables (with 1024 partitions)] drop table if exists rt; create table rt (a int, b int, c int) partition by range (a); \o /dev/null select 'create table rt' || x::text || ' partition of rt for values from (' || (x)::text || ') to (' || (x+1)::text || ');' from generate_series(1, 1024) x; \gexec \o [select1024.sql] \set a random (1, 1024) select * from rt where a = :a; [pgbench] pgbench -n -f select1024.sql -T 60 What I noticed so far is that it also might depends on the query. I created table with 8192 partitions and did select statements like "select * from a = :a (which ranges from 1 to 1024)" and "select * from a = :a (which ranges from 1 to 8192)", and the results of those were different. I'll send perf to off-list. -- Yoshikazu Imai