(8.0.27)
https://dev.mysql.com/doc/refman/8.0/ja/innodb-parameters.html#sysvar_innodb_checksum_algorithm
select @@innodb_checksum_algorithm;
・innodb_checksum_algorithm
・・none
・・innodb
・・crc32
デフォルト
・・strict_none
・・strict_innodb
・・strict_crc32
(19c)
・DB_BLOCK_CHECKING
データベース・ブロックに対してブロック・チェックを実行するかどうかを指定します
ブロックのデータ全体をチェックし、論理的な自己一貫性を確認します。
1-10%のオーバーヘッドの原因になります。
・・OFF
デフォルト
ユーザー表領域内のブロックに対してブロック・チェックは実行されません。
ただし、SYSTEM表領域のブロックに対するセマンティック・ブロック・チェックは常にオンです。
・・LOW
メモリー内でブロックの内容が変更された後、基本ブロック・ヘッダー・チェックが実行されます。
・・MEDIUM
索引以外のすべてのオブジェクトに対して、すべてのLOWチェックおよび完全セマンティック・チェックが実行されます。
・・FULL
すべてのオブジェクトに対して、すべてのLOWおよびMEDIUMチェックおよび完全セマンティック・チェックが実行されます。
・DB_BLOCK_CHECKSUM
DBWnおよびダイレクト・ローダーが、チェックサムを計算し、ディスクにデータ・ブロックを書き込むときに、
すべてのデータ・ブロックのキャッシュ・ヘッダーにそのチェックサムを格納するかどうかを決めます。
チェックサムを使用すると、基になっているディスク、格納システムまたはI/Oシステムが原因で発生する破損を検出できます。
・・OFF
DBWnはユーザー表領域ではなくSYSTEM表領域のみに対して、チェックサムを計算します。
・・TYPICAL
デフォルト
1-2%のオーバーヘッドが発生します。
・・FULL
インメモリーの破損も捕捉し、ディスクの破損を防ぎます。
4-5%のオーバーヘッドが発生します。
・DB_ULTRA_SAFE
・・OFF
デフォルト
・・DATA_ONLY
DB_BLOCK_CHECKING = MEDIUM
DB_BLOCK_CHECKSUM = FULL
DB_LOST_WRITE_PROTECT = TYPICAL
・・DATA_AND_INDEX
DB_BLOCK_CHECKING = FULL
DB_BLOCK_CHECKSUM = FULL
DB_LOST_WRITE_PROTECT = TYPICAL
(14)
http://pgsqldeepdive.blogspot.com/2013/12/data-checksum-93.html
initdb時のオプション(--data-checksums)としてデータチェックサムの指定可能
デフォルトはOFF
show data_checksums;
/usr/pgsql-14/bin/pg_controldata $PGDATA | grep -iE "チェックサム|checksum"
(2019)
select name,page_verify_option_desc from sys.databases;
alter database test set page_verify checksum with no_wait;
alter database test set page_verify torn_page_detection with no_wait;
alter database test set page_verify none with no_wait;
・page_verify
・・checksum
デフォルト
ページ全体の内容についてチェックサムを計算し、ページがディスクに書き込まれるときに、その値をページ ヘッダーに格納します。
・・torn_page_detection
8 KB のデータベース ページに含まれる 512 バイトのセクターごとに特定の 2 ビット パターンを保存し、
ページがディスクに書き込まれるときに、データベース ページ ヘッダーに格納します。
・・none
チェックサムや破損ページを確認しません。