`

MySQL分区表使用场景及特点介绍

 
阅读更多
MySQL分区表使用场景及特点介绍


本文旨在介绍MySQL分区表的运用场景及其特点,MySQL分区表主要有

  • Hash分区表
  • Range分区表
  • LIST分区表


一、Hash分区表
Hash分区表特点:逻辑上为一个表,但在物理上存储在多个文件中,以用户登陆日志表为例,

user_login_log(
  log_id       int         '日志ID',
  login_id     int         '登陆用户ID',
  login_time   datetime    '用户登陆时间',
  login_ip     int         '登陆IP',
  login_result int          登陆结果:0未成功,1成功',
  PRIMARY KEY pk_loginid(log_id)
) ENGINE = innodb COMMENT '用户登陆日志表'
PARTITION BY HASH(login_id) PARTITIONS 4;
与一般创建表的区别就在于加了 PARTITION这个命令。

文件结构上的区别

普通表结构:
user_login_log.frm
user_login_log.ibd

Hash分区表结构:
user_login_log.frm
user_login_log#P#p0.ibd
user_login_log#P#p1.ibd
user_login_log#P#p2.ibd
user_login_log#P#p3.ibd

Hash分区表的特点:
  • 根据MOD(分区建,分区数)的值把数据行存储到表的不同分区
  • 数据可以平均的分布在各个分区中
  • HASH分区的键值必须是一个INT类型的值,或是通过函数可以转为INT类型比如 UNIX_TIMESTAMP(login_time)


二、Range分区表
Range分区表的特点:根据分区键值的范围把数据行存储到表的不同分区中
多个分区的范围要连续,但是不能重复
默认情况下使用VALUES LESS THAN属性,即每个分区不包括指定的那个值

user_login_log(
  log_id       int         '日志ID',
  login_id     int         '登陆用户ID',
  login_time   datetime    '用户登陆时间',
  login_ip     int         '登陆IP',
  login_result int          登陆结果:0未成功,1成功',
  PRIMARY KEY pk_loginid(log_id)
) ENGINE = innodb COMMENT '用户登陆日志表'
PARTITION BY RANGE (login_id ) (
    PARTITION p0 VALUES LESS THAN (10000),
    PARTITION p1 VALUES LESS THAN (10000),
    PARTITION p2 VALUES LESS THAN (10000),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);
Range分区表的特点:
  • 分区键为日期或是时间类型
  • 所有SELECT查询中都包括分区键


三、LIST分区表

LIST分区表的特点:
  • 按分区键取值的列表进行分区
  • 同范围分区一样,各分区的列表值不能重复
  • 每一行数据必须能找到对应的分区列表,否则数据插入失败

user_login_log(
  log_id       int         '日志ID',
  login_id     int         '登陆用户ID',
  login_time   datetime    '用户登陆时间',
  login_ip     int         '登陆IP',
  login_result int          登陆结果:0未成功,1成功',
  PRIMARY KEY pk_loginid(log_id)
) ENGINE = innodb COMMENT '用户登陆日志表'
PARTITION BY LIST (login_result) (
    PARTITION p0 VALUES (1,3,5,7,9),
    PARTITION p1 VALUES (2,4,6,8)
);

使用分区表的注意事项
  • 结合业务场景选择分区键,避免跨分区查询
  • 对分区表进行查询最好在WHERE从句中包含分区键
  • 具有主键或唯一索引的表,主键或唯一索引必须是分区键的一部分

分享到:
评论

相关推荐

    MySQL分区表自动创建及删除存储过程

    MySQL分区表是一种优化大型数据表查询效率的技术,它将一个大表分成多个逻辑上相连但物理上独立的部分,每个部分称为一个分区。分区可以按照不同的策略进行,如范围、哈希、列表或复合分区。这样做有助于提高数据...

    互联网公司为啥不使用mysql分区表

    "互联网公司为啥不使用mysql分区表" 在互联网公司中,mysql分区表是一个比较少用的技术,这是因为分区表存在一些缺陷和限制,使得互联网公司更多地选择自己分库分表来水平扩展数据库。 首先,分区表的设计需要考虑...

    创建mysql表分区的方法

    本文将详细介绍MySQL表分区的原理、优势以及如何创建和使用分区。 **表分区的优势** 1. **存储优化**:分区可以存储更多数据,且可跨多个磁盘分布,提高存储容量。 2. **数据清理**:通过删除特定分区,可以快速...

    mysql表分区

    例如,可以先使用DROP TABLE IF EXISTS语句来删除已存在的分区表,然后使用CREATE TABLE语句来创建新的分区表,并在其中定义分区规则。 总的来说,MySQL表分区通过将一个大表的数据分散存储到多个物理位置,从而...

    MySQL 5.5.8 分区表性能测试

    压缩包中的“count.xls”文件可能是测试结果的记录,可能包含了在不同场景下对MySQL 5.5.8分区表性能的具体测试数据,例如查询时间、CPU使用率、内存消耗等指标。通过分析这些数据,我们可以深入了解分区表在实际...

    mysql 数据库表分区

    MySQL 数据库表分区是一种优化大数据查询的技术,尤其适用于存储海量数据的应用场景。通过将大表分成更小、更易管理的部分,分区可以提高查询性能,减少数据处理的时间,并且简化数据管理和备份过程。 1. **分区...

    MySQL分区分表方案实践手册

    #### 三、MySQL分区表常用操作示例 接下来通过具体的示例来展示如何创建不同类型的分区表: 1. **创建RANGE分区**: - 基于员工工资创建范围分区:`CREATE TABLE emp (empno VARCHAR(20) NOT NULL, empname ...

    MySQL分区表:万字详解与实践指南

    ### MySQL分区表:万字详解与实践指南 #### 一、引言 在现代数据库管理中,随着数据量的不断增长,如何高效管理和查询数据成为了一个重要的课题。MySQL作为广泛使用的开源关系型数据库管理系统之一,提供了多种强大...

    MySQL 分区

    MySQL分区是一种数据库优化技术,它将大型表分成更小、更易管理的部分,每个部分称为一个分区。这种技术有助于提高查询性能,特别是对于那些需要处理大量数据或执行复杂查询的应用程序。MySQL支持多种分区类型,包括...

    通过实例学习MySQL分区表原理及常用操作

    MySQL分区表是一种数据库管理策略,它将一个大表的数据分散到多个物理存储单元,从而提高数据管理和查询性能。本文将深入探讨分区表的概念、优点、限制以及常见的分区类型。 首先,分区表的基本概念是根据特定的...

    详解MySQL分区表

    【MySQL分区表详解】 分区表是数据库管理中一种高级的数据组织策略,主要目的是为了提高大表的查询效率和数据管理的便利性。在MySQL中,分区表是通过`PARTITION BY`子句来实现的,它允许我们将一个大的表根据特定的...

    mysql实现自动创建与删除分区

    首先,我们需要理解MySQL分区的概念。分区是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区。对于时间序列数据,如日志记录,根据日期或时间进行分区可以显著提高查询速度,因为查询通常针对特定时间...

    MySQL分区表的最佳实践指南

    本篇文章给大家带来的内容是关于MySQL中分区表的介绍及使用场景,有需要的朋友可以参考一下,希望对你有所帮助。 1.分区的目的及分区类型 MySQL在创建表的时候可以通过使用PARTITION BY子句定义每个分区存放的数据...

    MySQL的表分区详解

    然而,值得注意的是,尽管MySQL分区提供了许多优势,但在实际应用中,需要根据具体业务需求和查询模式来决定是否使用分区,以及如何设计分区策略。在创建分区表后,可以通过调整分区方案来优化常见查询的性能。此外...

    (mysql面试题)MySQL中的分区表的概念及其作用及代码展示.txt

    ### MySQL中的分区表概念及其作用 #### 一、分区表定义 在MySQL中,分区表是一种高级技术,它允许用户将一个大型表物理地分割成若干个较小的部分,即分区。这种分割方式不仅可以显著提高查询效率,还可以简化数据...

    mysql使用教程之分区表的使用方法(删除分区表)

    在本文中,我们将探讨MySQL分区表的使用方法,特别是关于如何新增分区、删除分区以及对分区进行合并和拆分。 **分区的好处** 1. **提高查询性能**:通过将数据划分为不同的分区,查询时只需要检查与条件匹配的分区...

    mysql分区文档

    MySQL 分区是数据库管理系统中的一种优化策略,它将大型表的数据分布在不同的物理存储上,以提高查询性能和便于管理大量数据。分区的本质是将一张大表逻辑上分成多个部分,但用户在操作时仍然将其视为单个表。MySQL ...

Global site tag (gtag.js) - Google Analytics