

Oracle
12cにてNLS_CHARACTERSETをJA16SJISからAL32UTF8に変換するにあたって、文字のバイト数が増えるので、VARCHAR2で定義している各カラムのMAXバイト数の定義を既存のものから３倍に増やしました。  
文字のバイト数が増えることによるDBのパフォーマンスへの影響はあると思いますが、バイト数の定義を増やすとパフォーマンス等に影響はでますでしょうか。（バイト数定義を２倍にしても３倍にしても、その倍数の違いによるパフォーマンス変化はないでしょうか。）


CC BY-SA 4.0
2022-08-19T05:34:35.390
90631
2022-12-11T09:55:42.687
54056
question
oracle
Oracle 12cのバイト数定義変更による影響


varchar2(10)をvarchar2(100)で定義したら10倍近くの劣化があるのかと言う事だとおもいますがそれはありません。問題は実際にどれだけデータが格納されるのかという事です。  
(CHAR型は指定桁数までお尻に空白が入るのでこの限りではありません）

また、Oracleの読み書き単位はブロック（デフォルト8k）です。このブロックサイズに納まるのであれば理論上いくつであっても変わりません。つまり一度に少量のアクセスしかしないはずのオンライン処理などでは特に影響を感じる事は少ないかもしれません。

理論上2バイトであったものが3バイト（中には4バイト）になるので1.5倍も遅くなりそうですが、実際にそれを実感する業務システムはないとおもいます。  
utf-8のメリットの一つにasciiコード範疇であれば消費サイズも変わらないですし、これまでShift-JIS-
utf-8のコード変換をOracleがおこなっていたものが不要になる点はメリットと言えるでしょう。


CC BY-SA 4.0
2022-12-11T09:55:42.687
92702
2022-12-11T09:55:42.687
55896
90631
answer