mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Reduce lock level for altering fillfactor
Fabrízio de Royes Mello and Simon Riggs
This commit is contained in:
@ -561,7 +561,7 @@ ALTER TABLE ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable>
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Changing autovacuum storage parameters acquires a <literal>SHARE UPDATE EXCLUSIVE</literal> lock.
|
Changing fillfactor and autovacuum storage parameters acquires a <literal>SHARE UPDATE EXCLUSIVE</literal> lock.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
|
@ -100,7 +100,7 @@ static relopt_int intRelOpts[] =
|
|||||||
"fillfactor",
|
"fillfactor",
|
||||||
"Packs table pages only to this percentage",
|
"Packs table pages only to this percentage",
|
||||||
RELOPT_KIND_HEAP,
|
RELOPT_KIND_HEAP,
|
||||||
AccessExclusiveLock
|
ShareUpdateExclusiveLock /* since it applies only to later inserts */
|
||||||
},
|
},
|
||||||
HEAP_DEFAULT_FILLFACTOR, HEAP_MIN_FILLFACTOR, 100
|
HEAP_DEFAULT_FILLFACTOR, HEAP_MIN_FILLFACTOR, 100
|
||||||
},
|
},
|
||||||
@ -109,7 +109,7 @@ static relopt_int intRelOpts[] =
|
|||||||
"fillfactor",
|
"fillfactor",
|
||||||
"Packs btree index pages only to this percentage",
|
"Packs btree index pages only to this percentage",
|
||||||
RELOPT_KIND_BTREE,
|
RELOPT_KIND_BTREE,
|
||||||
AccessExclusiveLock
|
ShareUpdateExclusiveLock /* since it applies only to later inserts */
|
||||||
},
|
},
|
||||||
BTREE_DEFAULT_FILLFACTOR, BTREE_MIN_FILLFACTOR, 100
|
BTREE_DEFAULT_FILLFACTOR, BTREE_MIN_FILLFACTOR, 100
|
||||||
},
|
},
|
||||||
@ -118,7 +118,7 @@ static relopt_int intRelOpts[] =
|
|||||||
"fillfactor",
|
"fillfactor",
|
||||||
"Packs hash index pages only to this percentage",
|
"Packs hash index pages only to this percentage",
|
||||||
RELOPT_KIND_HASH,
|
RELOPT_KIND_HASH,
|
||||||
AccessExclusiveLock
|
ShareUpdateExclusiveLock /* since it applies only to later inserts */
|
||||||
},
|
},
|
||||||
HASH_DEFAULT_FILLFACTOR, HASH_MIN_FILLFACTOR, 100
|
HASH_DEFAULT_FILLFACTOR, HASH_MIN_FILLFACTOR, 100
|
||||||
},
|
},
|
||||||
@ -127,7 +127,7 @@ static relopt_int intRelOpts[] =
|
|||||||
"fillfactor",
|
"fillfactor",
|
||||||
"Packs gist index pages only to this percentage",
|
"Packs gist index pages only to this percentage",
|
||||||
RELOPT_KIND_GIST,
|
RELOPT_KIND_GIST,
|
||||||
AccessExclusiveLock
|
ShareUpdateExclusiveLock /* since it applies only to later inserts */
|
||||||
},
|
},
|
||||||
GIST_DEFAULT_FILLFACTOR, GIST_MIN_FILLFACTOR, 100
|
GIST_DEFAULT_FILLFACTOR, GIST_MIN_FILLFACTOR, 100
|
||||||
},
|
},
|
||||||
@ -136,7 +136,7 @@ static relopt_int intRelOpts[] =
|
|||||||
"fillfactor",
|
"fillfactor",
|
||||||
"Packs spgist index pages only to this percentage",
|
"Packs spgist index pages only to this percentage",
|
||||||
RELOPT_KIND_SPGIST,
|
RELOPT_KIND_SPGIST,
|
||||||
AccessExclusiveLock
|
ShareUpdateExclusiveLock /* since it applies only to later inserts */
|
||||||
},
|
},
|
||||||
SPGIST_DEFAULT_FILLFACTOR, SPGIST_MIN_FILLFACTOR, 100
|
SPGIST_DEFAULT_FILLFACTOR, SPGIST_MIN_FILLFACTOR, 100
|
||||||
},
|
},
|
||||||
|
@ -2065,19 +2065,19 @@ select * from my_locks order by 1;
|
|||||||
commit;
|
commit;
|
||||||
begin; alter table alterlock set (fillfactor = 100);
|
begin; alter table alterlock set (fillfactor = 100);
|
||||||
select * from my_locks order by 1;
|
select * from my_locks order by 1;
|
||||||
relname | max_lockmode
|
relname | max_lockmode
|
||||||
-----------+---------------------
|
-----------+--------------------------
|
||||||
alterlock | AccessExclusiveLock
|
alterlock | ShareUpdateExclusiveLock
|
||||||
pg_toast | AccessExclusiveLock
|
pg_toast | ShareUpdateExclusiveLock
|
||||||
(2 rows)
|
(2 rows)
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
begin; alter table alterlock reset (fillfactor);
|
begin; alter table alterlock reset (fillfactor);
|
||||||
select * from my_locks order by 1;
|
select * from my_locks order by 1;
|
||||||
relname | max_lockmode
|
relname | max_lockmode
|
||||||
-----------+---------------------
|
-----------+--------------------------
|
||||||
alterlock | AccessExclusiveLock
|
alterlock | ShareUpdateExclusiveLock
|
||||||
pg_toast | AccessExclusiveLock
|
pg_toast | ShareUpdateExclusiveLock
|
||||||
(2 rows)
|
(2 rows)
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
@ -2110,10 +2110,10 @@ rollback;
|
|||||||
-- test that mixing options with different lock levels works as expected
|
-- test that mixing options with different lock levels works as expected
|
||||||
begin; alter table alterlock set (autovacuum_enabled = off, fillfactor = 80);
|
begin; alter table alterlock set (autovacuum_enabled = off, fillfactor = 80);
|
||||||
select * from my_locks order by 1;
|
select * from my_locks order by 1;
|
||||||
relname | max_lockmode
|
relname | max_lockmode
|
||||||
-----------+---------------------
|
-----------+--------------------------
|
||||||
alterlock | AccessExclusiveLock
|
alterlock | ShareUpdateExclusiveLock
|
||||||
pg_toast | AccessExclusiveLock
|
pg_toast | ShareUpdateExclusiveLock
|
||||||
(2 rows)
|
(2 rows)
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
Reference in New Issue
Block a user