解读TaurusDB二级分区,如何提高查询性能和管理效率
摘要:TaurusDB全面兼容MySQL分区表的语法和功能,支持更加丰富的分区方式和组合策略。
1.背景介绍
2. TaurusDB分区表功能介绍
2.1 MySQL分区表原理介绍
l 一级分区
图1 电商系统中的订单表的一级分区示意图
mysql> CREATE TABLE `orders` ( id INT AUTO_INCREMENT, city_name VARCHAR(50), PRIMARY KEY (id, city_name) ) PARTITION BY LIST COLUMNS(city_name) ( PARTITION pShanghai VALUES IN ('上海'), PARTITION pXian VALUES IN ('西安'), PARTITION pShenzhen VALUES IN ('深圳') );
mysql> EXPLAIN SELECT * FROM `orders` WHERE city_name= '上海'; +----+-------------+-----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ |1| SIMPLE | orders | pShanghai | index | PRIMARY | PRIMARY | 206 | NULL | 1 |100.00| Using where; Using index | +----+-------------+-----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
l 二级分区
mysql> create table `orders` ( order_id bigint NOT NULL COMMENT '订单编号', city_name varchar(20) NOT NULL COMMENT '所属城市', purchase_time date NOT NULL COMMENT '下单时间' ) partition by list (year(purchase_time)) subpartition by hash (month(purchase_time)) subpartitions 12 ( partition p_2022 values in (2022), partition p_2023 values in (2023), partition p_2024 values in (2024) );
表1 社区MySQL四种分区的划分方式及适用场景
2.2 TaurusDB二级分区增强
表2 MySQL和TaurusDB支持的分区组合方式
mysql> create table `orders` ( order_id bigint NOT NULL COMMENT '订单编号', city_name varchar(20) NOT NULL COMMENT '所属城市', purchase_time date NOT NULL COMMENT '下单时间' ) partition by list columns (city_name) subpartition by range (year(purchase_time)) ( partition p_shanghai values in ('上海') ( subpartition shanghai_2022 values less than (2023), subpartition shanghai_2023 values less than (2024), subpartition shanghai_2024 values less than (2025) ), partition p_shenzhen values in ('深圳') ( subpartition shenzhen_2022 values less than (2023), subpartition shenzhen_2023 values less than (2024), subpartition shenzhen_2024 values less than (2025) ), partition p_xian values in ('西安') ( subpartition xian_2022 values less than (2023), subpartition xian_2023 values less than (2024), subpartition xian_2024 values less than (2025)) );
图2 电商系统中的订单表的二级分区示意图
2.3 LIST DEFAULT HASH分区表
mysql> CREATE TABLE `orders` ( city_name CHAR(50), order_time INT ) PARTITION BY LIST COLUMNS (city_name) ( PARTITION p_jiangsu VALUES IN ('无锡','苏州','南京'), PARTITION p_shanxi VALUES IN ('西安','宝鸡','榆林'), PARTITION p_guangdong VALUES IN ('深圳','珠海','东莞'), PARTITION p_others DEFAULT PARTITIONS 3 );
图3 LIST DEFAULT HASH分区示意图
2.4 INTERVAL RANGE分区表
mysql> CREATE TABLE `sales` ( id BIGINT, uid BIGINT, order_time DATETIME ) PARTITION BY RANGE COLUMNS(order_time) INTERVAL(MONTH, 1) ( PARTITION p0 VALUES LESS THAN('2021-10-1'), PARTITION P1 VALUES LESS THAN('2021-11-1') );
INSERT INTO sales VALUES(1, 1010101010, '2021-12-25');
mysql> CREATE TABLE `sales` ( id BIGINT, uid BIGINT, order_time DATETIME ) PARTITION BY RANGE COLUMNS(order_time) INTERVAL(MONTH, 1) ( PARTITION p0 VALUES LESS THAN('2021-10-1'), PARTITION P1 VALUES LESS THAN('2021-11-1'), PARTITION _p20211201000000 VALUES LESS THAN ('2021-12-01 00:00:00'), PARTITION _p20220101000000 VALUES LESS THAN ('2022-01-01 00:00:00') );
图4 INTERVAL RANGE分区示意图
3. 应用场景
日志系统
邮件系统
电商平台
4. 总结

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
导读:湖仓一体架构融合了数据湖的低成本、高扩展性,以及数据仓库的高性能、强数据治理能力,高效应对大数据时代的挑战。为助力企业实现湖仓一体的建设,Apache Doris 提出了数据无界 和湖仓无界核心理念,并结合自身特性,助力企业加速从 0 到 1 构建湖仓体系,降低转型过程中的风险和成本。本文将对湖仓一体演进及 Apache Doris 湖仓一体方案进行介绍。 在过去的数年间,数据分析技术栈经历了许多重要变革,从最初数据仓库概念的诞生,到数据湖的兴起,进而演进到湖仓一体解决方案。这一技术路线的演进,反映出现代企业在数据分析领域对性能、实时性、一致性、开放性、统一管理方面的需求不断增强。 湖仓一体的演进 01 传统数据仓库的出现 在企业信息化发展初期、业务流程数字化的不断推进下,积累的数据愈发繁杂。管理层亟需快速整理这些数据,清晰洞察业务状况以精准决策,在此背景下催生了数据仓库。 数据仓库的核心目标是助力商业智能(BI)决策,将分散于各业务系统的结构化数据抽取、转换、加载(ETL)至集中存储库。数据仓库的显著优势包括: 高效的结构化数据分析:严格的 Schema 设计确保数据高质量,为...
- 下一篇
Apache SeaTunnel基于JDBC连接器开发教程
说明 以下内容旨在帮助开发人员,快速了解熟悉SeaTunnel2.3.8程序框架,并能够进行JDBC连接器开发内容。 必要知识 在进行开发前,你一定要仔细阅读如下框架文档,它们存在于SeaTunnel源码中的Docs目录,这些文档能够帮你快速上手和规范开发,如果你已经阅读过则无需关注。 docs/zh/concept/config.md docs/zh/concept/connector-v2-features.md docs/zh/concept/JobEnvConfig.md docs/zh/connector-v2/sink/Jdbc.md docs/zh/connector-v2/sink-common-options.md docs/zh/connector-v2/source-common-options.md 连接器开发必看(https://www.modb.pro/db/447922) SeaTunnel基础开发流程 拉取项目 git clone https://github.com/apache/seatunnel.git 编译构建 选择Profiles mvn打包安...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能