すべてのプロダクト
Search
ドキュメントセンター

PolarDB:CREATE DATABASE

最終更新日:Jan 21, 2025

CREATE DATABASEステートメントを実行してデータベースを作成できます。 データベースを作成するときに、既定の文字セットや照合順序など、データベースの既定の属性を指定できます。

構文

create_database_stmt:
    CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] database_name [database_option_list]

database_option_list:
    database_option [database_option ...]

database_option:
    [DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
  |  LOCALITY = locality_option}
  | [{PARTITION_MODE|MODE} = partition_mode_option]
  | [DEFAULT_SINGLE = default_single_option]  
  
locality_option:
    'dn=storage_inst_id_list'

storage_inst_id_list:
    storage_inst_id[,storage_inst_id_list]
    
partition_mode_option:
		 {'auto'|'partitioning'}
    |{'drds'|'sharding'}

default_single_option: 
	{'on'|'off'}

使用上の注意

Standard Editionインスタンスは、データベースシャードとテーブルシャードの作成に使用されるDBPARTITION構文をサポートしていません。 DRDSモードでデータベースを作成できるのは、Enterprise Editionインスタンスのみです。

パラメーター

パラメーター

説明

database_name

データベースの名前。

CHARSET charset_name

データベースの文字セット。

collation_nameを収集する

データベースの照合順序。

ロカリティ

データベースの場所。

説明

LOCALITY構文を使用してデータベースの場所を指定した後は、場所を変更することはできません。

モード

論理データベースのパーティション分割モード。 有効な値:

  • auto (デフォルト): データベースはAUTOモードでパーティション分割されます。

    • CREATE TABLE (AUTOモード) に記載されている構文 (PARTITION BY HASH、PARTITION BY RANGE、PARTITION BY LISTなど) のみを使用してテーブルを作成できます。

    • 単一のテーブルのデータは、異なるデータノードに分散できます。 この機能はデフォルトで無効化されています。 この機能を有効にするには、テーブル作成ステートメントにDEFAULT_SINGLE = 'on' を追加します。 詳細については、「共通テーブルシャーディング」をご参照ください。

    • パーティション定義を手動で指定しない場合は、主キーに基づいてデータベースをパーティション分割できます。 この機能はデフォルトで無効化されています。 この機能を有効にするには、set global auto_partition=trueを明示的に指定します。

  • drds: データベースはDRDSモードでパーティション分割されます。 DBPARTITION BYやTBPARTITION BYなど、CREATE TABLE (DRDSモード) で説明されている構文のみを使用してテーブルを作成できます。

重要
  • MODEパラメーターを設定しない場合は、デフォルト値drdsが使用されます。

  • データベースに指定したパーティション分割モードを変更することはできません。

  • 上記のモードの詳細については、「自動モードおよびDRDSモードのデータベース」をご参照ください。

DEFAULT_SINGLE (PolarDB-X 5.4.17-16921956以降で利用可能)

AUTOモードでデータベースに単一のテーブルを作成し、インスタンス内の異なるデータノード (DN) にテーブルデータを分散するかどうかを指定します。 このパラメータは、AUTOモードのデータベースに対してのみ有効です。 有効な値:

  • OFF (デフォルト): テーブルデータは異なるデータノードに分散されません。 パーティション定義を明示的に指定せずにAUTOモードでデータベースにテーブルを作成すると、1つのテーブルが作成されます。

  • ON: テーブルデータは異なるデータノードに分散されます。 パーティション定義を明示的に指定せずにAUTOモードでデータベースにテーブルを作成すると、単一のテーブルが作成され、テーブルデータがインスタンス内の異なるデータノードに分散されます。 詳細については、「共通テーブルシャーディング」をご参照ください。

    説明

    DEFAULT_SINGLE='ON'MODE='auto' の両方が指定されている場合、DEFAULT_SINGLE='ON' が優先されます。

  • AUTOモードでtestという名前のデータベースを作成し、UTF-8の文字セットを指定します。

    CREATE DATABASE test MODE=auto default CHARACTER SET UTF8;
    Query OK, 1 row affected (0.00 sec)
  • PolarDB-Xインスタンスのpolardbx-storage-0マスターノードにデータベースを作成します。

    CREATE DATABASE db1 MODE=drds LOCALITY='dn=polardbx-storage-0-master';
    説明
    • データベースの作成時にデータベースの場所を指定しないと、システムはすべてのストレージノードにデータベースデータを均等に分散します。

    • データベース内のテーブルシャードは、データベースと同じ場所に格納する必要があります。 これにより、テーブルシャード内のデータを分離できます。

    データベースを作成した後、次のステートメントを実行してデータベースの場所を照会できます。

    SHOW CREATE DATABASE db1 MODE=drds;

    次の結果が返されます。

    +----------+------------------------------------------------------------------------+
    | DATABASE | CREATE DATABASE                                                        |
    +----------+------------------------------------------------------------------------+
    | db1      | CREATE DATABASE `db1` /* LOCALITY = "dn=polardbx-storage-0-master" */  |
    +----------+------------------------------------------------------------------------+
    1 row in set