描述提前写入日志
在数据库中进行更改(如 INSERTS 或 DELETES)时,这些更改首先写入日志,然后才写入磁盘上的数据文件。 此作称为预写日志,因为在将更改提交到数据文件之前会写入日志。 如果出现问题(如断电),则日志始终保存最新数据,并可用于确保数据库处于一致状态。
第二个好处是先将更改写入日志,可以批量写入表和索引的更改,而不是单独写入。 此过程减少了使表和索引保持最新所需的磁盘写入次数。 写入日志的速度很快,因为它们是按顺序完成的。 对表和索引的写入速度较慢操作可以安全地以批处理方式执行,因为所有数据都可以从日志中恢复。 对于通常涉及许多小型更新的工作负荷,性能会得到改进。
注意
对于 PostgreSQL 的本地实现,日志文件存储在 pg_wal 目录中。 Azure Database for PostgreSQL 不提供对文件系统的访问权限,因此无需担心日志文件的物理存储。
有几个服务器参数可用于控制预写日志记录的工作原理,并针对工作负荷对其进行优化:
- commit_delay - 事务提交和将日志刷新到磁盘之间的延迟。
- wal_buffers - 共享内存中用于预写日志记录的磁盘页缓冲区数(WAL)。
- max_wal_size - 允许 WAL 在触发自动检查点之前增长的最大大小。
- wal_writer_delay - WAL 编写器执行的 WAL 刷新之间的时间间隔。
- wal_compression - 是否将 WAL 文件中的全页写入进行压缩设置。
- wal_level - 确定写入 WAL 的信息量。 允许的值为 REPLICA 或 LOGICAL。
时间点还原
预写日志(WAL)的主要用途是确保在发生崩溃时数据库一致性和持久性。 本地版本的 PostgreSQL 允许将日志用作存档,允许使用配置设置 archive_mode 和 archive_command还原到某个时间点。
Azure Database for PostgreSQL 是一项托管服务,不允许访问基础文件系统。 但是,它确实包括服务器(包括所有数据库)的自动完整备份。 通过此备份,可以将数据重新创建到某个时间点。 备份是自动计划的,每天完成一次。 如果需要还原,您可以还原到您指定的保留备份天数,但最多不能超过35天。 若要指定应保留备份的时长,请按以下步骤操作:
- 在 Azure 门户中,导航到 Azure Database for PostgreSQL 的灵活服务器。
- 在“概述” 部分,选择您的 配置。
- 在“备份”下,找到 备份保留期(以天为单位)。 滑块栏允许你选择要保留备份的天数。
- 选择 保存 以保留更改。