Greenplum分布式事务和两阶段提交协议No-Force Force: 事务提交时,所修改的页面必须强制刷回到持久存储中 No-Force: 事务提交时,所修改的页面不需要强制刷回到持久存储中 ■ Steal / No-Steal Steal: 允许Buffer Pool里未提交事务所修改的脏页刷回到持久存储 No-steal: 不允许Buffer Pool里未提交事务所修改的脏页刷到持久存储中 缓冲区管理策略Buffer Management 有更好的性能,但是怎么保证事务的原子性和持久 性? ❏ No-Force: 事务提交,所修改的数据页没有刷回至持久存储,如果发生断电 或者系统崩溃。 ❏ Steal: Buffer Pool中未提交的事务所修改的脏页刷回到持久存储,如果发生 断电或者系统崩溃。 缓冲区管理策略 14 ■ No-Force → Redo Log 事务提交时,数据页不需要刷回持久存储,为了保证持久性,先把Redo Log写 入日志文件。Redo 入日志文件。Redo log记录修改数据对象的新值(After Image, AFIM) ■ Steal → Undo Log 允许Buffer Pool未提交事务所修改的脏页刷回到持久存储,为了保证原子性, 先把Undo Log写入日志文件。Undo Log记录修改数据对象的旧值(Before Image, BFIM) Solution: Logging 15 缓冲区管理策略和事务恢复的关系 Force0 码力 | 42 页 | 2.12 MB | 1 年前3
Greenplum Database 管理员指南 6.2.1查询固定的数据,或者外部表的数据有周期性变化,编者认为,通过物化视图来加速外 部表的访问并不是物化视图特有的功能,在外部表上创建物化视图同样需要读取外部表 的全部数据,这与,把数据加载到一张普通的数据表,没有任何差异。而物化视图的刷 新与普通数据表的TRUNCATE并重新INSERT效果相同。 如果一种SQL查询只是在个别语句中用到,可以使用SELECT命令的WITH子句来实 现,可能不需要为此而创建一张很少用到的视图。编者再次提醒,不要乱用视图,更不 完全放 弃了filerep的机制,使用了WAL同步策略,这将从根本上避免了损毁page被同步到 Mirror的情况发生。 GP数据库对数据的修改操作是在内存中完成的,之后,数据会被刷入磁盘,在将 数据刷入磁盘时,数据库会自动计算checksum的值,并与数据一同保存到page中, checksum的值将会作为page的header被一同存储到磁盘上。当从磁盘读取page时, 会根据chec 文件中的ignore_checksum_failure参数为on,这样,数据库在发现checksum校 验异常时,只是输出警告信息,而不会中断事务,并继续将磁盘上的数据读取到内存中。 之后,如果损毁的数据被再次修改,修改后的数据会被刷入磁盘,并且一定会被扩散到 Mirror(虽然在6版本是基于WAL同步,但由于更新的是错误的数据,WAL同步的也是 错误的更新结果),这可能会导致更严重的数据损坏或者数据丢失,所以,仅应该在进 行数据的灾难性恢复时考虑开启该参数。0 码力 | 416 页 | 6.08 MB | 1 年前3
共 2 条
- 1













