千家信息网

MySQL/MariaDB 分区

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,查看表的创建命令SHOW CREATE TABLE my_table_name;查看表是否分区(Create_options 字段为 partitioned 或空)SHOW TABLE STATUS
千家信息网最后更新 2024年11月19日MySQL/MariaDB 分区
  • 查看表的创建命令

SHOW CREATE TABLE my_table_name;
  • 查看表是否分区(Create_options 字段为 partitioned 或空)

SHOW TABLE STATUS LIKE '%my_table_name%';
  • 查看分区信息

# 所有信息SELECT    *FROM     INFORMATION_SCHEMA.PARTITIONSWHERE     TABLE_SCHEMA = 'my_db_name'          # 库名    AND TABLE_NAME = 'my_table_name';    # 表名    # 常用信息SELECT    PARTITION_METHOD,    PARTITION_NAME,      PARTITION_EXPRESSION,      PARTITION_DESCRIPTION,      TABLE_ROWSFROM     INFORMATION_SCHEMA.PARTITIONSWHERE     TABLE_SCHEMA =  SCHEMA()            # 库名    AND TABLE_NAME = 'my_table_name';    # 表名


【KEY 分区】

  • 有主键时创建 KEY 分区,建议分区个数为质数。

可参考这篇文章:MySQL之KEY分区引发的血案

经测试,在 MySQL 5.7.26、MariaDB 10.4.6 下,分区个数为偶数时,奇数编号分区数据条数仍然为0。

CREATE TABLE my_table_name (    id INT NOT NULL PRIMARY KEY,        name VARCHAR(20))PARTITION BY KEY()PARTITIONS 11;    # 11 个分区
  • 无主键时创建 key 分区

CREATE TABLE my_table_name (    name VARCHAR(20))PARTITION BY KEY(name)PARTITIONS 11;    # 11 个分区
  • 对于已有表进行分区,建议新建分区表,再导入数据;也可以用 ALTER 语句修改表:

ALTER TABLE my_table_namePARTITION BY KEY() PARTITIONS 11;


【相关阅读】

  • MySQL/MariaDB Tips


*** walker ***


0