TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似。

二级分区语法

一级 Hash,二级 List 分区示例如下:

MySQL [test]> CREATE TABLE customers_1 (

first_name VARCHAR(25) key,

last_name VARCHAR(25),

street_1 VARCHAR(30),

street_2 VARCHAR(30),

city VARCHAR(15),

renewal DATE

) shardkey=first_name

PARTITION BY LIST (city) (

PARTITION pRegion_1 VALUES IN('Beijing', 'Tianjin', 'Shanghai'),

PARTITION pRegion_2 VALUES IN('Chongqing', 'Wulumuqi', 'Dalian'),

PARTITION pRegion_3 VALUES IN('Suzhou', 'Hangzhou', 'Xiamen'),

PARTITION pRegion_4 VALUES IN('Shenzhen', 'Guangzhou', 'Chengdu')

);

一级 Range,二级 List 创建语法如下:

MySQL [test]> CREATE TABLE tb_sub_r_l (

id int(11) NOT NULL,

order_id bigint NOT NULL,

PRIMARY KEY (id,order_id))

PARTITION BY list(order_id)

(PARTITION p0 VALUES in (2121122),

PARTITION p1 VALUES in (38937383))

TDSQL_DISTRIBUTED BY RANGE(id) (s1 values less than (100),s2 values less than (1000));

Query OK, 0 rows affected, 1 warning (0.35 sec)

Range 支持类型

DATE,DATETIME,TIMESTAMP。

支持 year,month,day 函数,函数为空和 day 函数一样。

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT。

支持 year,month,day 函数,此时传入的值转换为年月日,然后和分表信息进行对比。

List 支持类型

DATE,DATETIME,TIMESTAMP。

支持年月日函数。

TINYINT, SMALLINT, MEDIUMINT, INT , BIGINT。

警告

建议不要使用 TIMESTAMP 类型作为分区键,因为 TIMESTAMP 受到时区的影响,同时只能使用到2038年。

如果分区键是 char 或者 varchar 类型,建议长度不超255。

使用场景和方法建议

建议业务尽量都使用一级分区表。

使用前根据业务长期场景合理设计表结构,二级分区适用于表结构创建后长期都不需要 DDL 变更、需要定期进行分区数据清理和裁剪的场景,如日志流水表。

合理设计二级分区的粒度,二级分区的粒度建议不要划分得太细,避免产生过多的二级子表。如流水表按月进行二级分区,而不是按天/小时进行分区,避免文件系统上数据文件个数过多。

在对二级分区表进行 SQL 查询时,查询条件需要尽量带上一级分区和二级分区的键值,避免执行查询时需要打开很多的数据文件进行搜索。

在对二级分区表进行 join 查询时,如果查询条件未能带上一级分区和二级分区的键值,操作性能效率较低,建议不要使用。

表的主键或唯一索引需要包含分区键,否则无法保证数据唯一性。

腾讯云TDSQL MySQL版 - 开发指南 二级分区的更多相关文章

  1. 腾讯云TDSQL MySQL版 - 开发指南 分布式事务

    由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...

  2. 腾讯云TDSQL PostgreSQL版 -最佳实践 |优化 SQL 语句

    查看是否为分布键查询 postgres=# explain select * from tbase_1 where f1=1; QUERY PLAN ------------------------- ...

  3. 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”

    Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...

  4. 腾讯云TDSQL监控库密码忘记问题解决实战

    首先,给大家介绍一下TDSQL.TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用.全球部署架构.分布式水平扩展.高性能.企业级安全等特性, ...

  5. TDSQL MySQL版基本原理-水平分表 读写分离 弹性扩展 强同步

    TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分.Shared Nothing 架构的分布式数据库.TDSQL MySQL版 即业务获取的是完整的逻辑库 ...

  6. 腾讯云TDSQL审计原理揭秘

    版权声明:本文由孙勇福原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/244 来源:腾云阁 https://www.qclo ...

  7. 阿里云数据库MySQL版快速上手!

    MySQL是全球最受欢迎的开源数据库,其在各Web应用中均有广泛部署.阿里云数据库MySQL版基于Alibaba的MySQL源码分支,经过双11高并发.大数据量的考验,拥有优良的性能和吞吐量.除此之外 ...

  8. Navicat连接腾讯云实例MySQL

    Navicat连接腾讯云实例MySQL 授权所有的用户通过root账户 root密码登陆远程数据库 连接腾讯云实例上的MySQL数据库 这里的密码填入数据库的密码 这里的密码填入登陆云实例的密码也就是 ...

  9. ReadHub项目Kotlin版开发指南(三、MVP架构)

    ReadHub项目Kotlin版转换指南(一.环境搭建) ReadHub项目Kotlin版转换指南(二.数据库和网络请求) ReadHub项目Kotlin版转换指南(三.MVP架构) Android ...

随机推荐

  1. SpringMVC的注解关键词解释

    SpringMVC的注解关键词解释 @Controller控制器定义 和Struts1一样,Spring的Controller是Singleton的.这就意味着会被多个请求线程共享.因此,我们将控制器 ...

  2. 17 shell break与continue

    使用 while.until.for.select 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或者 continue 关键字. 在C语言.Python.Ja ...

  3. <c:out>标签不能正确输出value中的值

    问题: 我打算在jsp中输出request中的值,它的key为username, <c:out value="${requestScope.username}"/> 但 ...

  4. Vue | 路由守卫面试常考

    前言 最近在整理基础,欢迎掘友们一起交流学习 结尾有彩蛋哦! Vue Router 路由守卫 导图目录 路由守卫分类 全局路由守卫 单个路由守卫 组件路由守卫 路由守卫执行的完整过程 路由守卫分类 全 ...

  5. 流媒体传输协议(rtp/rtcp/rtsp/rtmp/mms/hls)转

    常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议两类.在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时多媒体数据. 1 实时传输 ...

  6. printf函数返回值

    //返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志. #include <stdio.h> #defi ...

  7. Day6 三种结构 顺序选择循环!

    顺序结构 从上到下依次执行,它是任何算法都离不开的一种基本算法结构. package com.xiaoming.struct;​public class ShunXuDemo {    public ...

  8. 【spring源码系列】之【Bean的循环依赖】

    希望之光永远向着目标清晰的人敞开. 1. 循环依赖概述 循环依赖通俗讲就是循环引用,指两个或两个以上对象的bean相互引用对方,A依赖于B,B依赖于A,最终形成一个闭环. Spring循环依赖的场景有 ...

  9. CentOS下 Django部署 nginx+uWSGI+Django(二)

    该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...

  10. Linux 安装 Nodejs 的两种方式

    Linux 安装 Nodejs 的两种方式 目录 Linux 安装 Nodejs 的两种方式 一.压缩包安装 Nodejs 二.源码编译安装 Nodejs 一.压缩包安装 Nodejs 下载 Node ...