On Wednesday, August 5, 2020 9:43 AM I wrote: > I'll report the result before the end of August .
I test v2-0001-build-partdesc-memcxt.patch at 9a9db08ae4 and it is ok. Firstly, I execute ALTER TABLE ADD CONSTRAINT FOREIGN KEY on the table which has 8k tables. This query execution completes in about 22 hours without OOM. Secondary, I confirm the reduction of memory context usage. Running with 8k partitions takes too long, I confirm with 1k partitions. I use gdb and call MemoryContextStats(TopMemoryContext) at addFkRecurseReferencing(). CacheMemoryContext size becomes small, so I think it is working as expected. The Results are as follows. - before applying patch TopMemoryContext: 418896 total in 18 blocks; 91488 free (13 chunks); 327408 used pgstat TabStatusArray lookup hash table: 65536 total in 4 blocks; 16808 free (7 chunks); 48728 used TopTransactionContext: 4194304 total in 10 blocks; 1045728 free (18 chunks); 3148576 used TableSpace cache: 8192 total in 1 blocks; 2048 free (0 chunks); 6144 used Type information cache: 24624 total in 2 blocks; 2584 free (0 chunks); 22040 used Operator lookup cache: 24576 total in 2 blocks; 10712 free (4 chunks); 13864 used RowDescriptionContext: 8192 total in 1 blocks; 6880 free (0 chunks); 1312 used MessageContext: 8192 total in 1 blocks; 3064 free (0 chunks); 5128 used Operator class cache: 8192 total in 1 blocks; 512 free (0 chunks); 7680 used smgr relation table: 32768 total in 3 blocks; 16768 free (8 chunks); 16000 used TransactionAbortContext: 32768 total in 1 blocks; 32504 free (0 chunks); 264 used Portal hash: 8192 total in 1 blocks; 512 free (0 chunks); 7680 used TopPortalContext: 8192 total in 1 blocks; 7648 free (0 chunks); 544 used PortalContext: 9621216 total in 1179 blocks; 13496 free (13 chunks); 9607720 used: Relcache by OID: 16384 total in 2 blocks; 3424 free (3 chunks); 12960 used CacheMemoryContext: 4243584 total in 12 blocks; 1349808 free (12 chunks); 2893776 used index info: 2048 total in 2 blocks; 736 free (0 chunks); 1312 used: pg_trigger_tgconstraint_index index info: 2048 total in 2 blocks; 736 free (0 chunks); 1312 used: pg_trigger_oid_index index info: 2048 total in 2 blocks; 352 free (1 chunks); 1696 used: pg_inherits_relid_seqno_index partition descriptor: 65344 total in 12 blocks; 7336 free (4 chunks); 58008 used: accounts index info: 2048 total in 2 blocks; 736 free (0 chunks); 1312 used: pg_inherits_parent_index partition key: 1024 total in 1 blocks; 160 free (0 chunks); 864 used: accounts ... index info: 2048 total in 2 blocks; 736 free (2 chunks); 1312 used: pg_database_oid_index index info: 2048 total in 2 blocks; 736 free (2 chunks); 1312 used: pg_authid_rolname_index WAL record construction: 49776 total in 2 blocks; 6344 free (0 chunks); 43432 used PrivateRefCount: 8192 total in 1 blocks; 2584 free (0 chunks); 5608 used MdSmgr: 8192 total in 1 blocks; 5528 free (0 chunks); 2664 used LOCALLOCK hash: 131072 total in 5 blocks; 26376 free (15 chunks); 104696 used Timezones: 104128 total in 2 blocks; 2584 free (0 chunks); 101544 used ErrorContext: 8192 total in 1 blocks; 7928 free (3 chunks); 264 used Grand total: 19322960 bytes in 1452 blocks; 2743560 free (186 chunks); 16579400 used - after applying patch TopMemoryContext: 418896 total in 18 blocks; 91488 free (13 chunks); 327408 used pgstat TabStatusArray lookup hash table: 65536 total in 4 blocks; 16808 free (7 chunks); 48728 used TopTransactionContext: 4194304 total in 10 blocks; 1045728 free (18 chunks); 3148576 used RowDescriptionContext: 8192 total in 1 blocks; 6880 free (0 chunks); 1312 used MessageContext: 8192 total in 1 blocks; 3064 free (0 chunks); 5128 used Operator class cache: 8192 total in 1 blocks; 512 free (0 chunks); 7680 used smgr relation table: 32768 total in 3 blocks; 16768 free (8 chunks); 16000 used TransactionAbortContext: 32768 total in 1 blocks; 32504 free (0 chunks); 264 used Portal hash: 8192 total in 1 blocks; 512 free (0 chunks); 7680 used TopPortalContext: 8192 total in 1 blocks; 7648 free (0 chunks); 544 used PortalContext: 9621216 total in 1179 blocks; 13496 free (13 chunks); 9607720 used: Relcache by OID: 16384 total in 2 blocks; 3424 free (3 chunks); 12960 used CacheMemoryContext: 2113600 total in 10 blocks; 556240 free (10 chunks); 1557360 used index info: 2048 total in 2 blocks; 736 free (0 chunks); 1312 used: pg_trigger_tgconstraint_index index info: 2048 total in 2 blocks; 736 free (0 chunks); 1312 used: pg_trigger_oid_index index info: 2048 total in 2 blocks; 352 free (1 chunks); 1696 used: pg_inherits_relid_seqno_index partition descriptor: 65344 total in 12 blocks; 7336 free (4 chunks); 58008 used: accounts index info: 2048 total in 2 blocks; 736 free (0 chunks); 1312 used: pg_inherits_parent_index partition key: 1024 total in 1 blocks; 160 free (0 chunks); 864 used: accounts ... index info: 2048 total in 2 blocks; 736 free (2 chunks); 1312 used: pg_database_oid_index index info: 2048 total in 2 blocks; 736 free (2 chunks); 1312 used: pg_authid_rolname_index WAL record construction: 49776 total in 2 blocks; 6344 free (0 chunks); 43432 used PrivateRefCount: 8192 total in 1 blocks; 2584 free (0 chunks); 5608 used MdSmgr: 8192 total in 1 blocks; 6360 free (0 chunks); 1832 used LOCALLOCK hash: 131072 total in 5 blocks; 26376 free (15 chunks); 104696 used Timezones: 104128 total in 2 blocks; 2584 free (0 chunks); 101544 used ErrorContext: 8192 total in 1 blocks; 7928 free (3 chunks); 264 used Grand total: 17131488 bytes in 1441 blocks; 1936008 free (234 chunks); 15195480 used Finally, I do make check and all tests are passed. So, I'll change this patch status to ready for committer. Regards, Sho Kato