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 ***

相關文章
相關標籤/搜索