2014年9月10日水曜日

v$sqlによるオフロードの情報取得

以前AWRでどれだけsmart scanによるセルサーバ(ストレージ)への処理オフロードでIOを絞ることができたかを書かせていただきましたが、
SQL単位で確認する方法を調べてみました。

Exadataでは、v$sqlで以下のカラムが追加となっています。

IO_CELL_OFFLOAD_ELIGIBLE_BYTES : セルサーバ(ストレージ)でフィルタリングが可能なバイト数
IO_CELL_UNCOMPRESSED_BYTES   : セルサーバ(ストレージ)にオフロードされる非圧縮バイト数
IO_CELL_OFFLOAD_RETURNED_BYTES : セルサーバ(ストレージ)よりオフロードされたバイト数

まず、IO_CELL_OFFLOAD_ELIGIBLE_BYTESがゼロの場合は、セルサーバよりオフロードされません。
IO_CELL_OFFLOAD_ELIGIBLE_BYTESがゼロでないとき、
IO_INTERCONNECT_BYTESに実際のやりとりされたバイト数が出てくるので、この値がIO_CELL_OFFLOAD_ELIGIBLE_BYTESより小さいほどsmart scanが効いていることになります。
また、IO_CELL_UNCOMPRESSED_BYTESではHCCによる圧縮を解凍したバイト数が表示されますので、PHYSICAL READに対して桁が大きいような場合はHCCが効いていることになります。