I. 教程
II. SQL 语言
III. 服务器管理
- 章14. 安装指导
- 章15. 在 Windows 上安装客户端
- 章16. 操作系统环境
- 章17. 服务器配置
- 章18. 数据库角色和权限
- 章19. 管理数据库
- 章21. 区域
- 章20. 用户认证
- 章22. 日常数据库维护工作
- 章23. 备份与恢复
- 章24. 高可用性与负载均衡
- 章25. 监控数据库的活动
- 章26. 监控磁盘使用情况
- 章27. 可靠性和预写式日志
- 章28. 回归测试
IV. 客户端接口
- Chapter 28. libpq - C 库
- 章29.
- Chapter 30. ecpg - 在 C 里嵌入 SQL
- Chapter 31. 信息模式
- 31.2. 数据类型
- 31.3. informationschemacatalog_name
- 31.4. applicable_roles
- 31.5. check_constraints
- 31.6. columndomainusage
- 31.7. column_privileges
- 31.8. columnudtusage
- 31.9. columns
- 31.10. constraintcolumnusage
- 31.11. constrainttableusage
- 31.12. datatypeprivileges
- 31.13. domain_constraints
- 31.14. domainudtusage
- 31.15. domains
- 31.16. element_types
- 31.17. enabled_roles
- 31.18. keycolumnusage
- 31.20. referential_constraints
- 31.21. rolecolumngrants
- 31.22. roleroutinegrants
- 31.23. roletablegrants
- 31.24. roleusagegrants
- 31.25. routine_privileges
- 31.26. routines
- 31.27. schemata
- 31.28. sql_features
- 31.29. sqlimplementationinfo
- 31.30. sql_languages
- 31.31. sql_packages
- 31.32. sql_sizing
- 31.33. sqlsizingprofiles
- 31.34. table_constraints
- 31.35. table_privileges
- 31.36. tables
- 31.37. triggers
- 31.38. usage_privileges
- 31.39. viewcolumnusage
- 31.40. viewtableusage
- 31.41. views
V. 服务器端编程
- 章33. 扩展 SQL
- 章34. 触发器
- 章35. 规则系统
- 章36. 过程语言
- 章37. PL/pgSQL - SQL 过程语言
- 章38. PL/Tcl - Tcl 过程语言
- 章39. PL/Perl - Perl 过程语言
- 章40. PL/Python - Python 过程语言
- 章41. 服务器编程接口
VI. 参考手册
- I. SQL 命令
- ABORT
- ALTER AGGREGATE
- ALTER CONVERSION
- ALTER DATABASE
- ALTER DOMAIN
- ALTER FUNCTION
- ALTER GROUP
- ALTER INDEX
- ALTER LANGUAGE
- ALTER OPERATOR
- ALTER OPERATOR CLASS
- ALTER ROLE
- ALTER SCHEMA
- ALTER SEQUENCE
- ALTER TABLE
- ALTER TABLESPACE
- ALTER TRIGGER
- ALTER TYPE
- ALTER USER
- ANALYZE
- BEGIN
- CHECKPOINT
- CLOSE
- CLUSTER
- COMMENT
- COMMIT PREPARED
- COMMIT
- COPY
- CREATE AGGREGATE
- CREATE CAST
- CREATE CONSTRAINT TRIGGER
- CREATE CONVERSION
- CREATE DATABASE
- CREATE DOMAIN
- CREATE FUNCTION
- CREATE GROUP
- CREATE INDEX
- CREATE LANGUAGE
- CREATE OPERATOR CLASS
- CREATE OPERATOR
- CREATE ROLE
- CREATE RULE
- CREATE SCHEMA
- CREATE SEQUENCE
- CREATE TABLE
- CREATE TABLE AS
- CREATE TABLESPACE
- CREATE TRIGGER
- CREATE TYPE
- CREATE USER
- CREATE VIEW
- DEALLOCATE
- DECLARE
- DELETE
- DROP OWNED
- DROP AGGREGATE
- DROP CAST
- DROP CONVERSION
- DROP DATABASE
- DROP DOMAIN
- DROP FUNCTION
- DROP GROUP
- DROP INDEX
- DROP LANGUAGE
- DROP OPERATOR CLASS
- DROP OPERATOR
- DROP ROLE
- DROP RULE
- DROP SCHEMA
- DROP SEQUENCE
- DROP TABLE
- DROP TABLESPACE
- DROP TRIGGER
- DROP TYPE
- DROP USER
- DROP VIEW
- END
- EXECUTE
- EXPLAIN
- FETCH
- GRANT
- INSERT
- LISTEN
- LOAD
- LOCK
- MOVE
- NOTIFY
- PREPARE TRANSACTION
- PREPARE
- REASSIGN OWNED
- REINDEX
- RELEASE SAVEPOINT
- RESET
- REVOKE
- ROLLBACK PREPARED
- ROLLBACK TO SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT
- SELECT INTO
- SET
- SET CONSTRAINTS
- SET ROLE
- SET SESSION AUTHORIZATION
- SET TRANSACTION
- SHOW
- START TRANSACTION
- TRUNCATE
- UNLISTEN
- UPDATE
- VACUUM
- II. PostgreSQL 客户端应用程序
- III. PostgreSQL 服务器应用程序
VII. 内部
- 章42. PostgreSQL 内部概貌
- 章43. 系统表
- 43.1. 概述
- 43.2. pg_aggregate
- 43.3. pg_am
- 43.4. pg_amop
- 43.5. pg_amproc
- 43.6. pg_attrdef
- 43.7. pg_attribute
- 43.8. pg_authid
- 43.9. pgauthmembers
- 43.10. pg_autovacuum
- 43.11. pg_cast
- 43.12. pg_class
- 43.13. pg_constraint
- 43.14. pg_conversion
- 43.15. pg_database
- 43.16. pg_depend
- 43.17. pg_description
- 43.18. pg_index
- 43.19. pg_inherits
- 43.20. pg_language
- 43.21. pg_largeobject
- 43.22. pg_listener
- 43.23. pg_namespace
- 43.24. pg_opclass
- 43.25. pg_operator
- 43.26. pg_pltemplate
- 43.27. pg_proc
- 43.28. pg_rewrite
- 43.29. pg_shdepend
- 43.30. pg_shdescription
- 43.31. pg_statistic
- 43.32. pg_tablespace
- 43.33. pg_trigger
- 43.34. pg_type
- 43.35. 系统视图
- 43.36. pg_cursors
- 43.37. pg_group
- 43.38. pg_indexes
- 43.39. pg_locks
- 43.40. pgpreparedstatements
- 43.41. pgpreparedxacts
- 43.42. pg_roles
- 43.43. pg_rules
- 43.44. pg_settings
- 43.45. pg_shadow
- 43.46. pg_stats
- 43.47. pg_tables
- 43.48. pgtimezoneabbrevs
- 43.49. pgtimezonenames
- 43.50. pg_user
- 43.51. pg_views
- 章44. 前/后端协议
- 章45. PostgreSQL 编码约定
- 章46. 本地语言支持
- 章47. 书写一个过程语言处理器
- 章48. 基因查询优化器
- 章49. 索引访问方法接口定义
- 章50. GiST 索引
- 章51. GIN 索引
- 章52. 数据库物理存储
- 章53. BKI 后端接口
- 章54. 规划器如何使用统计信息
VIII. 附录
17.10. 客户端连接缺省
17.10.1. 语句行为
search_path
(string
)这个变量声明模式的搜索顺序,在一个被引用对象(表、数据类型、函数等)只是一个简单名字,没有附加模式部分时需要这样的搜索。如果在另外一个模式里有一个相同的对象名,那么使用在这个搜索路径中找到的第一个。一个不在搜索路径中任何一个模式里出现的对象只能通过其所在模式的全称(打点的)名字来声明。
search_path
的值必需是一个逗号分隔的模式名列表。列表中的特殊值$user
与SESSION_USER
所代换的名字一样(如果存在这个模式的话,否则$user
将被忽略)。系统表模式
pg_catalog
总是被搜索,不管是否在搜索路径。如果在路径中,那么按照路径指定的顺序搜索,否则它将在任何路径项之前搜索。我们还要注意的是,临时表模式pg_temp_
也隐含在任何这些项之前搜索。nnn
如果创建对象时没有声明特定的目标模式,那么它将被放进搜索路径中的第一个模式。如果搜索路径是空的,那么会报告一个错误。
这个参数的缺省值是
'"$user", public'
(如果没有public
模式那么第二部分将被忽略)。这样就支持共享使用一个数据库(没有用户拥有私有模式,所有人都共享使用public
)、私有的针对每个用户的模式、以及两者的组合。其它效果可以通过全局或者针对每个用户修改搜索路径设置获取。搜索路径当前值可以用 SQL 函数
current_schemas()
检查。它和检查search_path
的值不太一样,因为current_schemas()
显示的是在search_path
里出现的请求如何被分析。有关模式处理的更多信息,参阅节5.7。
default_tablespace
(string
)这个变量声明当
CREATE
命令没有明确声明表空间时,所创建对象(表和索引等)的缺省表空间。值要么是一个表空间的名字,要么是一个表明使用当前数据库缺省表空间的空字符串。如果这个数值和任意现存表空间的名字都不匹配,那么 PostgreSQL 将自动使用当前数据库的缺省表空间。
有关表空间的更多的信息,参阅节19.6。
check_function_bodies
(boolean
)这个参数通常是
on
。设置为off
表示在 CREATE FUNCTION 时关闭函数体字符串的合法性检查。关闭合法性检查有时候会有用,比如避免从转储中恢复函数定义时向前引用的问题。default_transaction_isolation
(string
)每个 SQL 事务都有一个隔离级别,可以是"读未提交","读已提交","可重复读"或者是"可串性化"。这个参数控制每个新事务的隔离级别。缺省是读已提交。
参考章12和 SET TRANSACTION 获取更多信息。
default_transaction_read_only
(boolean
)只读的 SQL 事务不能修改非临时表。这个参数控制每个新事务的只读状态。缺省是
off
(读/写)。参考 SET TRANSACTION 获取更多信息。
statement_timeout
(integer
)退出任何使用了超过此参数指定时间(毫秒)的语句,从服务器收到命令时开始计时。如果
log_min_error_statement
设置为ERROR
或者更低,那么也会在日志中记录超时。零值(缺省)关闭这个计时器。vacuum_freeze_min_age
(integer
)指定
VACUUM
在扫描一个表时用于判断是否用FrozenXID
替换事务ID的中断寿命(在同一个事务中)。缺省值为 100000000(1亿)。虽然用户可以指定一个 0-1000000000 之间的值,但是VACUUM
将会悄无声息的将有效值限制在 autovacuum_freeze_max_age 的一半之内。更多信息参见 节22.1.3。
17.10.2. 区域和格式化
DateStyle
(string
)设置日期和时间值的显示格式,以及有歧义的输入值的解析规则。由于历史原因,这个变量包含两个独立的部分:输出格式声明(
ISO
,Postgres
,SQL
,German
)、输入输出的年/月/日顺序(DMY
,MDY
,YMD
)。这两个可以独立设置或者一起设置。关键字Euro
和European
等价于DMY
;关键字US
,NonEuro
,NonEuropean
等价于MDY
。参阅节8.5获取更多信息。内置缺省是ISO, MDY
,但是 initdb 将在初始化配置文件时根据lc_time
选择一个合适的默认设置。timezone
(string
)设置用于显示和解析时间戳的时区。缺省值
'unknown'
意味着使用系统环境声明的时区。参阅节8.5获取更多信息。timezone_abbreviations
(string
)设置服务器接受日期时间输入中使用的时区缩写集合。缺省值
'Default'
在全世界大多数地方都能工作的很好。另外的可用值还有'Australia'和'India'等其它值。参见附录B以获取更多信息。extra_float_digits
(integer
)这个参数为浮点数值调整显示的数据位数,浮点类型包括
float4
,float8
以及几何数据类型。参数值加在标准的数据位数上(FLT_DIG
或DBL_DIG
中合适的)。数值可以设置为最高 2 ,以包括部分关键的数据位;这个功能对转储那些需要精确恢复的浮点数据特别有用。或者你也可以把它设置位负数以消除不需要的数据位。client_encoding
(string
)设置客户端编码(字符集)。缺省使用数据库编码。
lc_messages
(string
)设置信息显示的语言。可接受的值是系统相关的;参阅节21.1获取更多信息。如果这个变量设置为空字符串(缺省值),那么其值将以一种系统相关的方式从服务器的执行环境中继承。
在一些系统上,这个区域范畴并不存在,不过仍然允许设置这个变量,只是不会有任何效果。同样,也有可能是所期望的语言的翻译信息不存在。在这种情况下,你仍然能看到英文信息。
只有超级用户可以改变这个设置。因为它同时影响发送到服务器日志和客户端的信息。
lc_monetary
(string
)为格式化金额数量设置区域。比如用于
to_char
函数族。可接受的值是系统相关的;参阅节21.1获取更多信息。如果这个变量设置为空字符串(缺省值),那么其值将以一种系统相关的方式从服务器的执行环境中继承。lc_numeric
(string
)设置用于格式化数字的区域,比如用于
to_char
函数族。可接受的值是系统相关的;参阅节21.1获取更多信息。如果这个变量设置为空字符串(缺省值),那么其值将以一种系统相关的方式从服务器的执行环境中继承。lc_time
(string
)设置用于格式化日期和时间值的区域。目前,这个设置什么事也没干,但将来可能会有用。可接受的值是系统相关的;参阅节21.1获取更多信息。如果这个变量设置为空字符串(缺省值),那么其值将以一种系统相关的方式从服务器的执行环境中继承。
17.10.3. 其它缺省
explain_pretty_print
(boolean
)决定
EXPLAIN VERBOSE
是否使用缩进格式显示详细的查询树转储。缺省是on
。dynamic_library_path
(string
)如果需要打开一个可以动态装载的模块并且在
CREATE FUNCTION
或LOAD
命令里面声明的名字没有目录部分(也就是说名字里不包含斜杠),那么系统将搜索这个目录以查找声明的文件。用于
dynamic_library_path
的数值必须是一个冒号分隔(或者是在 Windows 上分号分隔)的绝对路径列表。如果一个路径名字以特殊变量$libdir
(PostgreSQL 编译好的库目录)开头,那么就替换为 PostgreSQL 发布提供的模块安装路径。这是标准 PostgreSQL 发布提供的模块安装的目录(使用pg_config --pkglibdir
打印这个目录名)。比如:dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
或者是在 Windows 环境里:
dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
这个参数的缺省值是
'$libdir'
。如果把这个值设置为一个空字符串,则关闭自动路径搜索。这个参数可以在运行时由超级用户修改,但是这么修改的设置只能保持到这个客户端连接的结束,因此这个方法应该保留给开发用途使用。我们建议在
postgresql.conf
配置文件里设置。gin_fuzzy_search_limit
(integer
)GIN 索引返回的集合尺寸软上限。更多信息参见节51.4。
local_preload_libraries
(string
)指定在开始连接前预先加载一个或多个共享库,多个库之间用逗号分隔。该参数不能在会话开始之后更改。
因为并非只有超级用户才能更改此选项,因此只能加载安装的标准库目录下
plugins
子目录中的库文件,数据库管理员有责任确保该目录中的库都是安全的。local_preload_libraries
中指定的项可以明确含有该目录,例如$libdir/plugins/mylib
;也可以仅指定库的名字,例如mylib
(等价于$libdir/plugins/mylib
)。在会话开始之前加载模块与在回话中使用到该模块的时候临时加载相比并不具有性能优势。这个特性的目的是为了调试或者测量在特定会话中不明确使用
LOAD
加载库时的性能。例如针对某个用户将该参数设为ALTER USER SET
来进行调试。如果指定的库未找到,那么连接将失败。
每一个支持 PostgreSQL 的库都有一个"magic block"用于确保兼容性。因此不支持 PostgreSQL 的库不能通过这个方法加载。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论