このセクションでは、OceanBaseデータベースのMySQLモードとネイティブMySQLデータベースの互換性比較情報について説明します。
OceanBaseデータベースのMySQLモードは、MySQL 5.7/8.0のほとんどの機能と構文に互換性があります。ただし、製品アーキテクチャの違いや顧客ニーズの低さから、一部の機能はサポートされていません。このセクションでは、主に以下の観点からOceanBaseデータベースのMySQLモードとネイティブMySQLデータベースの違いを説明します:
データ型
SQL構文
手続き型言語
システムビュー
文字セット
照合順序
関数と式
パーティションサポート
バックアップ・リカバリ
ストレージエンジン
オプティマイザー
データ型
OceanBaseデータベースがサポートするデータ型は以下のとおりです:
数値型
整数型:
BOOL/BOOLEAN/TINYINT、SMALLINT、MEDIUMINT、INT/INTEGERおよびBIGINT。固定小数点数型:
DECIMALおよびNUMERIC。浮動小数点数型:
FLOATおよびDOUBLE。Bit-Value型:
BIT。
日付時刻型:
DATETIME、TIMESTAMP、DATE、TIMEおよびYEAR。文字型:
CHAR、VARCHAR、BINARYおよびVARBINARY。ラージオブジェクト型:
TINYBLOB、BLOB、MEDIUMBLOBおよびLONGBLOB。テキスト型:
TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXTおよびSTRING。列挙型:
ENUM。集合型:
SET。JSONデータ型
空間データ型
高効率圧縮ビットマップデータ型
配列データ型
ベクトルデータ型
SQL構文
SELECT
ほとんどのクエリ機能をサポートしています。単一テーブルおよび複数テーブルのクエリ、サブクエリ、内部結合、半結合、外部結合、グループ化、集計、一般的な確率関数や線形回帰などのデータマイニング関数がサポートされています。
複数の
SELECTクエリの結果に対して、UNION、UNION ALL、MINUS、EXCEPT、INTERSECTなどの集合演算をサポートしています。EXPLAIN構文を使用して実行計画を確認できます。
INSERT
単一行および複数行のデータ挿入をサポートしており、指定したパーティションへのデータ挿入もサポートしています。
INSERT INTO ... SELECT ...ステートメントをサポートしています。
UPDATE
単一列および複数列のデータ更新をサポートしています。
サブクエリを使用したデータ更新をサポートしています。
集合更新をサポートしています。
DELETE
- 単一テーブルおよび複数テーブルの削除をサポートしています。
TRUNCATE
- 指定したテーブルのデータを完全に削除することをサポートしています。
SELECT
SELECT ... FOR SHARE ...構文はサポートされていません。
TRUNCATE
- トランザクション処理中およびテーブルロック中は操作できません。
手続き型言語
OceanBaseデータベースは、MySQLデータベースのPL機能の大部分と互換性があります。主にサポートされているPL機能は以下のとおりです:
- データ型
- ストアドプロシージャ
- カスタム関数
- トリガー
- 例外処理
さらに、OceanBaseデータベース独自のMySQL PLシステムパッケージも利用できます。これには DBMS_RESOURCE_MANAGER、DBMS_STATS、DBMS_UDR、DBMS_XPLAN および DBMS_WORKLOAD_REPOSITORY などが含まれます。
PL機能の詳細については、PLリファレンスを参照してください。
システムビュー
OceanBaseデータベースは、information_schemaとmysqlという2つの内部データベースの大部分のビューを実装しています。ただし、アーキテクチャが異なるため、OceanBaseデータベースはすべてのビューが実装されていること、およびビュー内のすべての列の意味がMySQLと同一であることを保証するものではありません。
システムビューの説明については、『リファレンスガイド』のシステムビューの章を参照してください。
文字セット
OceanBaseデータベースがサポートする文字セットは以下のとおりです:
binary
utf8mb4/utf8mb3
説明
utf8mb3はutf8のエイリアスです。gbk
utf16
utf16le
gb18030
latin1
gb18030_2022
ascii
tis620
sjis
big5
dec8
gb2312
ujis
euckr
eucjpms
cp932
cp850
hp8
macroman
swe7
照合順序
OceanBaseデータベースがサポートする照合順序は、次のテーブルのとおりです。
照合順序 |
所属文字セット |
説明 |
|---|---|---|
| utf8mb4_general_ci | utf8mb4 | 汎用的な照合順序を使用します。 |
| utf8mb4_bin | utf8mb4 | バイナリ照合順序を使用します。 |
| utf8mb4_unicode_ci | utf8mb4 | Unicode照合アルゴリズム(UCA)に基づく照合順序を使用します。 |
| utf8mb4_unicode_520_ci | utf8mb4 | Unicode 5.2.0の照合順序を使用します。Unicodeコードポイントでソートし、大文字と小文字の区別は無視されます。 |
| utf8mb4_croatian_ci | utf8mb4 | クロアチア語の照合順序を使用します。utf8mb4_croatian_ciはutf8_croatian_ciと互換性があります。 |
| utf8mb4_czech_ci | utf8mb4 | チェコ語の照合順序を使用します。 |
| utf8mb4_0900_ai_ci | utf8mb4 | Unicode 9.0.0の文字ソート規則と順序を使用し、大文字と小文字の区別を無視して、大文字と小文字を同じ文字と見なします。 |
| binary | binary | バイナリ照合順序を使用します。 |
| gbk_chinese_ci | gbk | 中国語の言語照合順序を使用します。 |
| gbk_bin | gbk | バイナリ照合順序を使用します。 |
| utf16_general_ci | utf16 | 汎用的な照合順序を使用します。 |
| utf16_bin | utf16 | バイナリ照合順序を使用します。 |
| utf16_unicode_ci | utf16 | Unicode照合アルゴリズム(UCA)に基づく照合順序を使用します。 |
| utf8mb4_german2_ci | utf16le | ドイツ語の照合順序を使用します。 |
| utf8mb4_croatian_ci | utf16le | クロアチア語の照合順序を使用します。 |
| gb18030_chinese_ci | gb18030 | 中国語の言語照合順序を使用します。 |
| gb18030_bin | gb18030 | バイナリ照合順序を使用します。 |
| latin1_swedish_ci | latin1 | スウェーデン語/フィンランド語の照合順序を使用します。 |
| latin1_german1_ci | latin1 | ドイツ(German)言語環境でのlatin1文字セットの照合順序に使用されます。 |
| latin1_danish_ci | latin1 | デンマーク(Danish)言語環境でのlatin1文字セットの照合順序に使用されます。 |
| latin1_german2_ci | latin1 | ドイツ語環境で使用され、辞書順での文字比較が必要なアプリケーションシナリオに適しています。 |
| latin1_general_ci | latin1 | 大文字と小文字を区別せず、アクセント記号をサポートする必要があるシナリオ、例えば一部のヨーロッパ言語のデータベース設計に使用されます。 |
| latin1_general_cs | latin1 | 大文字と小文字を区別する汎用的な照合順序で、複数の言語(例:西ヨーロッパ言語)をサポートします。 |
| latin1_spanish_ci | latin1 | スペイン語(Spanish)環境で使用するソート規則です。 |
| latin1_bin | latin1 | latin1はバイナリソート規則を使用します。 |
| gb18030_2022_bin | gb18030_2022 | バイナリソート規則を使用します。 |
| gb18030_2022_chinese_ci | gb18030_2022 | ピンインソート規則を使用します。大文字と小文字を区別しません。MySQLモードにおけるこの文字セットのデフォルトの照合順序です。 |
| gb18030_2022_chinese_cs | gb18030_2022 | ピンインソート規則を使用します。大文字と小文字を区別します。 |
| gb18030_2022_radical_ci | gb18030_2022 | 部首・筆順ソート規則を使用します。大文字と小文字を区別しません。 |
| gb18030_2022_radical_cs | gb18030_2022 | 部首・筆順ソート規則を使用します。大文字と小文字を区別します。 |
| gb18030_2022_stroke_ci | gb18030_2022 | 筆順ソート規則を使用します。大文字と小文字を区別しません。 |
| gb18030_2022_stroke_cs | gb18030_2022 | 筆順ソート規則を使用します。大文字と小文字を区別します。 |
| ascii_bin | ascii | バイナリソート規則を使用します。 |
| ascii_general_ci | ascii | アルファベットに基づく大文字と小文字を区別しないソート規則を使用します。大文字と小文字の違いを無視し、大文字と小文字を同じ文字と見なします。 |
| tis620_bin | tis620 | バイナリソート規則を使用します。 |
| tis620_thai_ci | tis620 | タイ語ソート規則を使用します。大文字と小文字を区別しません。 |
| sjis_japanese_ci | sjis | 日本語ソート規則を使用します。 |
| dec8_swedish_ci | dec8 | スウェーデン語ソート規則を使用します。 |
| gb2312_chinese_ci | gb2312 | GB2312文字セットを使用し、中国語ソート規則に従って大文字と小文字を区別しないソートを行います。 |
| gb2312_bin | gb2312 | GB2312文字セットを使用し、バイナリ順序で大文字と小文字を区別してソートを行います。 |
| ujis_japanese_ci | ujis | UJIS文字セットを使用し、日本語ソート規則に従って大文字と小文字を区別しないソートを行います。 |
| ujis_bin | ujis | UJIS文字セットを使用し、バイナリ順序で大文字と小文字を区別してソートを行います。 |
| euckr_korean_ci | euckr | EUCKR文字セットを使用し、韓国語ソート規則に従って大文字と小文字を区別しないソートを行います。 |
| euckr_bin | euckr | EUCKR文字セットを使用し、バイナリ順序で大文字と小文字を区別してソートを行います。 |
| eucjpms_japanese_ci | eucjpms | EUCJPMS文字セットを使用し、日本語ソート規則に従って大文字と小文字を区別しないソートを行います。 |
| eucjpms_bin | eucjpms | EUCJPMS文字セットを使用し、バイナリ順序で大文字と小文字を区別してソートを行います。 |
| cp932_japanese_ci | cp932 | CP932文字セットを使用し、日本語ソート規則に従って大文字と小文字を区別しないソートを行います。 |
| cp932_bin | cp932 | CP932文字セットを使用し、バイナリ順序で大文字と小文字を区別してソートを行います。 |
| cp850_general_ci | cp850 | CP850文字セットを使用し、汎用ソート規則に従って大文字と小文字を区別しないソートを行います。 |
| cp850_bin | cp850 | CP850文字セットを使用し、バイナリ順序で大文字と小文字を区別してソートを行います。 |
| hp8_english_ci | hp8 | HP8文字セットを使用し、英語のソート規則に従って大文字小文字を区別しないソートを行います。 |
| hp8_bin | hp8 | HP8文字セットを使用し、バイナリ順序で大文字小文字を区別してソートを行います。 |
| macroman_general_ci | macroman | MacRoman文字セットを使用し、汎用ソート規則に従って大文字小文字を区別しないソートを行います。 |
| macroman_bin | macroman | MacRoman文字セットを使用し、バイナリ順序で大文字小文字を区別してソートを行います。 |
| swe7_swedish_ci | swe7 | SWE7文字セットを使用し、スウェーデン語のソート規則に従って大文字小文字を区別しないソートを行います。 |
| swe7_bin | swe7 | SWE7文字セットを使用し、バイナリ順序で大文字小文字を区別してソートを行います。 |
関数
OceanBaseデータベースでサポートされている分析(ウィンドウ)関数は、MySQLデータベースのスーパーセットです。つまり、MySQLデータベースで利用可能なすべての分析(ウィンドウ)関数がOceanBaseデータベースでも利用できます。
MySQLデータベースと比較して、OceanBaseデータベースのMySQLモードは以下の関数をサポートしていません:
文字列関数:
LOAD_FILE()およびMATCH()。その他の関数:
MASTER_POS_WAIT()。
パーティションのサポート
OceanBaseデータベースとMySQLデータベースのパーティションサポートの違いは以下のとおりです:
OceanBaseデータベースはパーティション、テンプレート付きおよび非テンプレート付きのサブパーティションをサポートしています。MySQLデータベースは非テンプレート付きのサブパーティションをサポートしていません。
OceanBaseデータベースのサブパーティションはHash、Key、Range、Range Columns、List、List Columnsによるパーティショニングをサポートしています。MySQLデータベースのサブパーティションはHashパーティションとKeyパーティションのみをサポートしています。
OceanBaseデータベースのサブパーティションテーブルでは、サブパーティションの追加と削除が可能です。MySQLデータベースではサブパーティションの追加と削除はできません。
注意
-
サブパーティションタイプがHashまたはKeyの場合、新規作成や削除はサポートされていません。
パーティションの詳細および使用方法については、パーティションの概要を参照してください。
バックアップとリカバリ
OceanBaseデータベースは、MySQLデータベースの一部のバックアップ・リカバリ機能と互換性があります。
フルバックアップと増分バックアップをサポートします。
ホットバックアップをサポートします。
テーブルレベルおよびデータベースレベルでの復元をサポートします。
指定パスへの復元をサポートします。
ログアーカイブとバックアップデータの検証をサポートします。
クラスタレベルのバックアップ・リストアはサポートされていません。
コールドバックアップはサポートされていません。
テナント内の一部データベースおよびテーブルレベルのバックアップはサポートされていません。
ストレージエンジン
MySQLデータベースのデータブロックベースのInnoDBおよびMyISAMエンジンとは異なり、OceanBaseデータベースはLSM-Treeアーキテクチャに基づくストレージエンジンを使用しています。
オプティマイザー
OceanBaseデータベースは、MySQLデータベースの一部のオプティマイザー機能と互換性があります。オプティマイザーの詳細については、SQLチューニングガイドを参照してください。
実行計画を確認するコマンド
- 出力される列情報には、
ID、OPERATOR、NAME、EST. ROWS、COSTおよび演算子の詳細情報のみが含まれます。
- 出力される列情報には、
統計情報を確認する
ANALYZE TABLEステートメントを実行して、データディクショナリテーブルに保存されている列値のヒストグラム統計情報を手動で照会することをサポートします。ビューを通じてテーブル統計情報と列統計情報を自動的に確認することをサポートします。
クエリのリライトと最適化
外部結合の最適化をサポートします。
外部結合の簡略化をサポートします。
ブロックネストループとバッチキーアクセス結合をサポートします。
条件フィルタリングをサポートします。
定数重ね合わせ計算の最適化をサポートします。
IS NULLの最適化をサポートします (インデックスはNULL値を格納しない)。ORDER BYの最適化をサポートします。GROUP BYの最適化をサポートします。DISTINCTの除去をサポートします。LIMITのプッシュダウンをサポートします。ウィンドウ関数の最適化をサポートします。
フルテーブルスキャンの回避をサポートします。
述語のプッシュダウンをサポートします。
Optimizer Hintメカニズム
結合順序の Optimizer Hints をサポートします。
テーブルレベルの Optimizer Hints をサポートします。
インデックスレベルの Optimizer Hints をサポートします。
構文として
INDEXHint、FULLHint、ORDEREDHint、LEADINGHint などをサポートします。
MySQLデータベースの並列実行機能(並列クエリ、並列レプリケーション、並列書き込みなど)と互換性があり、OceanBaseデータベースは並列集計、並列結合、並列グループ化、並列ソートなどの並列演算子もサポートしています。
OceanBaseデータベースはプランキャッシュとプリコンパイルもサポートしていますが、MySQLデータベースはサポートしていません。
実行計画を確認するコマンド
SHOW WARNINGSを使用して追加情報を表示することはサポートされていません。