我正在使用cursor.copy\u expert命令将数据复制到几个postgresql表中。加载数据后,当我运行下面的查询时,我看到针对这些表将模式设置为“AccessShareLock”、“RowExclusiveLock”、“ShareUpdateExclusiveLock”——
select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted from pg_locks l, pg_stat_all_tables t where l.relation=t.relid order by relation asc;
这些表是否被copy_expert命令锁定?不同的表如何与不同的锁关联
在出现此问题的情况下,提交关系级别的所有参数tuning autovacuum和auto analyze已更新为使用SHARE UPDATE EXCLUSIVE LOCK。简言之,这允许读操作和写操作与ALTER TABLE并行进行,这肯定有助于利用此类关系上的活动膨胀
还要注意的是,当使用多个子命令时,整个集合的强锁将在ALTERTABLE命令期间使用。因此,例如,如果参数fillfactor的更新与autovacuum_enabled的修改混合在一起,则将对关系使用访问独占锁,而不是共享更新独占锁。ALTER TABLE使用以下一组锁,以及那些具有单调关系的锁,可以建立它们的层次结构,最强的锁是此处列出的第一个锁:
访问独占锁
共享行独占锁
共享更新独占锁
sql vacuum
相关问题 更多 >
编程相关推荐