漫谈postgresql的日志实现机制

本文探讨了PostgreSQL中日志的重要性和实现机制,包括事务的原子性、持久性,为何需要日志以及日志缓冲区的作用。通过日志记录和LSN(日志顺序号)确保数据一致性,checkpoint机制则用于加速恢复过程,减少恢复时间。
摘要由CSDN通过智能技术生成
1、事务的概念
   事务是从实际生活中引入数据库的一个概念,即事务内的操作,要么全做,要么全不做。就像银行转账一样,当从一个帐户转出一部分钱之后,就必须在另一个帐户中存入相同数目的钱,若是转出钱之后,事务中止了,没有在另一个帐户中存钱,那么钱就不翼而飞了,这就是事务的原子性。当事务完成后,必须将其结果记录下来,不然就无从知道事务是已经发生还是尚未发生,这是事务的持久性。此外,事务还有隔离性和一致性。


2、为什么要引入日志?
   首先,我们了解一下在数据库中是如何实现一个事务的。当事务开始后,我们从磁盘中读取数据,然后对这些数据进行操作,可能是筛选、统计、更新等,还可以有一些新建数据,总之,若发生数据变化后,当数据完成后,必须将这些变化后的数据重新写入到磁盘中,这样我们就完成了一个事务。当然这是最简单的一个描述,下面我们来针对每个环节进行深入的分析。首先是从磁盘中读取数据,根据常识,我们知道,在一个应用系统中,我们可能经常会读取相同的数据,如果每次都从磁盘读取,因为磁盘IO比较慢,所以效率不高,性能不好。大家都能想得到,可以采用缓冲区机制来提高数据读取的性能。本文主要目的不是缓冲区就不多说了。接下来是对数据的操作,事务完成后,我们需要把更新后的数据写入到磁盘,这里又有同样的问题出现,磁盘IO的性能问题,那么有人说我们还可以用缓冲区机制啊?说的太好了,缓冲区确实帮我们缓解了磁盘IO性能的问题。但缓冲区机制在帮我们解决了磁盘IO性能问题的同时,又带来了一个新的问题,如果发生了故障怎么办
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值