MySQL/MariaDB 分区

  • 查看表的建立命令sql

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

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

# 全部信息
SELECT
    *
FROM 
    INFORMATION_SCHEMA.PARTITIONS
WHERE 
    TABLE_SCHEMA = 'my_db_name'          # 库名
    AND TABLE_NAME = 'my_table_name';    # 表名
    
# 经常使用信息
SELECT
    PARTITION_METHOD,
    PARTITION_NAME,  
    PARTITION_EXPRESSION,  
    PARTITION_DESCRIPTION,  
    TABLE_ROWS
FROM 
    INFORMATION_SCHEMA.PARTITIONS
WHERE 
    TABLE_SCHEMA =  SCHEMA()            # 库名
    AND TABLE_NAME = 'my_table_name';    # 表名


【KEY 分区】spa

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

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

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

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

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

ALTER TABLE my_table_name
PARTITION BY KEY() 
PARTITIONS 11;


【相关阅读】it


*** walker ***

相关文章
相关标签/搜索