iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql分区及分表(一)
  • 435
分享到

mysql分区及分表(一)

2024-04-02 19:04:59 435人浏览 安东尼
摘要

                             

                              Mysql分区分表

1.分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件

mysql分表分为垂直切分和水平切分

垂直切分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分:把不常用的字段单独放在一张表; 水平拆分是指数据表行的拆分,把一张的表的数据拆成多张表来存放。

水平拆分原则:通常情况下,我们使用hash、取模等方式来进行表的拆分

通过用ID取模的方法把数据分散到四张表内Id%4= [0,1,2,3]

然后查询,更新,删除也是通过取模的方法来查询

分表的几种方式:

1)mysql集群

它并不是分表,但起到了和分表相同的作用。

2)预先估计会出现大数据量并且访问频繁的表,将其分为若干个表

根据一定的算法(如用hash的方式,也可以用求余(取模)的方式)让用户访问不同的表。

3)利用merge存储引擎来实现分表

如果要把已有的大数据量表分开比较痛苦,最痛苦的事就是改代码,因为程序里面的sql语句已经写好了,用merge存储引擎来实现分表, 这种方法比较适合。

2、分区

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,分区后,表还是一张表,但数据散列到多个位置了。

分区主要有两种形式:

水平分区(Horizontal Partitioning)这种形式分区是对表的行进行分区,所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。

垂直分区(Vertical Partitioning)这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。

创建测试数据库

mysql分区及分表(一) 

创建表

 

mysql分区及分表(一) 

在表里面插入数据,查看表的结构,表的数据

mysql分区及分表(一) 

执行insert*****语句可以以倍数增加数据,查看创建的数据

mysql分区及分表(一) 

进行分表,分为一个主表为back1,从表为back2,back3

mysql分区及分表(一) 

INSERT_METHOD,此参数INSERT_METHOD = NO 表示该表不能做任何写入操作只作为查询使用,INSERT_METHOD = LAST表示插入到最后的一张表里面。INSERT_METHOD = first表示插入到第一张表里面。

把数据分到两个从表中,并且查看子表的数据

mysql分区及分表(一) 

mysql分区及分表(一) 

查看目录数据里有没有创建的表

mysql分区及分表(一) 

分区:

查看是否支持分区

mysql版本如果是5.6之前的使用第一个查看  5.6之后选择第二个

mysql分区及分表(一) 

在第二个查询结果里查看是否支持分区

mysql分区及分表(一) 

active表示支持分区

创建新的测试数据库

mysql分区及分表(一) 

创建数据,创建一个范围的分区表  maxvalue:从最大放入

mysql分区及分表(一) 

插入数据

mysql分区及分表(一) 

查看数据的目录里有没有分区

mysql分区及分表(一) 

从系统库中查看分区表的信息

mysql> select * from infORMation_schema.partitions where table_schema='test2' and table_name='user'\G;

*************************** 1. row ***************************

                TABLE_CATALOG: def

                 TABLE_SCHEMA: test2

                   TABLE_NAME: user

               PARTITION_NAME: p0

            SUBPARTITION_NAME: NULL

   PARTITION_ORDINAL_POSITION: 1

SUBPARTITION_ORDINAL_POSITION: NULL

             PARTITION_METHOD: RANGE

          SUBPARTITION_METHOD: NULL

         PARTITION_EXPRESSION: id

      SUBPARTITION_EXPRESSION: NULL

        PARTITION_DESCRIPTION: 3

                   TABLE_ROWS: 2

               AVG_ROW_LENGTH: 8192

                  DATA_LENGTH: 16384

              MAX_DATA_LENGTH: NULL

                 INDEX_LENGTH: 0

                    DATA_FREE: 0

                  CREATE_TIME: 2017-06-20 17:44:03

                  UPDATE_TIME: 2017-06-20 17:45:04

                   CHECK_TIME: NULL

                     CHECKSUM: NULL

            PARTITION_COMMENT:

                    nodeGROUP: default

              TABLESPACE_NAME: NULL

*************************** 2. row ***************************

                TABLE_CATALOG: def

                 TABLE_SCHEMA: test2

                   TABLE_NAME: user

               PARTITION_NAME: p1

            SUBPARTITION_NAME: NULL

   PARTITION_ORDINAL_POSITION: 2

SUBPARTITION_ORDINAL_POSITION: NULL

             PARTITION_METHOD: RANGE

          SUBPARTITION_METHOD: NULL

         PARTITION_EXPRESSION: id

      SUBPARTITION_EXPRESSION: NULL

        PARTITION_DESCRIPTION: 6

                   TABLE_ROWS: 3

               AVG_ROW_LENGTH: 5461

                  DATA_LENGTH: 16384

              MAX_DATA_LENGTH: NULL

                 INDEX_LENGTH: 0

                    DATA_FREE: 0

                  CREATE_TIME: 2017-06-20 17:44:03

                  UPDATE_TIME: 2017-06-20 17:45:19

                   CHECK_TIME: NULL

                     CHECKSUM: NULL

            PARTITION_COMMENT:

                    NODEGROUP: default

              TABLESPACE_NAME: NULL

*************************** 3. row ***************************

                TABLE_CATALOG: def

                 TABLE_SCHEMA: test2

                   TABLE_NAME: user

               PARTITION_NAME: p2

            SUBPARTITION_NAME: NULL

   PARTITION_ORDINAL_POSITION: 3

SUBPARTITION_ORDINAL_POSITION: NULL

             PARTITION_METHOD: RANGE

          SUBPARTITION_METHOD: NULL

         PARTITION_EXPRESSION: id

      SUBPARTITION_EXPRESSION: NULL

        PARTITION_DESCRIPTION: 9

                   TABLE_ROWS: 3

               AVG_ROW_LENGTH: 5461

                  DATA_LENGTH: 16384

              MAX_DATA_LENGTH: NULL

                 INDEX_LENGTH: 0

                    DATA_FREE: 0

                  CREATE_TIME: 2017-06-20 17:44:03

                  UPDATE_TIME: 2017-06-20 17:45:36

                   CHECK_TIME: NULL

                     CHECKSUM: NULL

            PARTITION_COMMENT:

                    NODEGROUP: default

              TABLESPACE_NAME: NULL

*************************** 4. row ***************************

                TABLE_CATALOG: def

                 TABLE_SCHEMA: test2

                   TABLE_NAME: user

               PARTITION_NAME: p3

            SUBPARTITION_NAME: NULL

   PARTITION_ORDINAL_POSITION: 4

SUBPARTITION_ORDINAL_POSITION: NULL

             PARTITION_METHOD: RANGE

          SUBPARTITION_METHOD: NULL

         PARTITION_EXPRESSION: id

      SUBPARTITION_EXPRESSION: NULL

        PARTITION_DESCRIPTION: 12

                   TABLE_ROWS: 3

               AVG_ROW_LENGTH: 5461

                  DATA_LENGTH: 16384

              MAX_DATA_LENGTH: NULL

                 INDEX_LENGTH: 0

                    DATA_FREE: 0

                  CREATE_TIME: 2017-06-20 17:44:03

                  UPDATE_TIME: 2017-06-20 17:45:54

                   CHECK_TIME: NULL

                     CHECKSUM: NULL

            PARTITION_COMMENT:

                    NODEGROUP: default

              TABLESPACE_NAME: NULL

*************************** 5. row ***************************

                TABLE_CATALOG: def

                 TABLE_SCHEMA: test2

                   TABLE_NAME: user

               PARTITION_NAME: p4

            SUBPARTITION_NAME: NULL

   PARTITION_ORDINAL_POSITION: 5

SUBPARTITION_ORDINAL_POSITION: NULL

             PARTITION_METHOD: RANGE

          SUBPARTITION_METHOD: NULL

         PARTITION_EXPRESSION: id

      SUBPARTITION_EXPRESSION: NULL

        PARTITION_DESCRIPTION: MAXVALUE

                   TABLE_ROWS: 1

               AVG_ROW_LENGTH: 16384

                  DATA_LENGTH: 16384

              MAX_DATA_LENGTH: NULL

                 INDEX_LENGTH: 0

                    DATA_FREE: 0

                  CREATE_TIME: 2017-06-20 17:44:03

                  UPDATE_TIME: 2017-06-20 17:45:57

                   CHECK_TIME: NULL

                     CHECKSUM: NULL

            PARTITION_COMMENT:

                    NODEGROUP: default

              TABLESPACE_NAME: NULL

5 rows in set (0.00 sec)

ERROR:

No query specified

从p0分区中查看数据

mysql分区及分表(一) 

删除p4分区

mysql分区及分表(一) 

添加新增分区

mysql分区及分表(一) 

删除该区的所有记录

alter table 表名 drop partition 区名;

分区合并把p0,p1,p2合并成p01,p02

mysql分区及分表(一) 

查看数据是否合并

mysql分区及分表(一) 

查看目录的数据是否合并成新的分区

mysql分区及分表(一) 


您可能感兴趣的文档:

--结束END--

本文标题: mysql分区及分表(一)

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL分区表的分区原理及优缺点
    这篇文章主要介绍“MySQL分区表的分区原理及优缺点”,在日常操作中,相信很多人在MySQL分区表的分区原理及优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL分...
    99+
    2024-04-02
  • 一文读懂MySQL 表分区
    目录1. 什么是表分区2. 分区的两种方式2.1 水平切分2.2 垂直切分3. 为什么需要表分区4. 分区实践4.1 RANGE 分区4.2 LIST 分区4.3 HASH 分区4....
    99+
    2024-04-02
  • mysql分区表:日期分区
    mysql分区表:日期分区 1.创建分区表2.查看分区3.添加分区4.存储过程:分区删除与创建5.事件定时6.触发器设计:子表每插入一行,总表获得一行7.创建索引8.添加枚举型字段 1.创建分区表 CREATE TAB...
    99+
    2023-08-21
    mysql 数据库
  • MySql的分表分库分片以及分区是怎样的
    今天就跟大家聊聊有关MySql的分表分库分片以及分区是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、前言数据库的数据量达到一定程度之后,为...
    99+
    2024-04-02
  • mysql分表分区的示例分析
    这篇文章给大家介绍mysql分表分区的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗...
    99+
    2024-04-02
  • MySQL的分区(一)
    mysql支持范围分区(range)、列表分区(list)、column分区、哈希分区(hash)、key分区、字段列表分区等 以timestamp类型字段作为分区键进行范围分区,有两种方式: C...
    99+
    2024-04-02
  • MySQL 分区表设计
    MySQL 分区表设计 1、分区表设计方案 当设计 MySQL 分区表时,需要考虑以下几个方面:分区策略、分区字段、分区数量和分区函数。下面是一个详细的示例,展示了如何设计和执行分区表的增删改查操...
    99+
    2023-10-05
    mysql 数据库 分区表 sql
  • MySQL 分区表中分区键为什么必须是主键的一部分
    目录水平拆分 VS 垂直拆分分区表MySQL 8.0 中分区表的变化为什么分区键必须是主键的一部分?本地分区索引 VS 全局索引总结前言: 分区是一种表的设计模式,通俗地讲表分区是将...
    99+
    2024-04-02
  • mysql分区表笔记
    mysql分区表    mysql分区表是一个独立的逻辑表,但是底层由多个物理字表组成。    对分区的请求,都会通过句柄对象转化成对存储引擎接口的调用。所以分区对于...
    99+
    2024-04-02
  • mysql如何给表创建一个分区
    在MySQL中,可以使用CREATE TABLE语句来创建一个分区表。以下是一个示例: CREATE TABLE employee ...
    99+
    2024-04-20
    mysql
  • mysql中如何将一个表改为分区表
    这篇文章主要介绍mysql中如何将一个表改为分区表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql操作将一个表改为分区表:alter table 'table'...
    99+
    2024-04-02
  • 【SQL应知应会】表分区(一)• MySQL版
    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • MySQ...
    99+
    2023-08-20
    sql mysql 数据库 oracle 大数据 数据分析 分区
  • 转:Mysql 分区 分表相关总结
    拆分策略选择 其实拆分很灵活,有的是垂直切分,将一个库拆成两个或多个,将有相关联的表放在一个库里。有的是水平切分将数据量大的表按照一定逻辑进行拆分。个人感觉垂直切分的相对来说缓解了IO的瓶颈,而水...
    99+
    2024-04-02
  • MySql中的分表、分库、分片和分区的分析
    本篇内容介绍了“MySql中的分表、分库、分片和分区的分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&...
    99+
    2024-04-02
  • 关于MySQL分区表的一个性能BUG
    目录二、使用pt-pmap进行栈分析三、关于本列中瓶颈点的分析四、分区表中多次建立template的情况五、关于一个特殊的流程六、问题模拟七、总结一、问题描述 最近遇到一个问题,也...
    99+
    2024-04-02
  • MySQL分区表中分区键必须是主键一部分的原因是什么
    这篇文章主要介绍了MySQL分区表中分区键必须是主键一部分的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL分区表中分区键必须是主键一部分的原因是什么文章都会有所收获,下面我们一起来看看吧。前...
    99+
    2023-06-29
  • mysql 5.7.11查询分区表的一个问题
    mysql 查询一个分区表,当查询条件存在数据时执行效率OK,当不存在数据时执行不完,一直在sending data,当去掉desc就没问题。换个版本貌似也没问题。 mysql> sele...
    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创建表分区详细介绍及示例 1. 基本概念1.1 什么是表分区?1.2 表分区与分表的区别1.3 表分区有什么好处?1.4 分区表的限制因素 2. 如何判断当前MySQL是否支持分区?3.分区类型详解3.1 MySQL支...
    99+
    2023-08-17
    mysql 数据库 java
  • mysql中分表与分区的区别是什么
    这篇文章将为大家详细讲解有关mysql中分表与分区的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一,什么是mysql分表,分区什么是分表,从表面...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作