iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL分区表Range方式
  • 870
分享到

MySQL分区表Range方式

MySQL分区表Range方式 2018-04-27 08:04:51 870人浏览 才女
摘要

Range分区的特点: 根据分区键值保存到不同表中 多个分区要连续,不能重叠 要完全封口则需要使用MAXVALUE   CREATE

MySQL分区表Range方式

Range分区的特点:

  • 根据分区键值保存到不同表中
  • 多个分区要连续,不能重叠
  • 要完全封口则需要使用MAXVALUE

 

CREATE TABLE `user_login_log` (
`user_id` int(10) unsigned NOT NULL COMMENT "登录⽤用户ID", 
`login_time` datetime NOT NULL COMMENT "⽤用户登录时间", 
`login_ip` int(10) unsigned NOT NULL COMMENT "登录IP", 
`login_type` tinyint(4) NOT NULL COMMENT "登录类型:0未成功 1成功") ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITioN BY RANGE(YEAR(login_time))(
  PARTITION p0 VALUES LESS THAN (2017),
  PARTITION p1 VALUES LESS THAN (2018),
  PARTITION p2 VALUES LESS THAN (2019),
  PARTITION p3 VALUES LESS THAN (2020),
  PARTITION p4 VALUES LESS THAN MAXVALUE
);
 

应⽤场景

CREATE TABLE `user_login_log` (
`user_id` int(10) unsigned NOT NULL COMMENT "登录⽤用户ID", 
`login_time` datetime NOT NULL COMMENT "⽤用户登录时间", 
`login_ip` int(10) unsigned NOT NULL COMMENT "登录IP", 
`login_type` tinyint(4) NOT NULL COMMENT "登录类型:0未成功 1成功") ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY RANGE(YEAR(login_time))(
  PARTITION p0 VALUES LESS THAN (2017),
  PARTITION p1 VALUES LESS THAN (2018),
  PARTITION p2 VALUES LESS THAN (2019),
  PARTITION p3 VALUES LESS THAN (2020),
  PARTITION p3 VALUES LESS THAN (2020)
);

不实用封口的好处是,需要增加分区时执行:

ALTER TABLE user_login_log ADD PARTITION(PARTITION p4 VALUES LESS
THAN(2021))

⽇志数据进⾏备份的时候,在Mysql v5.7版本后加⼊了一个分区交换的概念

  • 表结构要相同
  • 归档的这个表不能是分区表
  • 归档表不能有外键约束
  • 引擎是ARCHive

 

#归档表
CREATE TABLE `arch_user_login_log_2016` (
`user_id` int(10) unsigned NOT NULL COMMENT "登录⽤用户ID", `login_time` datetime NOT NULL COMMENT "⽤用户登录时间", `login_ip` int(10) unsigned NOT NULL COMMENT "登录IP", `login_type` tinyint(4) NOT NULL COMMENT "登录类型:0未成功 1成功"
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE user_login_log exchange PARTITION p0 WITH TABLE
arch_user_login_log_2016;
ALTER TABLE arch_user_login_log_2016 ENGINE=ARCHIVE;

  再删除分区文件

ALTER TABLE user_login_log DROP PARTITION p0;

如果一个表不是分区表并已经有数据了,还可以变成分区表

ALTER TABLE user_login_log PARTITION BY RANGE(YEAR(login_time))(
  PARTITION p0 VALUES LESS THAN (2017),
  PARTITION p1 VALUES LESS THAN (2018),
  PARTITION p2 VALUES LESS THAN (2019),
  PARTITION p3 VALUES LESS THAN (2020)
);

变成分区表后, 会重排数据,并且数据量大的情况下I/O消耗很⼤,这种数据量⼤的表,要按照修改表结构的方式来进行分区表操作

  • 建立新结构相同的分区表
  • 数据导入
  • 表名切换  

分区表最⼤大有多少个:1024,分区表的限制和注意事项:

  • 如果表里有主键必须包含分区表的分区键
  • 很多时候,使⽤分区表就不要使用主键,建立主键后可能会影响性能
  • 不要建立过多的分区
  • 分区表不⽀持外键
  • 分区规则必须要提前设立好,否则修改很麻烦

分区表的最佳实践

  • 记录⾮常的多,⾮常的大
  • 明显的时间区间特征
  • 查询频次低,就近时间点查询频次⾼
  • 需要定期归档转储

 

您可能感兴趣的文档:

--结束END--

本文标题: MySQL分区表Range方式

本文链接: https://www.lsjlt.com/news/6414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL分区之RANGE分区详解
    目录介绍一、RANGE分区1.创建分区2.性能分析3.增加分区4.删除分区5.拆分合并分区二、日期字段分区方法三、null值处理四、移除表的分区总结介绍 RANGE分区基于一个给定的...
    99+
    2024-04-02
  • mysql 表分区的方式和实现
    1. mysql 表的分区方式 MySQL 提供了多种分区方式,以下是常见的几种分区方式: 范围分区(RANGE):按照某个连续的范围将数据分区,例如按照订单日期进行分区。在创建表时,可以使用 PARTITION BY RANGE 子句来设...
    99+
    2023-08-17
    mysql mysql 分区的方式 mysql 分区的实现样例
  • mysql表的四种分区方式总结
    目录1、什么是表分区?2、表分区与分表的区别3、表分区有什么好处?4、分区表的限制因素5、如何判断当前MySQL是否支持分区? 6、MySQL支持的分区类型有哪些?6.1、...
    99+
    2024-04-02
  • mysql中怎么实现range分区
    本篇文章为大家展示了mysql中怎么实现range分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一,如何启动mysqld?    ...
    99+
    2024-04-02
  • mysql表的四种分区方式是什么
    这篇文章主要介绍“mysql表的四种分区方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql表的四种分区方式是什么”文章能帮助大家解决问题。1、什么是表分区?mysql数据库中的数据是...
    99+
    2023-06-30
  • Oracle range时间范围自动分区的创建方式
    目录Oracle  range时间范围自动分区1.创建测试表,分区字段CDAT NUMBER()2.执行增加分区语句3.创建新的分区测试空表----------使用企业版O...
    99+
    2023-05-16
    oracle分区 range时间范围自动分区 oracle range自动分区
  • mysql分区表:日期分区
    mysql分区表:日期分区 1.创建分区表2.查看分区3.添加分区4.存储过程:分区删除与创建5.事件定时6.触发器设计:子表每插入一行,总表获得一行7.创建索引8.添加枚举型字段 1.创建分区表 CREATE TAB...
    99+
    2023-08-21
    mysql 数据库
  • mysql表的分区格式有哪些
    这篇文章将为大家详细讲解有关mysql表的分区格式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql表的分区格式有:1、RANGE分区是基于属于一个给定连续区...
    99+
    2024-04-02
  • MySQL 5.5 range分区增加删除处理实例的方法
    小编给大家分享一下MySQL 5.5 range分区增加删除处理实例的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!介绍RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基...
    99+
    2024-04-02
  • Mysql表分区的操作方法
    这篇文章主要讲解了“Mysql表分区的操作方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql表分区的操作方法”吧! M...
    99+
    2024-04-02
  • MySQL分库分表的几种方式
    目录一、为什么要分库分表二、什么是分库分表三、分库分表的几种方式1.垂直拆分2. 水平拆分四、分库分表带来的问题五、分库分表技术如何选型一、为什么要分库分表 如果一个网站业务快速发展...
    99+
    2024-04-02
  • PostgreSQL表分区的方式有哪些
    这篇文章主要讲解了“PostgreSQL表分区的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL表分区的方式有哪些”吧!目录一、简介二、三种方式1、Range范围...
    99+
    2023-06-20
  • MySQL分库分表的方式有哪些
    本文小编为大家详细介绍“MySQL分库分表的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL分库分表的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、为什么要分库分表如果一个网站业...
    99+
    2023-06-30
  • MySQL 分区表设计
    MySQL 分区表设计 1、分区表设计方案 当设计 MySQL 分区表时,需要考虑以下几个方面:分区策略、分区字段、分区数量和分区函数。下面是一个详细的示例,展示了如何设计和执行分区表的增删改查操...
    99+
    2023-10-05
    mysql 数据库 分区表 sql
  • mysql分区表笔记
    mysql分区表    mysql分区表是一个独立的逻辑表,但是底层由多个物理字表组成。    对分区的请求,都会通过句柄对象转化成对存储引擎接口的调用。所以分区对于...
    99+
    2024-04-02
  • 浅谈PostgreSQL表分区的三种方式
    目录一、简介二、三种方式2.1、Range范围分区2.2、List列表分区2.3、Hash哈希分区三、总结一、简介 表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会...
    99+
    2024-04-02
  • MySQL分区表的正确使用方法
    MySQL分区表概述 我们经常遇到一张表里面保存了上亿甚至过十亿的记录,这些表里面保存了大量的历史记录。 对于这些历史数据的清理是一个非常头疼事情,由于所有的数据都一个普通的表里。所以只能是启用一个或多个...
    99+
    2024-04-02
  • mysql中分表的方式有哪些
    mysql中分表的方式有:1.垂直分表,包含有很多列的表拆分成多个表;2.水平分表,将大表根据某个字段和规则分散到多个表中;3.按号段分表,以user_id为区分;mysql中分表的方式有以下几种垂直分表垂直分表就是一个包含有很多列的表拆分...
    99+
    2024-04-02
  • mysql 5.6分区表应用
    mysql 5.6分区表测试:DROP TABLE IF EXISTS `my_orders`;CREATE TABLE `my_orders` (  `id` int(10) unsig...
    99+
    2024-04-02
  • mysql分表分区的示例分析
    这篇文章给大家介绍mysql分表分区的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作