postgresql数据一致性保障.pdf
文本预览下载声明
2019 PostgreSQL 象行中国(福建站)活动
主办方
协办方
我的个人微信
PostgreSQL 数据一致性保障
赵振平
太阳塔科技(专注数据库技术服务)
2019年11月9 日 ,福州
我的个人微信
我的个人微信
在初始化数据库时,使用-k选项可以打开数据文件的checksum功能。(建议打开,造成的性能损失很小)
initdb -k $datadir
Pg WAL VS oracle ONLINE REDO LOGS
WAL is divided into WAL segments
– Each segment is a file in pg_xlog directory
在初始化数据库时,使用-k选项可以打开数据文件的checksum功能。(建议打开,造成的性能损失很小)
initdb -k $datadir
1. 启用 checksum 后,系统会对每个数据页计算 checksum ,从存储
读取数据时如果检测 checksum 失败,则会发生错误并终止当前正
在执行的事务,该功能使得 PostgreSQL 自身拥有了检测 I/O 或硬
件错误的能力。
2. 数据页的 checksum 在从 Buffer pool 刷到存储时才设置,当页面
再此读取至 Buffer pool 时进行检测。
3. checksum 算法基于 FNV-1a hash 改造而来,其结果为 32 位无符
号整型。
4. 初始化数据库时,使用-k选项可以打开数据文件的checksum选项。
5. Checksum只有较小的的性能损失。
initdb -k $datadir
show data_checksums;
pg_checksums — enable, disable or check data checksums in a PostgreSQL database
在初始化数据库时,使用-k选项可以打开数据文件的checksum功能。(建议打开,造成的性能损失很小)
initdb -k $datadir
1. PostgreSQL 默认使用 8kB pages ,操作系统又把它分成4kB pages ,底层的硬件存储
又分成 512B sectors。在写的过程中,如果发生意外,1个PG page可能只有512B写到
硬盘上,这个时候1个PG PAGE就不完整了,就会产生数据冲突了。这里说的是数据文
件一个page的不完整或者破坏。
2. Full page writes可以应对上面发生的意外
3. 因为当一个数据文件中的page损坏的时候,没有备份可以还原这个page,通常的WAL也
不能还原这个page
4. 在执行完checkpoint后,第一次修改一个page ,PG会把整个page image写入到WAL ,
这就是full page write
5. 把整个page image写入到WAL可以保证page能够被成功restore回来
6. The parameter was introduced in Postgre
显示全部