文章目录
1. 给定 db 是否有其他 backend 正在运行
CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 procArray 检查, 检查给定数据库中是否有其他后端正在运行。
该过程由函数 CountOtherDBBackends() 完成。对于该函数:
- 函数原型
- bool
CountOtherDBBackends
(OiddatabaseId
, int *nbackends, int *nprepared)- databaseId 代表CREATE DATABASE 创建时,使用的模板数据库(默认情况下,为 template1, 其
Oid = 1
)
- databaseId 代表CREATE DATABASE 创建时,使用的模板数据库(默认情况下,为 template1, 其
- bool
- 函数作用
- 如果数据库中还有其他后端进程,我们将最多等待
5
秒钟让它们退出。会向Autovacuum
后端进程发送SIGTERM
信号以促使它们尽早退出,但普通用户后端进程则只是等待其自行退出。 - 当前的后端总是被忽略;如果有必要,调用者应自行检查当前后端是否使用了给定的数据库。
- 如果数据库中&#
- 如果数据库中还有其他后端进程,我们将最多等待