全部產品
Search
文件中心

PolarDB:CREATE DATABASE

更新時間:Jan 11, 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'}

注意事項

標準版不支援dbpartition(分庫分表)文法,僅企業版執行個體支援建立DRDS模式資料庫。

參數說明

參數

說明

database_name

指定要建立的資料庫名稱。

CHARSET charset_name

指定待建立資料庫的字元集。

COLLATE collation_name

指定校對規則。

LOCALITY

建立資料庫時指定該庫的儲存位置。

說明

通過LOCALITY文法指定了資料庫的位置之後,不支援再修改該庫的儲存位置。

MODE

指定邏輯庫所使用的分區模式,參數取值如下:

  • auto(預設值):表示自動分區模式資料庫,使用限制如下:

    • 全庫只能使用新的分區表建表文法(如Partition By Hash/Range/List等)進行建表。更多資訊,請參見CREATE TABLE(AUTO模式)

    • 允許自動將單表打散到不同DN節點,該功能預設不啟用,需要在建庫語句中添加DEFAULT_SINGLE = 'on' 參數,以開啟自動打散功能。更多資訊,請參見單表打散

    • 允許在資料表未顯式指定分區定義時,自動按主鍵分區(需要注意的是,該功能預設為關閉狀態,您可以通過執行SET GLOBAL auto_partition=true語句,開啟自動資料分割函數)。

  • drds:表示DRDS模式資料庫,全庫只能使用DRDS模式的分庫分表建表文法(如Dbpartition By/Tbpartition By)進行建表。更多資訊,請參見CREATE TABLE(DRDS模式)

重要

DEFAULT_SINGLE(版本要求:PolarDB-X 5.4.17-16921956及以上)

指定AUTO模式資料庫是否使用單表自動打散至各個DN節點的分布策略,該選項僅對AUTO模式資料庫有效,對DRDS模式資料庫無效。參數取值如下:

  • OFF(預設值):表示關閉單表自動打散,即在AUTO模式下,建立表且未顯式指定分區定義時,該表將以單表的形式建立,且不會自動打散到該執行個體的不同的DN節點。

  • ON:表示開啟單表自動打散,即在AUTO模式下,建立表且未顯式指定分區定義時,系統會建立單表並且將這些單表自動打散到該執行個體的不同的DN節點。更多資訊,請參見單表打散

    說明

    DEFAULT_SINGLE='ON'的優先順序高於MODE='auto',即開啟單表打散功能後,自動資料分割函數將失效。

樣本

  • 建立AUTO模式資料庫test,並指定字元集為UTF8。

    CREATE DATABASE test MODE=auto default CHARACTER SET UTF8;
    Query OK, 1 row affected (0.00 sec)
  • 在執行個體中建立一個資料庫,並通過以下命令指定其儲存位置為polardbx-storage-0-master節點。

    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