tag 标签: PostgreSQL

相关博文
  • 热度 6
    2023-6-16 17:39
    841 次阅读|
    0 个评论
    PostgreSQ服务器配置参数在优化和增强数据库性能方面发挥着重要作用。PostgreSQL的主要可调设置位于名为 postgresql.conf 的纯文本文件中,该文件位于数据库目录结构的底部。这些配置参数中的大多数大致分为以下几类: 1、数据库连接参数 2、记录参数 3、内存参数 下面,小编就详细给大家介绍一下PostgreSQL服务器配置的参数指南。 一、连接参数 有许多配置参数可以控制人们如何远程和本地连接到数据库。 1、监听地址 任何需要从远程系统连接的安装都需要更改listen_addresses以允许连接。默认情况下仅允许来自登录到与数据库服务器相同系统的用户的本地连接。一种常见的方法是接受来自任何地方的传入连接——就主配置文件而言,如下所示:listen_addresses = '*' 2、最大连接数 Max_connections是我们在initdb生成的postgresql.conf中总是会发现设置为一个值的设置之一,通常为100。因为每个连接都使用少量的共享内存,所以共享内存默认值特别有限的系统甚至可能不允许这么多连接。因此,在创建数据库集群时,initdb会进行一些调查,然后将支持的最大值(最多100)保存到默认配置中。实际上,每个客户端用于诸如排序之类的事情的非共享内存量将使它相形见绌,但不能完全忽略共享组件。 重要的是不要将此参数设置为比您需要的值高得多的值。较大的设置有几个缺点。第一个是浪费的共享内存,通常是最后一个要关注的事情,因为每个连接的数量很小。 二、记录参数 常规日志记录设置至关重要,因为日志记录在调试错误、警告和其他系统问题中起着至关重要的作用。我们可能需要设置log_destination、log_directory和log_filename等参数,以符合我们环境的系统管理要求的方式保存我们的日志文件。在大多数系统上,这些都将设置为合理的默认值以开始使用。在类UNIX系统上,一些数据库日志记录通常在启动和停止服务器的脚本中设置,而不是直接在postgresql.conf 文件中设置。 1、log_line_prefix 默认的log_line_prefix参数是空的,一个好的起始值如下: 这会将以下内容放入每个日志行: %t:时间戳%u:数据库用户名%r:远程主机连接%d:数据库%p:连接的进程ID 2、日志语句 语句日志记录是一种用于查找性能问题的强大技术。分析log_statement保存的信息和语句级详细信息的相关来源可以揭示许多类型的性能问题的真正来源。此设置的选项如下: none:不记录任何语句级信息。 ddl:仅记录数据定义语言(DDL)语句,例如CREATE和DROP。这通常可以保留,即使在生产中,也可以用于捕获管理员无意或有意引入的重大更改。 mod:记录任何修改值的语句,除了简单的SELECT语句外,它基本上是所有内容。如果我们的工作负载主要是基于SELECT且数据更改相对较少,则始终启用此功能可能很实用。 all:记录每条语句。由于日志记录的开销,这在生产中通常是不切实际的。但是,如果我们的服务器相对于它的工作负载来说足够强大,那么让它一直保持运行可能是可行的。 log_min_duration_statement 一旦我们对执行典型的查询语句需要多长时间有了一些了解,此设置允许您仅记录超过我们设置的阈值的语句。该值以毫秒为单位,因此我们可以设置以下内容: log_min_duration_statement=1000 这样,我们将只会看到运行时间超过1秒的语句。这对于找出比大多数执行时间长得多的离群语句的来源非常方便。 三、内存参数 数据库组件需要内存来缓存频繁访问的数据、事务日志和排序数据。因此,正确调整内存参数至关重要,因为它可以帮助优化数据库性能。 1、共享缓冲区 该参数的值定义了PostgreSQL共享缓冲池的大小。换句话说,此参数控制PostgreSQL用于缓存数据的内存量。128 MB的默认值对于任何现实世界的工作负载来说都非常低,需要加强。此值应根据数据集大小设置,数据库服务器应该在峰值负载和可用RAM的基础上处理。事实上的经验法则是,在RAM超过1GB的系统上,此参数的合理值约为系统内存的四分之一。此参数的值也可以设置为更大的值,并且理想情况下有效的最大设置为可用RAM的40%。但是将它增加到超过该限制可能不会有效,因为PostgreSQL也依赖于操作系统缓存来进行操作。较大的shared_buffers参数值意味着增加 checkpoint_segments 值,以便在一段时间内分散写入大量新数据或更改数据的过程。此值只能在服务器启动时设置。 2、临时缓冲区 此参数定义每个数据库会话用于缓存临时表数据的内存量。这些基本上是会话本地缓冲区,仅用于访问临时表。在Postgresql版本9.4中,此参数的默认值为八,并且此设置可以在单个会话中更改,但只能在会话中首次使用临时表之前更改。任何后续更改该值的尝试都不会影响现有会话。 3、维护工作内存 此参数定义维护操作使用的最大内存量,即VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY 操作需要更多工作内存。要注意的是,这些会话中的许多会话不太可能同时执行这些操作,因此可以将此值设置为比标准每个客户端work_mem设置大得多的值。在PostgreSQL 版本9.4中,此参数的默认值设置为64MB。这里需要注意的一点是,当autovacuum运行时,autovacuum_max_workers的值分配此内存的次数。从优化的角度并考虑到没有增加autovacuum worker的数量,一个好的配置设置是将其设置为系统总内存的5%左右,这样即使五个这样的进程也不会超过可用内存的四分之一记忆。这大约相当于每GB服务器系统内存50 MB的maintenance_work_mem。 以上是PostgreSQL服务器配置的参数指南介绍,希望能帮助到大家参考!
相关资源
  • 所需E币: 0
    时间: 2023-6-21 19:00
    大小: 2.31KB
    上传者: 开心就很好了
    分享一套PostgreSQL视频教程——《PostgreSQLDBA实战视频教程》,2023年完结新课,基于PostgreSQL14.6版本!7门课程合集,提供配套的全部文档资料!课程1、PostgreSQL安装与管理课程2、PostgreSQL数据库SQL基础课程3、PostgreSQL表详解课程4、PostgreSQL索引详解课程5、PostgreSQL对象管理课程6、PostgreSQL安全管理课程7、PostgreSQL并发控制文档资料1、什么是PostgreSQL?PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。2、PostgreSQL特征函数:通过函数,可以在数据库服务器端执行指令程序。索引:用户可以自定义索引方法,或使用内置的B树,哈希表与GiST索引。触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversionconcurrencycontrol)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。数据类型:包括文本、任意精度的数值数组、JSON数据、枚举类型、XML数据等。全文检索:通过Tsearch2或OpenFTS,8.3版本中内嵌Tsearch2。NoSQL:JSON,JSONB,XML,HStore原生支持,至NoSQL数据库的外部数据包装器。数据仓库:能平滑迁移至同属PostgreSQL生态的GreenPlum,DeepGreen,HAWK等,使用FDW进行ETL。
  • 所需E币: 0
    时间: 2023-6-25 08:59
    大小: 1.51KB
    PostgreSQLDBA实战视频教程2023|PostgreSQL14.6教程课程1、PostgreSQL安装与管理课程2、PostgreSQL数据库SQL基础课程3、PostgreSQL表详解课程4、PostgreSQL索引详解课程5、PostgreSQL对象管理课程6、PostgreSQL安全管理课程7、PostgreSQL并发控制文档资料想要理解PostgreSQL的数据库结构,需要先了解一些重要的概念。数据库相关概念:PostgreSQL由一系列数据库组成。一套PostgreSQL程序称之为一个数据库群集。当initdb()命令执行后,template0,template1,和postgres数据库被创建。template0和template1数据库是创建用户数据库时使用的模版数据库,他们包含系统元数据表。initdb()刚完成后,template0和template1数据库中的表是一样的。但是template1数据库可以根据用户需要创建对象。用户数据库是通过克隆template1数据库来创建的;表空间相关概念:initdb()后马上创建pg_default和pg_global表空间。建表时如果没有指定特定的表空间,表默认被存在pg_default表空间中。用于管理整个数据库集群的表默认被存储在pg_global表空间中。pg_default表空间的物理位置为$PGDATA\base目录。pg_global表空间的物理位置为$PGDATA\global目录。一个表空间可以被多个数据库同时使用。此时,每一个数据库都会在表空间路径下创建为一个新的子路径。创建一个用户表空间会在$PGDATA\pg_tblspc目录下面创建一个软连接,连接到表空间制定的目录位置。表相关概念:每个表有三个数据文件。一个文件用于存储数据,文件名是表的OID。一个文件用于管理表的空闲空间,文件名是OID_fsm。一个文件用于管理表的块是否可见,文件名是OID_vm。索引没有_vm文件,只有OID和OID_fsm两个文件创建用户idpostgres-查看是否有postgres用户groupaddpostgres-添加postgres组useradd-gpostgrespostgres-添加postgres用户passwdpostgres-修改postgres密码mkdir-p/data/postgres/13.2/-创建数据库目录chown-Rpostgres:postgres/data/-修改数据库目录权限修改环境变量目的是为了不需要指定可执行文件(如psql、pg_ctl等)的绝对路径修改postgres用户的~/.bash_profile,也可以直接修改~/.bashrcPATH=xxx:/data/postgres/13.2/binPGDATA=/data/postgres/13.2/dataexportPATHexportPGDATAsource~/.bashrc执行psql验证环境变量修改生效如何启停数据库ps-ef|greppostges-检查数据库是否运行pg_ctlstop-mfast-停止数据库pg_ctlstart-D/data/postgres/13/2/data-l~/startup.log-启动数据库pg_ctlstatus-检查数据库状态
  • 所需E币: 1
    时间: 2023-4-10 18:32
    大小: 44.96MB
    PostgreSQL查询引擎源码技术探析-李浩