目录搜索
前言何为PostgreSQL?PostgreSQL简史格式约定更多信息臭虫汇报指导I. 教程章1. 从头开始1.1. 安装1.2. 体系基本概念1.3. 创建一个数据库1.4. 访问数据库章2. SQL语言2.1. 介绍2.2. 概念2.3. 创建新表2.4. 向表中添加行2.5. 查询一个表2.6. 表间链接2.7. 聚集函数2.8. 更新2.9. 删除章3. 高级特性3.1. 介绍3.2. 视图3.3. 外键3.4. 事务3.5. 窗口函数3.6. 继承3.7. 结论II. SQL语言章4. SQL语法4.1. 词法结构4.2. 值表达式4.3. 调用函数章5. 数据定义5.1. 表的基本概念5.2. 缺省值5.3. 约束5.4. 系统字段5.5. 修改表5.6. 权限5.7. 模式5.8. 继承5.9. 分区5.10. 其它数据库对象5.11. 依赖性跟踪章 6. 数据操作6.1. 插入数据6.2. 更新数据6.3. 删除数据章7. 查询7.1. 概述7.2. 表表达式7.3. 选择列表7.4. 组合查询7.5. 行排序7.6. LIMIT和OFFSET7.7. VALUES列表7.8. WITH的查询(公用表表达式)章8. 数据类型8.1. 数值类型8.2. 货币类型8.3. 字符类型8.4. 二进制数据类型8.5. 日期/时间类型8.6. 布尔类型8.7. 枚举类型8.8. 几何类型8.9. 网络地址类型8.10. 位串类型8.11. 文本搜索类型8.12. UUID类型8.13. XML类型8.14. 数组8.15. 复合类型8.16. 对象标识符类型8.17. 伪类型章 9. 函数和操作符9.1. 逻辑操作符9.2. 比较操作符9.3. 数学函数和操作符9.4. 字符串函数和操作符9.5. 二进制字符串函数和操作符9.6. 位串函数和操作符9.7. 模式匹配9.8. 数据类型格式化函数9.9. 时间/日期函数和操作符9.10. 支持枚举函数9.11. 几何函数和操作符9.12. 网络地址函数和操作符9.13. 文本检索函数和操作符9.14. XML函数9.15. 序列操作函数9.16. 条件表达式9.17. 数组函数和操作符9.18. 聚合函数9.19. 窗口函数9.20. 子查询表达式9.21. 行和数组比较9.22. 返回集合的函数9.23. 系统信息函数9.24. 系统管理函数9.25. 触发器函数章10. 类型转换10.3. 函数10.2. 操作符10.1. 概述10.4. 值存储10.5. UNION章11. 索引11.1. 介绍11.2. 索引类型11.3. 多字段索引11.4. 索引和ORDER BY11.5. 组合多个索引11.6. 唯一索引11.7. 表达式上的索引11.8. 部分索引11.9. 操作类和操作簇11.10. 检查索引的使用章12. Full Text Search12.1. Introduction12.2. Tables and Indexes12.3. Controlling Text Search12.4. Additional Features12.5. Parsers12.6. Dictionaries12.7. Configuration Example12.8. Testing and Debugging Text Search12.9. GiST and GIN Index Types12.10. psql Support12.11. Limitations12.12. Migration from Pre-8.3 Text Search章13. 并发控制13.1. 介绍13.2. 事务隔离13.3. 明确锁定13.4. 应用层数据完整性检查13.5. 锁和索引章14. 性能提升技巧14.1. 使用EXPLAIN14.2. 规划器使用的统计信息14.3. 用明确的JOIN语句控制规划器14.4. 向数据库中添加记录14.5. 非持久性设置III. 服务器管理章15. 安装指导15.1. 简版15.2. 要求15.3. 获取源码15.4. 升级15.5. 安装过程15.6. 安装后的设置15.7. 支持的平台15.8. 特殊平台的要求章16. Installation from Source Code on Windows16.1. Building with Visual C++ or the Platform SDK16.2. Building libpq with Visual C++ or Borland C++章17. 服务器安装和操作17.1. PostgreSQL用户帐户17.2. 创建数据库集群17.3. 启动数据库服务器17.4. 管理内核资源17.5. 关闭服务17.6. 防止服务器欺骗17.7. 加密选项17.8. 用SSL进行安全的TCP/IP连接17.9. Secure TCP/IP Connections with SSH Tunnels章18. 服务器配置18.1. 设置参数18.2. 文件位置18.3. 连接和认证18.4. 资源消耗18.5. 预写式日志18.6. 查询规划18.7. 错误报告和日志18.8. 运行时统计18.9. 自动清理18.10. 客户端连接缺省18.12. 版本和平台兼容性18.11. 锁管理18.13. 预置选项18.14. 自定义的选项18.15. 开发人员选项18.16. 短选项章19. 用户认证19.1. pg_hba.conf 文件19.2. 用户名映射19.3. 认证方法19.4. 用户认证章20. 数据库角色和权限20.1. 数据库角色20.2. 角色属性20.3. 权限20.4. 角色成员20.5. 函数和触发器章21. 管理数据库21.1. 概述21.2. 创建一个数据库21.3. 临时库21.4. 数据库配置21.5. 删除数据库21.6. 表空间章22. 本土化22.1. 区域支持22.2. 字符集支持章23. 日常数据库维护工作23.1. Routine Vacuuming日常清理23.2. 经常重建索引23.3. 日志文件维护章24. 备份和恢复24.1. SQL转储24.2. 文件系统级别的备份24.3. 在线备份以及即时恢复(PITR)24.4. 版本间迁移章25. 高可用性与负载均衡,复制25.1. 不同解决方案的比较25.2. 日志传送备份服务器25.3. 失效切换25.4. 日志传送的替代方法25.5. 热备章26. 恢复配置26.1. 归档恢复设置26.2. 恢复目标设置26.3. 备服务器设置章27. 监控数据库的活动27.1. 标准Unix工具27.2. 统计收集器27.3. 查看锁27.4. 动态跟踪章28. 监控磁盘使用情况28.1. 判断磁盘的使用量28.2. 磁盘满导致的失效章29. 可靠性和预写式日志29.1. 可靠性29.2. 预写式日志(WAL)29.3. 异步提交29.4. WAL配置29.5. WAL内部章30. Regression Tests30.1. Running the Tests30.2. Test Evaluation30.3. Variant Comparison Files30.4. Test Coverage ExaminationIV. 客户端接口章31. libpq-C库31.1. 数据库联接函数31.2. 连接状态函数31.3. 命令执行函数31.4. 异步命令处理31.5. 取消正在处理的查询31.6. 捷径接口31.7. 异步通知31.8. 与COPY命令相关的函数31.9. Control Functions 控制函数31.10. 其他函数31.11. 注意信息处理31.12. 事件系统31.13. 环境变量31.14. 口令文件31.15. 连接服务的文件31.16. LDAP查找连接参数31.17. SSL支持31.18. 在多线程程序里的行为31.19. 制作libpq程序31.20. 例子程序章32. 大对象32.1. 介绍32.2. 实现特点32.3. 客户端接口32.4. 服务器端函数32.5. 例子程序章33. ECPG - Embedded SQL in C33.1. The Concept33.2. Connecting to the Database Server33.3. Closing a Connection33.4. Running SQL Commands33.5. Choosing a Connection33.6. Using Host Variables33.7. Dynamic SQL33.8. pgtypes library33.9. Using Descriptor Areas33.10. Informix compatibility mode33.11. Error Handling33.12. Preprocessor directives33.13. Processing Embedded SQL Programs33.14. Library Functions33.15. Internals章34. 信息模式34.1. 关于这个模式34.2. 数据类型34.3. information_schema_catalog_name34.4. administrable_role_authorizations34.5. applicable_roles34.6. attributes34.7. check_constraint_routine_usage34.8. check_constraints34.9. column_domain_usage34.10. column_privileges34.11. column_udt_usage34.12. 字段34.13. constraint_column_usage34.14. constraint_table_usage34.15. data_type_privileges34.16. domain_constraints34.18. domains34.17. domain_udt_usage34.19. element_types34.20. enabled_roles34.21. foreign_data_wrapper_options34.22. foreign_data_wrappers34.23. foreign_server_options34.24. foreign_servers34.25. key_column_usage34.26. parameters34.27. referential_constraints34.28. role_column_grants34.29. role_routine_grants34.30. role_table_grants34.31. role_usage_grants34.32. routine_privileges34.33. routines34.34. schemata34.35. sequences34.36. sql_features34.37. sql_implementation_info34.38. sql_languages34.39. sql_packages34.40. sql_parts34.41. sql_sizing34.42. sql_sizing_profiles34.43. table_constraints34.44. table_privileges34.45. tables34.46. triggered_update_columns34.47. 触发器34.48. usage_privileges34.49. user_mapping_options34.50. user_mappings34.51. view_column_usage34.52. view_routine_usage34.53. view_table_usage34.54. 视图V. 服务器端编程章35. 扩展SQL35.1. 扩展性是如何实现的35.2. PostgreSQL类型系统35.3. User-Defined Functions35.4. Query Language (SQL) Functions35.5. Function Overloading35.6. Function Volatility Categories35.7. Procedural Language Functions35.8. Internal Functions35.9. C-Language Functions35.10. User-Defined Aggregates35.11. User-Defined Types35.12. User-Defined Operators35.13. Operator Optimization Information35.14. Interfacing Extensions To Indexes35.15. 用C++扩展章36. 触发器36.1. 触发器行为概述36.3. 用 C 写触发器36.2. 数据改变的可视性36.4. 一个完整的例子章37. 规则系统37.1. The Query Tree37.2. 视图和规则系统37.3. 在INSERT,UPDATE和DELETE上的规则37.4. 规则和权限37.5. 规则和命令状态37.6. 规则与触发器得比较章38. Procedural Languages38.1. Installing Procedural Languages章39. PL/pgSQL - SQL过程语言39.1. 概述39.2. PL/pgSQL的结构39.3. 声明39.4. 表达式39.5. 基本语句39.6. 控制结构39.7. 游标39.8. 错误和消息39.9. 触发器过程39.10. PL/pgSQL Under the Hood39.11. 开发PL/pgSQL的一些提示39.12. 从OraclePL/SQL 进行移植章40. PL/Tcl - Tcl Procedural Language40.1. Overview40.2. PL/Tcl Functions and Arguments40.3. Data Values in PL/Tcl40.4. Global Data in PL/Tcl40.5. Database Access from PL/Tcl40.6. Trigger Procedures in PL/Tcl40.7. Modules and the unknown command40.8. Tcl Procedure Names章41. PL/Perl - Perl Procedural Language41.1. PL/Perl Functions and Arguments41.2. Data Values in PL/Perl41.3. Built-in Functions41.4. Global Values in PL/Perl41.6. PL/Perl Triggers41.5. Trusted and Untrusted PL/Perl41.7. PL/Perl Under the Hood章42. PL/Python - Python Procedural Language42.1. Python 2 vs. Python 342.2. PL/Python Functions42.3. Data Values42.4. Sharing Data42.5. Anonymous Code Blocks42.6. Trigger Functions42.7. Database Access42.8. Utility Functions42.9. Environment Variables章43. Server Programming Interface43.1. Interface FunctionsSpi-spi-connectSpi-spi-finishSpi-spi-pushSpi-spi-popSpi-spi-executeSpi-spi-execSpi-spi-execute-with-argsSpi-spi-prepareSpi-spi-prepare-cursorSpi-spi-prepare-paramsSpi-spi-getargcountSpi-spi-getargtypeidSpi-spi-is-cursor-planSpi-spi-execute-planSpi-spi-execute-plan-with-paramlistSpi-spi-execpSpi-spi-cursor-openSpi-spi-cursor-open-with-argsSpi-spi-cursor-open-with-paramlistSpi-spi-cursor-findSpi-spi-cursor-fetchSpi-spi-cursor-moveSpi-spi-scroll-cursor-fetchSpi-spi-scroll-cursor-moveSpi-spi-cursor-closeSpi-spi-saveplan43.2. Interface Support FunctionsSpi-spi-fnameSpi-spi-fnumberSpi-spi-getvalueSpi-spi-getbinvalSpi-spi-gettypeSpi-spi-gettypeidSpi-spi-getrelnameSpi-spi-getnspname43.3. Memory ManagementSpi-spi-pallocSpi-reallocSpi-spi-pfreeSpi-spi-copytupleSpi-spi-returntupleSpi-spi-modifytupleSpi-spi-freetupleSpi-spi-freetupletableSpi-spi-freeplan43.4. Visibility of Data Changes43.5. ExamplesVI. 参考手册I. SQL命令Sql-abortSql-alteraggregateSql-alterconversionSql-alterdatabaseSql-alterdefaultprivilegesSql-alterdomainSql-alterforeigndatawrapperSql-alterfunctionSql-altergroupSql-alterindexSql-alterlanguageSql-alterlargeobjectSql-alteroperatorSql-alteropclassSql-alteropfamilySql-alterroleSql-alterschemaSql-altersequenceSql-alterserverSql-altertableSql-altertablespaceSql-altertsconfigSql-altertsdictionarySql-altertsparserSql-altertstemplateSql-altertriggerSql-altertypeSql-alteruserSql-alterusermappingSql-alterviewSql-analyzeSql-beginSql-checkpointSql-closeSql-clusterSql-commentSql-commitSql-commit-preparedSql-copySql-createaggregateSql-createcastSql-createconstraintSql-createconversionSql-createdatabaseSql-createdomainSql-createforeigndatawrapperSql-createfunctionSql-creategroupSql-createindexSql-createlanguageSql-createoperatorSql-createopclassSql-createopfamilySql-createroleSql-createruleSql-createschemaSql-createsequenceSql-createserverSql-createtableSql-createtableasSql-createtablespaceSql-createtsconfigSql-createtsdictionarySql-createtsparserSql-createtstemplateSql-createtriggerSql-createtypeSql-createuserSql-createusermappingSql-createviewSql-deallocateSql-declareSql-deleteSql-discardSql-doSql-dropaggregateSql-dropcastSql-dropconversionSql-dropdatabaseSql-dropdomainSql-dropforeigndatawrapperSql-dropfunctionSql-dropgroupSql-dropindexSql-droplanguageSql-dropoperatorSql-dropopclassSql-dropopfamilySql-drop-ownedSql-droproleSql-dropruleSql-dropschemaSql-dropsequenceSql-dropserverSql-droptableSql-droptablespaceSql-droptsconfigSql-droptsdictionarySql-droptsparserSql-droptstemplateSql-droptriggerSql-droptypeSql-dropuserSql-dropusermappingSql-dropviewSql-endSql-executeSql-explainSql-fetchSql-grantSql-insertSql-listenSql-loadSql-lockSql-moveSql-notifySql-prepareSql-prepare-transactionSql-reassign-ownedSql-reindexSql-release-savepointSql-resetSql-revokeSql-rollbackSql-rollback-preparedSql-rollback-toSql-savepointSql-selectSql-selectintoSql-setSql-set-constraintsSql-set-roleSql-set-session-authorizationSql-set-transactionSql-showSql-start-transactionSql-truncateSql-unlistenSql-updateSql-vacuumSql-valuesII. 客户端应用程序App-clusterdbApp-createdbApp-createlangApp-createuserApp-dropdbApp-droplangApp-dropuserApp-ecpgApp-pgconfigApp-pgdumpApp-pg-dumpallApp-pgrestoreApp-psqlApp-reindexdbApp-vacuumdbIII. PostgreSQL服务器应用程序App-initdbApp-pgcontroldataApp-pg-ctlApp-pgresetxlogApp-postgresApp-postmasterVII. 内部章44. PostgreSQL内部概览44.1. 查询路径44.2. 连接是如何建立起来的44.3. 分析器阶段44.4. ThePostgreSQL规则系统44.5. 规划器/优化器44.6. 执行器章45. 系统表45.1. 概述45.2. pg_aggregate45.3. pg_am45.4. pg_amop45.5. pg_amproc45.6. pg_attrdef45.7. pg_attribute45.8. pg_authid45.9. pg_auth_members45.10. pg_cast45.11. pg_class45.12. pg_constraint45.13. pg_conversion45.14. pg_database45.15. pg_db_role_setting45.16. pg_default_acl45.17. pg_depend45.18. pg_description45.19. pg_enum45.20. pg_foreign_data_wrapper45.21. pg_foreign_server45.22. pg_index45.23. pg_inherits45.24. pg_language45.25. pg_largeobject45.26. pg_largeobject_metadata45.27. pg_namespace45.28. pg_opclass45.29. pg_operator45.30. pg_opfamily45.31. pg_pltemplate45.32. pg_proc45.33. pg_rewrite45.34. pg_shdepend45.35. pg_shdescription45.36. pg_statistic45.37. pg_tablespace45.38. pg_trigger45.39. pg_ts_config45.40. pg_ts_config_map45.41. pg_ts_dict45.42. pg_ts_parser45.43. pg_ts_template45.44. pg_type45.45. pg_user_mapping45.46. System Views45.47. pg_cursors45.48. pg_group45.49. pg_indexes45.50. pg_locks45.51. pg_prepared_statements45.52. pg_prepared_xacts45.53. pg_roles45.54. pg_rules45.55. pg_settings45.56. pg_shadow45.57. pg_stats45.58. pg_tables45.59. pg_timezone_abbrevs45.60. pg_timezone_names45.61. pg_user45.62. pg_user_mappings45.63. pg_views章46. Frontend/Backend Protocol46.1. Overview46.2. Message Flow46.3. Streaming Replication Protocol46.4. Message Data Types46.5. Message Formats46.6. Error and Notice Message Fields46.7. Summary of Changes since Protocol 2.047. PostgreSQL Coding Conventions47.1. Formatting47.2. Reporting Errors Within the Server47.3. Error Message Style Guide章48. Native Language Support48.1. For the Translator48.2. For the Programmer章49. Writing A Procedural Language Handler章50. Genetic Query Optimizer50.1. Query Handling as a Complex Optimization Problem50.2. Genetic Algorithms50.3. Genetic Query Optimization (GEQO) in PostgreSQL50.4. Further Reading章51. 索引访问方法接口定义51.1. 索引的系统表记录51.2. 索引访问方法函数51.3. 索引扫描51.4. 索引锁的考量51.5. 索引唯一性检查51.6. 索引开销估计函数章52. GiST Indexes52.1. Introduction52.2. Extensibility52.3. Implementation52.4. Examples52.5. Crash Recovery章53. GIN Indexes53.1. Introduction53.2. Extensibility53.3. Implementation53.4. GIN tips and tricks53.5. Limitations53.6. Examples章54. 数据库物理存储54.1. 数据库文件布局54.2. TOAST54.3. 自由空间映射54.4. 可见映射54.5. 数据库分页文件章55. BKI后端接口55.1. BKI 文件格式55.2. BKI命令55.3. 系统初始化的BKI文件的结构55.4. 例子章56. 规划器如何使用统计信息56.1. 行预期的例子VIII. 附录A. PostgreSQL错误代码B. 日期/时间支持B.1. 日期/时间输入解析B.2. 日期/时间关键字B.3. 日期/时间配置文件B.4. 日期单位的历史C. SQL关键字D. SQL ConformanceD.1. Supported FeaturesD.2. Unsupported FeaturesE. Release NotesRelease-0-01Release-0-02Release-0-03Release-1-0Release-1-01Release-1-02Release-1-09Release-6-0Release-6-1Release-6-1-1Release-6-2Release-6-2-1Release-6-3Release-6-3-1Release-6-3-2Release-6-4Release-6-4-1Release-6-4-2Release-6-5Release-6-5-1Release-6-5-2Release-6-5-3Release-7-0Release-7-0-1Release-7-0-2Release-7-0-3Release-7-1Release-7-1-1Release-7-1-2Release-7-1-3Release-7-2Release-7-2-1Release-7-2-2Release-7-2-3Release-7-2-4Release-7-2-5Release-7-2-6Release-7-2-7Release-7-2-8Release-7-3Release-7-3-1Release-7-3-10Release-7-3-11Release-7-3-12Release-7-3-13Release-7-3-14Release-7-3-15Release-7-3-16Release-7-3-17Release-7-3-18Release-7-3-19Release-7-3-2Release-7-3-20Release-7-3-21Release-7-3-3Release-7-3-4Release-7-3-5Release-7-3-6Release-7-3-7Release-7-3-8Release-7-3-9Release-7-4Release-7-4-1Release-7-4-10Release-7-4-11Release-7-4-12Release-7-4-13Release-7-4-14Release-7-4-15Release-7-4-16Release-7-4-17Release-7-4-18Release-7-4-19Release-7-4-2Release-7-4-20Release-7-4-21Release-7-4-22Release-7-4-23Release-7-4-24Release-7-4-25Release-7-4-26Release-7-4-27Release-7-4-28Release-7-4-29Release-7-4-3Release-7-4-30Release-7-4-4Release-7-4-5Release-7-4-6Release-7-4-7Release-7-4-8Release-7-4-9Release-8-0Release-8-0-1Release-8-0-10Release-8-0-11Release-8-0-12Release-8-0-13Release-8-0-14Release-8-0-15Release-8-0-16Release-8-0-17Release-8-0-18Release-8-0-19Release-8-0-2Release-8-0-20Release-8-0-21Release-8-0-22Release-8-0-23Release-8-0-24Release-8-0-25Release-8-0-26Release-8-0-3Release-8-0-4Release-8-0-5Release-8-0-6Release-8-0-7Release-8-0-8Release-8-0-9Release-8-1Release-8-1-1Release-8-1-10Release-8-1-11Release-8-1-12Release-8-1-13Release-8-1-14Release-8-1-15Release-8-1-16Release-8-1-17Release-8-1-18Release-8-1-19Release-8-1-2Release-8-1-20Release-8-1-21Release-8-1-22Release-8-1-23Release-8-1-3Release-8-1-4Release-8-1-5Release-8-1-6Release-8-1-7Release-8-1-8Release-8-1-9Release-8-2Release-8-2-1Release-8-2-10Release-8-2-11Release-8-2-12Release-8-2-13Release-8-2-14Release-8-2-15Release-8-2-16Release-8-2-17Release-8-2-18Release-8-2-19Release-8-2-2Release-8-2-20Release-8-2-21Release-8-2-3Release-8-2-4Release-8-2-5Release-8-2-6Release-8-2-7Release-8-2-8Release-8-2-9Release-8-3Release-8-3-1Release-8-3-10Release-8-3-11Release-8-3-12Release-8-3-13Release-8-3-14Release-8-3-15Release-8-3-2Release-8-3-3Release-8-3-4Release-8-3-5Release-8-3-6Release-8-3-7Release-8-3-8Release-8-3-9Release-8-4Release-8-4-1Release-8-4-2Release-8-4-3Release-8-4-4Release-8-4-5Release-8-4-6Release-8-4-7Release-8-4-8Release-9-0Release-9-0-1Release-9-0-2Release-9-0-3Release-9-0-4F. 额外提供的模块F.1. adminpackF.2. auto_explainF.3. btree_ginF.4. btree_gistF.5. chkpassF.6. citextF.7. cubeF.8. dblinkContrib-dblink-connectContrib-dblink-connect-uContrib-dblink-disconnectContrib-dblinkContrib-dblink-execContrib-dblink-openContrib-dblink-fetchContrib-dblink-closeContrib-dblink-get-connectionsContrib-dblink-error-messageContrib-dblink-send-queryContrib-dblink-is-busyContrib-dblink-get-notifyContrib-dblink-get-resultContrib-dblink-cancel-queryContrib-dblink-get-pkeyContrib-dblink-build-sql-insertContrib-dblink-build-sql-deleteContrib-dblink-build-sql-updateF.9. dict_intF.10. dict_xsynF.11. earthdistanceF.12. fuzzystrmatchF.13. hstoreF.14. intaggF.15. intarrayF.16. isnF.17. loF.18. ltreeF.19. oid2nameF.20. pageinspectF.21. passwordcheckF.22. pg_archivecleanupF.23. pgbenchF.24. pg_buffercacheF.25. pgcryptoF.26. pg_freespacemapF.27. pgrowlocksF.28. pg_standbyF.29. pg_stat_statementsF.30. pgstattupleF.31. pg_trgmF.32. pg_upgradeF.33. segF.34. spiF.35. sslinfoF.36. tablefuncF.37. test_parserF.38. tsearch2F.39. unaccentF.40. uuid-osspF.41. vacuumloF.42. xml2G. 外部项目G.1. 客户端接口G.2. 过程语言G.3. 扩展H. The Source Code RepositoryH.1. Getting The Source Via GitI. 文档I.1. DocBookI.2. 工具集I.3. 制作文档I.4. 文档写作I.5. 风格指导J. 首字母缩略词参考书目BookindexIndex
文字

9.24. 系统管理函数

Table 9-54显示了那些可以用于查询以及修改运行时配置参数的函数

Table 9-54. 配置设置函数

名称 返回类型 描述
current_setting(setting_name) text 获取当前的设置值
set_config(setting_namenew_valueis_local) text 设置参数并返回新值

current_setting用于以查询形式获取setting_name设置的当前值。 它和SQL命令SHOW是等效的。例如:

SELECT current_setting('datestyle');

 current_setting
-----------------
 ISO, MDY
(1 row)

set_config将参数setting_name设置为new_value。 如果is_localtrue, 那么新值将只应用于当前事务。如果你希望新值应用于当前会话, 那么应该使用false。它等效于 SQL 命令SET。例如:

SELECT set_config('log_statement_stats', 'off', false);

 set_config
------------
 off
(1 row)

Table 9-55里的函数向其它服务器进程发送控制信号。只有超级用户才能使用这些函数

Table 9-55. 服务器信号函数

名称 返回类型 描述
pg_cancel_backend(pidint) boolean 取消一个后端的当前查询
pg_terminate_backend(pidint) boolean 终止一个后端服务进程
pg_reload_conf() boolean 导致所有服务器进程重新装载它们的配置文件
pg_rotate_logfile() boolean 滚动服务器的日志文件

如果成功,这些函数返回true,否则返回false

pg_cancel_backendpg_terminate_backend向由 pid 标识的后端进程发送一个查询取消(SIGINT)信号。 一个活动的后端进程的 PID 可以从pg_stat_activity视图的 procpid 字段找到,或者在Unix服务器上用ps, Windows上Task Manager任务管理器列出postgres进程。

pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器进程重新装载配置文件。

pg_rotate_logfile给日志文件管理器发送信号,告诉它立即切换到一个新的输出文件。 这个函数只有在 redirect_stderr 用于日志输出的时候才有用,否则根本不存在日志文件管理器子进程。

Table 9-56里的函数帮助我们进行在线备份。在恢复中不能执行这些函数。只有超级用户才能使用头三个函数。

Table 9-56. 备份控制函数

名称 返回类型 描述
pg_start_backup(labeltext[fastboolean]) text 准备执行在线备份
pg_stop_backup() text 终止执行在线备份
pg_switch_xlog() text 强制切换到一个新的事务日志文件
pg_current_xlog_location() text 获取当前事务日志的写入位置
pg_current_xlog_insert_location() text 获取当前事务日志的插入位置
pg_xlogfile_name_offset(locationtext) textinteger 将事务日志的位置字符串转换为文件名并返回在文件中的字节偏移量
pg_xlogfile_name(locationtext) text 将事务日志的位置字符串转换为文件名

pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放的名)。 这个函数向数据库集群的数据目录写入一个备份标签文件backup_label), 然后以文本方式返回备份的事务日志起始位置。用户不需要关心这个返回值,提供它只是为了万一需要的场合

postgres=# select pg_start_backup('label_goes_here');
 pg_start_backup
-----------------
 0/D4445B8
(1 row)

这里有个可选的第二个boolean类型的参数。如果true,将指定尽可能快速执行pg_start_backup。 在I/O操作插入的这些强制即时检查点,减慢任何当前执行的查询。

pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个 备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志 起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置(同样也 可能没有什么用)。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件, 这样,结束的事务日志文件可以被立即归档从而完成备份。

pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定你使用连续归档)。 返回值是刚刚完成的事务日志文件的事务日志结束位置+1。如果自从最后一次事务日志切换以来没有活动的事务日志, 那么pg_switch_xlog什么事也不做,直接返回当前使用事务日志文件的开始位置。

pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。 类似的,pg_current_xlog_insert_location显示当前事务日志的插入点。 插入点是事务日志在某个瞬间的"逻辑终点",而实际的写入位置则是从服务器内部 缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果想归档部分 完成的事务日志文件,那么这个通常就是你想要的结果。插入点主要用于服务器调试目的。 上述两个函数既是只读操作也不需要超级用户权限。

从上所述函数的返回结果中抽取相应的事务日志文件名称和字节偏移量。例如:

postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
        file_name         | file_offset 
--------------------------+-------------
 00000001000000000000000D |     4039624
(1 row)

类似的,pg_xlogfile_name仅仅抽取事务日志文件名称。如果给定的事务日志 位置恰好位于事务日志文件的交界上,这两个函数都返回前一个事务日志文件的名字。 自从前一个文件是当前最后一个需要归档的文件,这对于管理事务日志归档来说通常是期望的行为。

有关正确使用这些函数的细节,见Section 24.3。

Table 9-57显示函数信息,提供有关当前备用数据库状态的信息。 这些函数可能在恢复和正常运行间运行。

Table 9-57. 恢复信息函数

名称 返回类型 描述
pg_is_in_recovery() bool 如果恢复仍然在进程中,返回true。
pg_last_xlog_receive_location() text 获取最后一个事务日志接收并通过流媒体复制同步到磁盘的位置。在流复制过程中,这将单向增加。 但是当流复制重启时,将回到流复制的起始位置,即通常WAL文件的开头(包含当前重播)位置。 如果恢复已完成,这会保持在最后WAL记录值不变。在恢复过程中,接收并同步到磁盘的值。 如果不能用流复制,或还没有开始,返回NULL。
pg_last_xlog_replay_location() text 获取重播在恢复过程中的最后一个事务日志位置。如果恢复仍然在进程中,则将单向增加。 如果恢复已完成此值将保持静态在最后WAL在恢复过程中应用一条记录的值。 当服务器已启动正常而无需恢复时,函数返回NULL。

Table 9-58中显示的函数计算数据库对象使用的实际磁盘空间

Table 9-58. 数据库对象尺寸函数

名称 返回类型 描述
pg_column_size(any) int 存储一个指定的数值需要的字节数(可能压缩过)
pg_total_relation_size(regclass) bigint 指定表OID或表名使用的总磁盘空间,包括所有索引和TOAST数据。
pg_table_size(regclass) bigint 指定表OID或表名使用的磁盘空间,除去索引(但是包含TOAST,自由空间映射和可视映射)
pg_indexes_size(regclass) bigint 关联指定表OID或表名的表索引的使用总磁盘空间
pg_database_size(oid) bigint 指定OID的数据库使用的磁盘空间
pg_database_size(name) bigint 指定名称的数据库使用的磁盘空间
pg_tablespace_size(oid) bigint 指定 OID 的表空间使用的磁盘空间
pg_tablespace_size(name) bigint 指定名的表空间使用的磁盘空间。
pg_relation_size(relationregclassforktext) bigint 一个指定OID或名的表或索引,通过指定fork('main''fsm'or'vm')所使用的磁盘空间。
pg_relation_size(relationregclass) bigint 简写为pg_relation_size(..., 'main')
pg_size_pretty(bigint) text 把字节计算的大小转换成一个人类易读的大小

pg_column_size显示用于存储某个独立数据值的空间。

pg_total_relation_size接受表OID或表名或toast表,返回该表包含所有关联索引的总磁盘空间。这个函数等价于 pg_table_size+pg_indexes_size

pg_table_size接受一个表OID或名,返回该表需要的磁盘空间,除去索引。(包含TOAST 空间,自由空间映射和可见映射。)

pg_indexes_size接受一个表OID或名,返回关联该表的所有索引的总磁盘空间大小。

pg_database_sizepg_tablespace_size接受一个数据库的OID或名,然后返回该对象使用的全部磁盘空间。

pg_relation_size接受一个表、索引、toast表的 OID 或名字,然后返回它们以字节计的大小。 指定'main'或省去第二个参数返回关系中主数据fork的大小。指定'fsm'返回 关联这个关系的自由空间映射大小。(见Section 54.3)指定'vm'返回关联这个关系的可见映射大小。 (见Section 54.4)注意这个函数显示只一个fork的大小;对于大多而言,使用高级别函数pg_total_relation_sizepg_table_size 更方便。

pg_size_pretty用于把其它函数的结果格式化成一种人类易读的格式,可以根据情况使用KB 、MB 、GB 、TB

在Table 9-59显示的函数,有助于识别与数据库对象相关的特定磁盘文件。

Table 9-59. 数据库对象本地函数

名称 名称 描述
pg_relation_filenode(relationregclass) oid 指定OID或名关系的Filenode数
pg_relation_filepath(relationregclass) text 指定OID或名的关系的文件路径名

pg_relation_filenode接受一个表,索引,序列或toast表的OID或名,返回当前赋予的"filenode"数。 filenode是用于关系的文件名基本组件。(见Section 54.1获取更多信息)。对于大多数表pg_class.relfilenode 的结果相同,但是对于某种系统表relfilenode是0,并且必须使用此函数获取正确的值。 如果传递一个没有存储如视图的关系,此函数将返回 NULL。

pg_relation_filepath类似于pg_relation_filenode,但它返回关系的整个文件的路径名。 (相对于数据库集群的数据目录PGDATA

Table 9-60里的函数提供了对数据库服务器所在机器上的文件的本地访问接口。 只有那些在数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配 log_directory配置设置的路径访问日志文件。只有超级用户才能使用这些函数。

Table 9-60. 通用文件访问函数

名称 返回类型 描述
pg_ls_dir(dirnametext) setof text 列出目录中的文件
pg_read_file(filenametextoffsetbigintlengthbigint) text 返回一个文本文件的内容
pg_stat_file(filenametext) record 返回一个文件的信息

pg_ls_dir返回指定目录里面的除了特殊项"."".."之外所有名字

pg_read_file返回一个文本文件的一部分,从offset开始,返回最多length 字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,那么它就是相对于文件结尾回退的长度。

pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、 最后文件状态修改时间戳(只在 Unix 平台上可用)、文件创建 时间戳(只在 Windows 平台上可用)、是否为目录的boolean值。典型的用法:

SELECT * FROM pg_stat_file('filename');
SELECT (pg_stat_file('filename')).modification;

Table 9-61中的函数用于管理咨询锁(Advisory Lock)。有关正确使用这些函数的细节,参阅Section 13.3.4

Table 9-61. 咨询锁函数

名称 返回类型 描述
pg_advisory_lock(keybigint) void 获取排斥咨询锁
pg_advisory_lock(key1intkey2int) void 获取排斥咨询锁
pg_advisory_lock_shared(keybigint) void 获取共享咨询锁
pg_advisory_lock_shared(key1intkey2int) void 获取共享咨询锁
pg_try_advisory_lock(keybigint) boolean 尝试获取排斥咨询锁
pg_try_advisory_lock(key1intkey2int) boolean 尝试获取排斥咨询锁
pg_try_advisory_lock_shared(keybigint) boolean 尝试获取共享咨询锁
pg_try_advisory_lock_shared(key1intkey2int) boolean 尝试获取共享咨询锁
pg_advisory_unlock(keybigint) boolean 释放排斥咨询锁
pg_advisory_unlock(key1intkey2int) boolean 释放排斥咨询锁
pg_advisory_unlock_shared(keybigint) boolean 释放共享咨询锁
pg_advisory_unlock_shared(key1intkey2int) boolean 释放共享咨询锁
pg_advisory_unlock_all() void 释放当前会话持有的所有咨询锁

pg_advisory_lock锁定一个应用程序定义的资源,该资源可以用一个 64 位或两个不重叠的 32 位键值标识。在pg_locks.objid指定键值类型。如果已经有另外的会话锁定了该资源,那么该函数将会阻塞到该资源可用 为止。这个锁是排斥的。多个锁定请求将会被压入栈中,因此, 如果同一个资源被锁定了三次,那么它必须被解锁三次以将资源释放给其它会话使用。

pg_advisory_lock_shared类似于pg_advisory_lock, 不同之处仅在于共享锁可以和其它请求共享锁的会话共享,但排斥锁除外。

pg_try_advisory_lock类似于pg_advisory_lock,不同之处在于该函数不会阻塞以等待资源的释放。 它要么立即获得锁并返回true,要么返回false表示目前不能锁定

pg_try_advisory_lock_shared类似于pg_try_advisory_lock,不同之处在于该函数尝试获得共享锁而不是排斥锁

pg_advisory_unlock释放先前取得的排斥咨询锁。如果释放成功则返回true。如果指定的锁实际上并未持有, 那么它将返回false并在服务器中产生一条 SQL 警告信息。

pg_advisory_unlock_shared类似于pg_advisory_unlock不同之处在于该函数释放的是共享咨询锁

pg_advisory_unlock_all将会释放当前会话持有的所有咨询锁,该函数在会话结束的时候被隐含调用,即使客户端异常地断开连接也是一样。

上一篇:下一篇: