OceanBaseデータベースのMySQLモードにおける一時テーブルとは、セッションレベルの特殊なテーブルであり、主に中間データを一時的に格納するために使用されます。異なるセッションが同名の一時テーブルを作成でき、一時テーブルは既存の通常テーブルと重複することができますが、一時テーブルに基づいてビューを作成することはできません。同名の一時テーブルと通常テーブルが同時に存在する場合、SHOW CREATE TABLE、DESC、DMLなどの操作はすべて一時テーブルに対して実行され、このとき通常テーブルは隠れます。
注意
- OceanBaseデータベースV4.1.0 BP4バージョン以降、MySQLモードでは一時テーブル機能が無効になっています。
- OceanBaseデータベースV4.3.5 BP4バージョン以降、MySQLモードでは一時テーブル機能がサポートされています。
制限事項
一時テーブルルーティング:一時テーブルは通常テーブルと同様にロードバランシングをサポートする必要があるため、デフォルトでは特定のマシンに一時テーブルをバインドすることはできません。ロードバランシングをオフにして使用することを検討できます。
OceanBaseデータベースは、シリアライズ可能分離レベル(Serializable)では、同一トランザクション内で作成された一時テーブルへの書き込み操作をサポートしていません。
本セッションに通常テーブルと同名の一時テーブルが存在する場合、本セッションでデータベースレベルの統計情報収集機能を使用することは推奨されません。結果が予想と異なる可能性があります。
一時テーブルはバックグラウンドロジックによってクリーンアップされます。そのDDLが業務に明らかな影響を与えないようにするため、クリーンアップ速度は制限されています。そのため、一時テーブルを大量に使用するシナリオでは、定期的に手動で削除することを推奨します。
DBLinkは一時テーブルにアクセスできません。
ODPを使用してOBServerに接続する際は、
server_protocal、client_session_id_version、およびproxy_idパラメータを手動で調整する必要があります。具体的な操作は以下のとおりです:
以下のコマンドを実行して、OBProxyの通信プロトコル設定を変更します。
ALTER proxyconfig SET server_protocol = 'OceanBase 2.0';以下のコマンドを実行して、クライアントセッションID(Client Session ID)を生成するアルゴリズムをバージョン2に設定します。
ALTER proxyconfig SET client_session_id_version = 2;以下のコマンドを実行して、ODPのIDを1に変更します。異なるODPでは、生成されるClient Session IDが競合しないように、異なる数値を設定する必要があります。
ALTER proxyconfig SET proxy_id = 1;