临文乍了了,彻卷兀若无。这篇文章主要讲述PostgreSQL Template相关的知识,希望能为你提供帮助。
使用过postgresql 的同学都知道,PostgreSQL 的extension 的厉害,但问题是创建数据库时,如果记不得之前在上一个数据库做过什么 extension 那你在建立下一个数据库的时候,还要 create extension ,除非你记性好,否则 呵呵
在你安装完postgresql 后默认你会有
postgres
template1
template0
这三个数据库,一般来说template0 是不能连接的,而 template0 和 template1 是不能被删除的
在你创建数据库的时候,其实除了你的 create database
databasename
实际上创建数据库的全部语句是
create database new template template1;
根据template1 数据库模板创建数据库NEW
那如果我想删除 template1 数据库怎么办,很简单,我们只要修改pg_database 中的一个参数就可以,删除 template1
详情请见下图
但一定不要对template0 库打任何的主意,一定的保证你有一个干净的库可以生成 template1 。
那上面的问题,如果我讲大部分常用 create extension 都创建到template1中,就可以。
下面举一个列子
我们将大部分的create extension 都建立在 template1 中
然后我们开始建立两个数据库一个使用 template0
一个使用template1 作为模板数据库
postgres=# create database new_without template template0;
CREATE DATABASE
postgres=# create database new_with template template1;
CREATE DATABASE
前提是template1 数据库已经将
create extension pg_freespacemap;
打到了template1数据库上
显而易见的根据template1
创建的 new_with 数据库就不用在去 create extension pg_freespace了
但一般来说使用POSTGRESQL 有以下几个需要注意的小问题
1
不要轻易修改
template1 ,除非是确认在确认没有问题,并且每个数据库都需要的东西
2
如果要个性化的话,可以创建一个数据库,在此上进行修改,并且以此作为模板数据库
3
可以将一些运维中常用的存储过程,函数,create extension 作为一个数据库并且备份,在其他数据库中恢复,然后以此作为基准的数据库模板。
【PostgreSQL Template】
推荐阅读
- MYSQL 8 统计信息持久化 与 null
- MYSQL 5.7 VS 8 用函数你三思,三思
- 如何设计出一个比较合理的数据归档系统
- PostgreSQL 如何“霸占”系统OS cache 提升查询性能
- 看电影也可以学点什么
- gitlab安装与使用
- MYSQL怎么发现处理没有commit 留下的“大”麻烦()
- PostgreSQL 一个可以调整查询代价的数据库
- 可曾听闻大话二字—统计学R语言