postgresql 后台进程backgroud writer

在对数据进行处理之前都需要将数据从磁盘读到内存中,更新完毕后再将修改的数据写回磁盘,在postgresql数据中由backgroud writer与server process负责将“脏“数据写回磁盘。数据库执行flush数据大致过程:先由backgroud writer进程进行写,剩余的数据再由server process进程完成。

影响backgroud writer进程写数据的参数有以下几个:
bgwriter_delay:
backgroud writer进程连续两次flush数据之间的时间的间隔。默认值是200,单位是毫秒。
bgwriter_lru_maxpages:
backgroud writer进程每次写的最多数据量,默认值是100,单位buffers。如果脏数据量小于该数值时,写操作全部由backgroud writer进程完成;反之,大于该值时,大于的部分将有server process进程完成。设置该值为0时表示禁用backgroud writer写进程,完全有server process来完成;配置为-1时表示所有脏数据都由backgroud writer来完成。(这里不包括checkpoint操作)
bgwriter_lru_multiplier:
这个参数表示每次往磁盘写数据块的数量,当然该值必须小于bgwriter_lru_maxpages。设置太小时需要写入的脏数据量大于每次写入的数据量,这样剩余需要写入磁盘的工作需要server process进程来完成,将会降低性能;值配置太大说明写入的脏数据量多于当时所需buffer的数量,方便了后面再次申请buffer工作,同时可能出现IO的浪费。该参数的默认值是2.0。
bgwriter的最大数据量计算方式:
1000/bgwriter_delay*bgwriter_lru_maxpages*8K=最大数据量
上述参数对于数据文件所在磁盘的带宽也很有参考意义。
参数值依据系统状态而设置,通过监控系统的运行状况,进行分析总结。为参数配置合适的值。参考数据字典pg_stat_bgwriter.

 
  
postgres=# \d pg_stat_bgwriter
View
"pg_catalog.pg_stat_bgwriter"
Column
| Type | Modifiers
--------------------+--------+-----------
checkpoints_timed
| bigint |
checkpoints_req
| bigint |
buffers_checkpoint
| bigint |
buffers_clean
| bigint |
maxwritten_clean
| bigint |
buffers_backend
| bigint |
buffers_alloc
| bigint |
View definition:
SELECT pg_stat_get_bgwriter_timed_checkpoints() AS checkpoints_timed, pg_stat_get_bgwriter_requested_checkpoints() AS checkpoints_req, pg_stat_get_bgwriter_buf_written_checkpoints() AS buffers_checkpoint, pg_stat_get_bgwriter_buf_written_clean() AS buffers_clean, pg_stat_get_bgwriter_maxwritten_clean() AS maxwritten_clean, pg_stat_get_buf_written_backend() AS buffers_backend, pg_stat_get_buf_alloc() AS buffers_alloc;

 

注:
postgresql中脏数据的写入不仅仅是由backgroud writer参数决定的,checkpoint也对脏数据的写入进行了控制。

backgroud writer进程的间隔是以毫秒计算,而checkpoint的间隔时间相对要很长。所以bgwriter更像是在checkpoint的周期内去完成脏数据的写入。所以bgwriter进程如果能够实现周期均匀数据量合适的写入数据,在减少IO的次数的同时还能够提升命中率,对checkpoint也能够减轻压力,不至于发生集中的写入操作,而造成IO使用的高值,也可以说进一步降低了对系统资源的考验。

转载于:https://www.cnblogs.com/daduxiong/archive/2010/09/27/1836967.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue和PostgreSQL可以一起用来开发后台管理系统。 Vue是一个用于构建用户界面的渐进式JavaScript框架,可以轻松地创建交互式的Web界面。它提供了一套简单易用的语法和工具,帮助开发者快速构建功能丰富且响应式的应用程序。 PostgreSQL是一个强大的开源关系型数据库管理系统,它支持大量的数据类型和功能,并具有高度可扩展性和可靠性。它可以被用于存储和管理大量的数据,适用于各种规模的项目。 在后台管理系统的开发过程中,可以使用Vue构建前端界面,并结合PostgreSQL来存储和管理数据。Vue可以通过与后台服务器进行交互,向后台发送请求并获取数据,然后通过Vue的组件和数据绑定功能来展示和操作这些数据。 具体来说,可以通过Vue的路由功能来实现不同页面之间的跳转和导航,比如登录页面、仪表盘页面、用户管理页面等。每个页面通过Vue组件来构建,并通过与后台服务器进行的API请求来获取数据。例如,可以通过发送GET请求获取用户列表,然后将数据展示在用户管理页面上。 在与PostgreSQL的集成方面,可以使用PostgreSQL提供的SQL语言和命令来创建表格和查询数据。通过Vue的后台管理系统,可以向PostgreSQL发送SQL查询语句,并将查询结果展示在前端界面上。同时,还可以通过Vue的表单和事件处理功能向PostgreSQL发送插入、更新和删除数据的请求。 总之,Vue和PostgreSQL可以配合使用来构建强大的后台管理系统。Vue提供了丰富并易用的前端开发工具,而PostgreSQL则提供了稳定可靠的数据存储和管理能力。这种组合可以帮助开发者快速构建功能完善的后台管理系统,并满足用户对于数据管理和操作的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值