mysql允许RANGE和LIST分区上再进行HASH和KEY的子分区
mysql> create table ts(a int,b date)
-> partition by range(year(b))
-> subpartition by hash(TO_DAYS(b))
-> subpartitions 2(
-> partition p0 values less than (1990),
-> partition p1 values less than (2000),
-> partition p2 values less than maxvalue
-> );
Query OK, 0 rows affected (0.89 sec)
产生6个分区,3*2=6
mysql> select * from information_schema.partitions
-> where table_schema=database() and
-> table_name='ts'\G;
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: ts
PARTITION_NAME: p0
SUBPARTITION_NAME: p0sp0
PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: 1
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: HASH
PARTITION_EXPRESSION: year(b)
SUBPARTITION_EXPRESSION: TO_DAYS(b)
PARTITION_DESCRIPTION: 1990
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: ts
PARTITION_NAME: p0
SUBPARTITION_NAME: p0sp1
PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: 2
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: HASH
PARTITION_EXPRESSION: year(b)
SUBPARTITION_EXPRESSION: TO_DAYS(b)
PARTITION_DESCRIPTION: 1990
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 3. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: ts
PARTITION_NAME: p1
SUBPARTITION_NAME: p1sp0
PARTITION_ORDINAL_POSITION: 2
SUBPARTITION_ORDINAL_POSITION: 1
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: HASH
PARTITION_EXPRESSION: year(b)
SUBPARTITION_EXPRESSION: TO_DAYS(b)
PARTITION_DESCRIPTION: 2000
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 4. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: ts
PARTITION_NAME: p1
SUBPARTITION_NAME: p1sp1
PARTITION_ORDINAL_POSITION: 2
SUBPARTITION_ORDINAL_POSITION: 2
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: HASH
PARTITION_EXPRESSION: year(b)
SUBPARTITION_EXPRESSION: TO_DAYS(b)
PARTITION_DESCRIPTION: 2000
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 5. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: ts
PARTITION_NAME: p2
SUBPARTITION_NAME: p2sp0
PARTITION_ORDINAL_POSITION: 3
SUBPARTITION_ORDINAL_POSITION: 1
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: HASH
PARTITION_EXPRESSION: year(b)
SUBPARTITION_EXPRESSION: TO_DAYS(b)
PARTITION_DESCRIPTION: MAXVALUE
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 6. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: ts
PARTITION_NAME: p2
SUBPARTITION_NAME: p2sp1
PARTITION_ORDINAL_POSITION: 3
SUBPARTITION_ORDINAL_POSITION: 2
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: HASH
PARTITION_EXPRESSION: year(b)
SUBPARTITION_EXPRESSION: TO_DAYS(b)
PARTITION_DESCRIPTION: MAXVALUE
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
6 rows in set (0.02 sec)
第二种方式:
CREATE TABLE ts2 (
a int(11) DEFAULT NULL,
b date DEFAULT NULL
)
PARTITION BY RANGE (year(b))
SUBPARTITION BY HASH (to_days(b))
(PARTITION p0 VALUES LESS THAN (1990)
(SUBPARTITION s0 ,
SUBPARTITION s1 ),
PARTITION p1 VALUES LESS THAN (2000)
(SUBPARTITION s2 ,
SUBPARTITION s3 ),
PARTITION p2 VALUES LESS THAN MAXVAlUE
(SUBPARTITION s4 ,
SUBPARTITION s5 ));
几条SQL:
1.create table ts3 like ts2;
建立ts3表和ts2一模一样
2.alter table ts3 drop partition p0;
删除ts3表的p0分区
相关推荐
详细介绍mysql5.1 分区技术,通过对list range hash key四种分区技术的举例阐述Mysql分区,18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的...
- 考虑使用分区表或者复制方案来降低单个表的负载。 3. **正常状态:** - **含义:**表示线程处于正常的等待状态,通常不需要特别处理。 **查看锁阻塞视图:** 1. **schema_table_lock_waits:** - **作用:**...
- 举例说明READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ和SERIALIZABLE四种隔离级别。 5. **存储引擎** - InnoDB和MyISAM是MySQL中最常见的两个存储引擎,它们的区别是什么? - InnoDB支持哪些特性,如...
- **扩展技术**: 探讨MySQL的各种扩展技术, 如分区、复制等。 #### 21. MySQL何时使用索引 - **索引策略**: 了解MySQL在哪些情况下会选择使用索引。 #### 22. MySQL何时不使用索引 - **索引限制**: 理解MySQL不...
5. 减少子查询:子查询可能导致多次表扫描,考虑使用JOIN或临时表替代。 三、服务器端优化 1. 内存配置:合理设置缓冲池大小(如innodb_buffer_pool_size)以缓存数据和索引,减少磁盘I/O。 2. 连接管理:限制...
- 举例说明MySQL中的数值类型,如INT、FLOAT、DECIMAL等的用途。 - 何时应使用VARCHAR而不是CHAR? 3. **表操作** - 如何创建一个包含主键的表?解释主键的作用。 - 描述外键及其在数据库完整性中的角色。 - ...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,广泛应用于各种规模的企业和项目中。为了在面试中脱颖而出,理解并掌握MySQL的核心概念和技术至关重要。以下是一些基于MySQL的经典面试题和相关知识点的详细解析...
9. **MySQL的分区和分表有什么区别?** 分区是将大表分成多个物理部分,每个部分有自己的索引,提高查询效率。分表是将一个大表分成多个逻辑上独立的小表,可以是垂直分割(按列分)或水平分割(按行分)。 10. **...
1. **SQL基础知识**:面试通常会从SQL语言的基本语法开始,如SELECT语句、JOIN操作、子查询、聚合函数(COUNT, SUM, AVG, MAX, MIN)等。 2. **数据类型**:理解MySQL中的不同数据类型,如INT, VARCHAR, DATE, ...
9. **性能优化**:手册会讲解如何通过查询优化、索引设计、分区和复制等手段提高MySQL的性能。 10. **安全性**:MySQL提供了多种用户管理、权限控制和加密功能。手册会阐述如何设置用户账户、授权和撤销权限,以及...
5. SQL优化:通过分析SQL执行计划,避免全表扫描,合理利用索引,减少JOIN操作,优化子查询等方式,提高SQL执行效率。 6. 数据备份与恢复:在云环境中,定期的数据备份和快速恢复策略是保障数据安全的重要手段。...
- **举例**: 复杂类型的使用示例。 - **array类型**: 存储有序的元素集合。 - **map类型**: 存储键值对。 - **struct类型**: 存储命名字段。 - **union类型**: 存储不同类型的数据。 - **字段分隔符**: 定义...
使用INNER JOIN代替子查询提高性能。 - **索引优化**:为常用查询条件创建合适的索引;合理利用复合索引;定期维护和优化索引结构。 - **表设计优化**:合理选择数据类型,减少存储空间;避免使用触发器,它们会增加...
- 使用分区技术,如范围分区、列表分区等。 - 建立合理的索引策略,避免不必要的全表扫描。 - 调整MySQL配置参数,优化缓存机制。 - 定期清理旧数据或归档数据。 9. **MySQL慢查询问题** - 开启慢查询日志,...
- 分布式数据库中的CAP定理是什么,如何权衡一致性、可用性和分区容错性? 10. **存储引擎** - 以MySQL为例,对比InnoDB和MyISAM存储引擎的差异。 - 何时应该选择InnoDB,何时应该选择MyISAM? 11. **安全性与...
- 索引是查询优化的关键,访问数据主要有两种方式:顺序扫描(如全表扫描和分区扫描)和通过索引访问。索引访问可以进一步分为访问索引后访问表和只访问索引。 2. **表连接**: - MySQL采用嵌入式循环连接...
- CAP定理:解析一致性、可用性和分区容错性之间的权衡,举例说明其应用场景。 - 分布式一致性:阐述Paxos算法或Raft算法的基本思想和实现方式。 - 分布式事务:讲解ACID特性,分析2PC(两阶段提交)及其局限性。...