那么这三个数据库在磁盘中是如何存储的呢?我们看到/usr/pgdata/base目录下存在三个目录文件,对应的恰好是三个database的OID。
What is the FUCK OID?
OID是一个数字,对于PostgreSQL的database和某个database内的table都会有一个唯一的OID和它对应,对于我这个解释不太满意的,可以看PostgreSQL的国内大牛德哥的博文 get PostgreSQL’s next oid。从原理到代码解释的都比较清楚。我就不唧唧歪歪了。
新装好的的PostgreSQL会有三个默认的database,对应在pgdata目录下的base下,每个database都有自己的目录。如果我们通过createdb新创建一个database,那么,可以期待在pgdata/base目录下会新增一个以db OID为名字的目录,我们验证之: