LOB型は、TEXT、BLOB、JSON、Geometryなどのデータ型を格納するために使用されます。 LOBのストレージ方式には、インラインストレージ(INROW)とアウトラインストレージ(OUTROW)の2種類があります。
インラインストレージ
インラインストレージとは、LOBデータをメインテーブルの行と一緒に格納する方式であり、LOBデータを読み取る際には1回のストレージアクセス操作のみが必要です。
アウトラインストレージ
アウトラインストレージとは、LOBデータをLOB補助テーブルに格納する方式であり、LOBデータを読み取る際にはメインテーブルの行を読み取り、外部LOBのロケーター(locator)を取得した後、そのロケーター情報に基づいてLOB補助テーブルから実際のLOBデータを読み取る必要があります。このプロセスでは、2回のストレージアクセス操作が必要です。
LOBストレージの変換
LOBデータのストレージがインラインストレージかアウトラインストレージかは、LOB列のデータ量によって決まります。例えば、しきい値を8192バイトに設定した場合、8192バイトを超える場合はアウトラインストレージとなり、それ以下の場合はインラインストレージとなります。
obclient> CREATE TABLE t(pk int, data text) LOB_INROW_THRESHOLD = 8192;
上記のDDLは、テーブル内のLOB列のINROWからOUTROWへのしきい値を8192バイトと指定しています。ここで、LOB_INROW_THRESHOLDはLOB列のしきい値を表します。
- LOB列のデータが8192バイト以下の場合、LOBデータとメインテーブルの行を一緒に格納します。
- LOB列のデータが8192バイトを超える場合、すべてのデータをLOB補助テーブルに格納します。
説明
lob_inrow_thresholdの値を大きいものから小さいものに変更すると、Offline DDLがトリガーされます。
インラインストレージはアウトラインストレージに比べてパフォーマンスが優れており、ストレージアクセス回数を削減し、LOBデータの読み取り効率を向上させることができます。特にLOBデータへの頻繁なアクセスが必要なシナリオでは、インラインストレージを選択することでクエリ速度を高速化し、システムのオーバーヘッドを低減できます。
LOB型
MySQLモードでは、一般的なLOB型をアルファベット順に並べると以下の通りです:
- ARRAY:配列データ型を格納するために使用され、複数の値の集合を格納できます。
- Roaringbitmap:ビットマップデータを格納するために使用され、主に画像処理や表現に用いられます。
- BLOB(Binary Large Object):画像やファイルなどのバイナリデータを格納するために使用され、最大長は65,535バイトです。
- GEOMETRY:地理空間データを格納するために使用され、空間分析と操作をサポートします。
- JSON:JSON形式のデータを格納するために使用され、構造化データの処理を容易にします。
- LONGTEXT:大量のテキストデータを格納するために使用され、最大長は536,870,910バイトです。
- LONGBLOB:大量のバイナリデータを格納するために使用され、最大長は536,870,910バイトです。
- MEDIUMBLOB:中程度のバイナリデータを格納するために使用され、最大長は16,777,215バイトです。
- MEDIUMTEXT:中程度のテキストデータを格納するために使用され、最大長は16,777,215バイトです。
- TEXT:少量のテキストデータを格納するために使用され、最大長は65,535バイトです。