本文收集了一些看《PostgresSQL》的知识点整理。
- \? 元命令,可以通过这个命令查询psql中的执行命令。
- COPY命令也是SQL命令,\copy是元命令,COPY命令必须要superuser的超级权限(将数据通过stdin,stdout方式导入导出情况除外),而\copy元命令不需要superuser权限。大数据量导入导出COPY比\copy性能好。
- PG执行最大的字段大小为1GB,虽然文档上说没有申明长度的character varying和text都支持任意长度的字符串,但仍受最大字段大小1GB的限制。此外,从性能上考虑这两种几乎没有差别,只是character(n)类型当存储的字符长度不够时会用空包填充,带来存储空间的浪费。
- WITH查询是PG支持的高级SQL特性之一,CTE(common table Expression),可理解为一个查询中定义的临时表,一般用于复杂查询中的递归。CTE可以简化SQL并且减少嵌套,因为可以预先定义辅助句子,之后在主查询中多次调用。
- PG的returning特性可以返回DML修改的数据,具体为三个场景:insert语句后面接returning属性返回插入的数据;update/delete同样如此。优点在于不需要额外的sql获取这些值,能够方便应用开发。
- PG的upsert特性是指insert ...on conflictupdate,用来解决在数据过程中插入冲突的情况,如果有数据违反约束情况,则整个插入事务将会回滚。
- explain analysis命令表示实际执行这条SQL,同时显示SQL执行计划和执行时间,planning time表示SQL语句解析生成执行计划的时间,execution time表示SQL的实际执行时间。
- 体系结构,PG内部功能实现系统控制器,查询分析器,食物系统,恢复系统,文件系统这几个部分。
- 在PG中有一个数据库集簇(database Cluster)的概念,也有一些地方翻译为数据库集群,指由单个PG服务器实例管理的数据库集合,组成数据库集簇的这些数据库使用相同的全局配置文件和监听端口/共用进程和内存结构,并不是指“一组数据库服务器构成的集群”,在PG中说的某一个数据库实例通常是指某个数据集簇,这一点和其他常见的数据库有一定的差异。
- 守护进程:数据库的起停,监听客户端链接,为每个客户端链接fork单独的postgres服务进程,当服务进程出错时进行修复,管理数据文件,管理与数据库运行相关的辅助进程,当客户端调用接口库向数据库发起连接请求,守护进程会fork单独的服务进程为客户端提供服务。
网友评论