GPDB中AOCO列存页的checksum

简介: GPDB中AOCO列存页的checksum

GPDBAOCO列存页的checksum为了保证数据的正确性,AOCO列存页采用CRC32即循环冗余校验算法来进行校验。首先看下页结构。页类型有四种:AOSmallContentHeaderAOLargeContentHeaderAONonBulkDenseContentHeaderAOBulkDenseContentHeader。页头的大小都是8个字节。除了这些内容外,页头其实还有firstRowNumchecksum,但这两个成员在计算时归到了数据那部分。下面我们以SmallContentHeader为例来讲解下checksum

页头部分结构如上图所示。Checksum部分大小为8字节,分为2部分:block checksumheader checksum。首先计算block checksum,其实就是数据部分的checksumfirstRowNumvalue部分的crc值;然后再计算header checksumAoHeader_RegularSizeblock checksum部分的crc值。这样通过两个checksum来分别保证页头和数据部分的正确性。我们看下计算流程:计算时先计算block checksum,存储位置位于第1个crc的位置,计算内容从firstRowNum开始的所有数据。接着计算header checksum,存储位置位于第2个crc位置,计算内容从页头开始一直到第一个crc的结尾。AppendOnlyStorageFormat_AddBlockHeaderChecksums函数计算checksum

再看下,什么时候进行校验:

也就是当从磁盘上加载上来列内容后,会立即通过函数


AppendOnlyStorageFormat_VerifyHeaderChecksum

进行页头的checksum校验,然后读取块内容时调用函数


AppendOnlyStorageFormat_VerifyBlockChecksum

进行block checksum校验。

目录
相关文章
|
4月前
|
SQL Java Maven
flywa报错Migration checksum mismatch for migration version 1.1 -> Applied to database : 1332862643 ->
flywa报错Migration checksum mismatch for migration version 1.1 -> Applied to database : 1332862643 ->
58 1
GPDB6和GPDB7直连primary命令的不同
GPDB6和GPDB7直连primary命令的不同
144 0
|
SQL NoSQL 数据库
GPDB中gp_vmem_protect_limit参数的意义
GPDB中gp_vmem_protect_limit参数的意义
205 0
|
存储 关系型数据库 MySQL
|
SQL 机器学习/深度学习 关系型数据库
RDS SQL Server– Best Practices of Execution Plan Cache for Missing Indexes
Execution plan cache is a significant part of SQL Server memory management. It can reveal to you how the execution of a query will occur, or how query execution took place.
2747 0
|
关系型数据库 MySQL RDS
Generation and Handling of Metadata Locks on RDS for MySQL Tables
MySQL uses metadata locking to manage concurrent access to database objects and to ensure data consistency.
2501 0
|
算法 数据安全/隐私保护 SQL

热门文章

最新文章

下一篇
开通oss服务