CREATE DEFAULT SHARDING STRATEGY

描述

CREATE DEFAULT SHARDING STRATEGY 语法用于创建默认的分片策略

语法定义

语法 铁路图

  1. CreateDefaultShardingStrategy ::=
  2. 'CREATE' 'DEFAULT' 'SHARDING' ('DATABASE' | 'TABLE') 'STRATEGY' ifNotExists? '(' shardingStrategy ')'
  3. ifNotExists ::=
  4. 'IF' 'NOT' 'EXISTS'
  5. shardingStrategy ::=
  6. 'TYPE' '=' strategyType ',' ('SHARDING_COLUMN' '=' columnName | 'SHARDING_COLUMNS' '=' columnNames) ',' 'SHARDING_ALGORITHM' '=' algorithmDefinition
  7. strategyType ::=
  8. string
  9. algorithmDefinition ::=
  10. 'TYPE' '(' 'NAME' '=' algorithmType ',' propertiesDefinition ')'
  11. columnNames ::=
  12. columnName (',' columnName)+
  13. columnName ::=
  14. identifier
  15. algorithmType ::=
  16. string
  17. propertiesDefinition ::=
  18. 'PROPERTIES' '(' key '=' value (',' key '=' value)* ')'
  19. key ::=
  20. string
  21. value ::=
  22. literal

补充说明

  • 当使用复合分片算法时,需要通过 SHARDING_COLUMNS 指定多个分片键;
  • algorithmType 为分片算法类型,详细的分片算法类型信息请参考分片算法
  • ifNotExists 子句用于避免出现 Duplicate default sharding strategy 错误。

示例

  • 创建默认分表策略
  1. CREATE DEFAULT SHARDING TABLE STRATEGY (
  2. TYPE="standard", SHARDING_COLUMN=user_id, SHARDING_ALGORITHM(TYPE(NAME=inline, PROPERTIES("algorithm-expression"="t_order_${user_id % 2}")))
  3. );
  • 使用 ifNotExists 创建默认分表策略
  1. CREATE DEFAULT SHARDING TABLE STRATEGY IF NOT EXISTS (
  2. TYPE="standard", SHARDING_COLUMN=user_id, SHARDING_ALGORITHM(TYPE(NAME=inline, PROPERTIES("algorithm-expression"="t_order_${user_id % 2}")))
  3. );

保留字

CREATEDEFAULTSHARDINGDATABASETABLESTRATEGYTYPESHARDING_COLUMNSHARDING_COLUMNSSHARDING_ALGORITHMNAMEPROPERTIES

相关链接