情報機能

TiDB は、MySQL 8.0 で利用可能な情報関数のほとんどをサポートしています。

TiDB がサポートする MySQL関数

名前説明
BENCHMARK()ループ内で式を実行する
CONNECTION_ID()接続の接続ID(スレッドID)を返します
CURRENT_ROLE()接続で使用されているロールを返します
CURRENT_USER()CURRENT_USER認証されたユーザー名とホスト名を返す
DATABASE()デフォルトの(現在の)データベース名を返す
FOUND_ROWS()LIMIT節を持つSELECTの場合、 LIMIT節がない場合に返される行の数
LAST_INSERT_ID()最後のINSERT列のAUTOINCREMENT番目の値を返す
ROW_COUNT()影響を受ける行数
SCHEMA()DATABASE()の同義語
SESSION_USER()USER()の同義語
SYSTEM_USER()USER()の同義語
USER()クライアントから提供されたユーザー名とホスト名を返します
VERSION()MySQLサーバーのバージョンを示す文字列を返します

基準()

BENCHMARK()関数は、指定された式を指定された回数実行します。

構文:

BENCHMARK(count, expression)
  • count : 式が実行される回数。
  • expression : 繰り返し実行される式。

例:

SELECT BENCHMARK(5, SLEEP(2));
+------------------------+ | BENCHMARK(5, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (10.00 sec)

接続ID()

CONNECTION_ID()関数は接続の ID を返します。この関数は、TiDB のenable-32bits-connection-id構成項目の値に基づいて、32 ビットまたは 64 ビットの接続 ID を返します。

enable-global-kill有効になっている場合、接続 ID を使用して、同じクラスターの複数の TiDB インスタンスにわたるクエリを強制終了できます。

SELECT CONNECTION_ID();
+-----------------+ | CONNECTION_ID() | +-----------------+ | 322961414 | +-----------------+ 1 row in set (0.00 sec)

現在の役割()

CURRENT_ROLE()関数は、現在のセッションの現在の役割を返します。

SELECT CURRENT_ROLE();
+----------------+ | CURRENT_ROLE() | +----------------+ | NONE | +----------------+ 1 row in set (0.00 sec)

現在の使用者()

CURRENT_USER()関数は、現在のセッションで使用されているアカウントを返します。

SELECT CURRENT_USER();
+----------------+ | CURRENT_USER() | +----------------+ | root@% | +----------------+ 1 row in set (0.00 sec)

データベース()

DATABASE()関数は、現在のセッションで使用されているデータベース スキーマを返します。

SELECT DATABASE();
+------------+ | DATABASE() | +------------+ | test | +------------+ 1 row in set (0.00 sec)

見つかった行()

FOUND_ROWS()関数は、最後に実行されたSELECTステートメントの結果セット内の行数を返します。

SELECT 1 UNION ALL SELECT 2;
+------+ | 1 | +------+ | 2 | | 1 | +------+ 2 rows in set (0.01 sec)
SELECT FOUND_ROWS();
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+ 1 row in set (0.00 sec)

注記:

LIMIT句を考慮せずに結果セット内の行の合計数を計算するSQL_CALC_FOUND_ROWSクエリ修飾子は、 tidb_enable_noop_functionsが有効な場合にのみ受け入れられます。このクエリ修飾子は、MySQL 8.0.17 以降では非推奨です。代わりにCOUNT(*)を使用することをお勧めします。

最後の挿入ID()

LAST_INSERT_ID()関数は、 AUTO_INCREMENT列またはAUTO_RANDOM列を含むテーブルに最後に挿入された行の ID を返します。

CREATE TABLE t1(id SERIAL); Query OK, 0 rows affected (0.17 sec) INSERT INTO t1() VALUES(); Query OK, 1 row affected (0.03 sec) INSERT INTO t1() VALUES(); Query OK, 1 row affected (0.00 sec) SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+ 1 row in set (0.00 sec) TABLE t1; +----+ | id | +----+ | 1 | | 3 | +----+ 2 rows in set (0.00 sec)

注記

  • TiDB では、 AUTO_ID_CACHE​​ MySQL によって返される結果とは異なる結果をもたらす可能性があります。この矛盾は、TiDB が各ノードに ID をキャッシュするため、順序が乱れたり、欠落した ID が生じる可能性があるために発生します。アプリケーションで厳密な ID 順序の維持が不可欠な場合は、 MySQL互換モード有効にすることができます。

  • 前の例では、ID は 2 ずつ増加しますが、MySQL は同じシナリオで 1 ずつ増加する ID を生成します。互換性に関する詳細については、 自動増分ID参照してください。

行数()

ROW_COUNT()関数は影響を受ける行の数を返します。

CREATE TABLE t1(id BIGINT UNSIGNED PRIMARY KEY AUTO_RANDOM); Query OK, 0 rows affected, 1 warning (0.16 sec) INSERT INTO t1() VALUES (),(),(); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 SELECT ROW_COUNT(); +-------------+ | ROW_COUNT() | +-------------+ | 3 | +-------------+ 1 row in set (0.00 sec)

スキーマ()

SCHEMA()関数はDATABASE()の同義語です。

セッションユーザー()

SESSION_USER()関数はUSER()の同義語です。

システムユーザー()

SYSTEM_USER()関数はUSER()の同義語です。

ユーザー()

USER()関数は現在の接続のユーザーを返します。 USER()ワイルドカードではなく実際の IP アドレスを表示するため、これはCURRENT_USER()の出力とは若干異なる場合があります。

SELECT USER(), CURRENT_USER();
+----------------+----------------+ | USER() | CURRENT_USER() | +----------------+----------------+ | root@127.0.0.1 | root@% | +----------------+----------------+ 1 row in set (0.00 sec)

バージョン()

VERSION()関数は、MySQL と互換性のある形式で TiDB バージョンを返します。より詳細な結果を取得するには、 TIDB_VERSION()関数を使用できます。

SELECT VERSION(); +--------------------+ | VERSION() | +--------------------+ | 8.0.11-TiDB-v7.5.1 | +--------------------+ 1 row in set (0.00 sec)
SELECT TIDB_VERSION()\G *************************** 1. row *************************** TIDB_VERSION(): Release Version: v7.5.1 Edition: Community Git Commit Hash: 7d16cc79e81bbf573124df3fd9351c26963f3e70 Git Branch: heads/refs/tags/v7.5.1 UTC Build Time: 2024-02-27 14:28:32 GoVersion: go1.21.6 Race Enabled: false Check Table Before Drop: false Store: tikv 1 row in set (0.00 sec)

上記の例は TiDB v7.5.1 からのもので、MySQL 8.0.11 として識別されます。

返されるバージョンを変更する場合は、 server-version構成項目を変更できます。

TiDB固有の関数

次の関数は TiDB でのみサポートされており、MySQL には同等の関数はありません。

名前説明
CURRENT_RESOURCE_GROUP()現在のセッションがバインドされているリソース グループの名前を返します。

サポートされていない関数

  • CHARSET()
  • COERCIBILITY()
  • COLLATION()
  • ICU_VERSION()
  • ROLES_GRAPHML()

このページは役に立ちましたか?