返回顶部
首页 > 资讯 > 数据库 >MySQL性能优化及分区、分表的详细步骤
  • 153
分享到

MySQL性能优化及分区、分表的详细步骤

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

本文主要给大家简单讲讲Mysql性能优化及分区、分表的详细步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql性能优化及分区、分表的详细步骤这篇文章

本文主要给大家简单讲讲Mysql性能优化及分区、分表的详细步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql性能优化及分区、分表的详细步骤这篇文章可以给大家带来一些实际帮助。

一、 分表

  1. 分表简介

  • 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表。

  • 如果正在使用的表需要进行分区,就需要同时修改app的规则,使mysql可以得知用户查询的数据在哪。

  2. 分表类型

 分为垂直切分和水平切分

  • 垂直切分:将某些列分到另一个表

  • 水平切分:将某些行分到另一个表

  3. 分表的方式

   1) Mysql集群

  • 它并不是分表,但起到了和分表相同的作用。集群可分担数据库的操作次数,将任务分担到多台数据库上。集群可以读写分离,减少读写压力。从而提升数据库性能。

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

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

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

  • 使用merge存储引擎分表,就不用再修改app规则

  • merge分表,分为主表和子表,主表类似于一个壳子,逻辑上封装了子表,实际上数据都是存储在子表中的。

  4. merge存储引擎分表

     MySQL性能优化及分区、分表的详细步骤

     MySQL性能优化及分区、分表的详细步骤


     创建子表

     MySQL性能优化及分区、分表的详细步骤

     创建主表

     MySQL性能优化及分区、分表的详细步骤

    开始分表

     通过ID取模的方式过滤出分别要插入到子表的数据

     MySQL性能优化及分区、分表的详细步骤

     验证

     MySQL性能优化及分区、分表的详细步骤

     子表2只有奇数数据,而主表都会有

     每个子表都会有自己独立的表文件

     MySQL性能优化及分区、分表的详细步骤

二、 分区

  1. 什么是分区

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

  2. 分区形式

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

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

   3. 查看mysql是否支持分区技术

     MySQL性能优化及分区、分表的详细步骤

     本例是5.7

     MySQL性能优化及分区、分表的详细步骤

     首先创建表并为其创建分区,并插入数据,以作测试

     MySQL性能优化及分区、分表的详细步骤

     下图是插入的数据

     MySQL性能优化及分区、分表的详细步骤

     去查看物理文件

     MySQL性能优化及分区、分表的详细步骤

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

     MySQL性能优化及分区、分表的详细步骤

     从某个分区中查询数据

     MySQL性能优化及分区、分表的详细步骤

     添加一个分区

     MySQL性能优化及分区、分表的详细步骤

     合并分区

     MySQL性能优化及分区、分表的详细步骤

  4. 对比创建分区和没创建分区的性能

     首先创建一个表tab1不做分区

     MySQL性能优化及分区、分表的详细步骤

     创建表tab2按日期的年份拆分

     MySQL性能优化及分区、分表的详细步骤

     创建一个存储过程,循环向表中存入足够大的数据,用于测试

     MySQL性能优化及分区、分表的详细步骤

     执行存储过程

     MySQL性能优化及分区、分表的详细步骤

     将tab1的数据插入到tab2中

     MySQL性能优化及分区、分表的详细步骤

     执行查询语句测试性能,执行时间短的性能就好

     MySQL性能优化及分区、分表的详细步骤

     通过explain语句分析执行情况

     MySQL性能优化及分区、分表的详细步骤

     未分区的表

     MySQL性能优化及分区、分表的详细步骤

     已分区的表

     MySQL性能优化及分区、分表的详细步骤

    为两个表创建索引

     MySQL性能优化及分区、分表的详细步骤

     再次进行测试

     MySQL性能优化及分区、分表的详细步骤

三、 Mysql的分区类型

   在创建表的时候使用:partition by  类型(字段),定义分区类型及其使用的字段

  1. Range

l  基于一个连续区间的列值,把多行分配给分区,区间不能重叠

l  使用values  less  than操作符定义分区

l  一般最后要创建一个maxvalue分区,用于存放和之前区间不匹配的值

     MySQL性能优化及分区、分表的详细步骤

  2. List分区

l  基于列值匹配一个离散值(不连续的值)集合中的某个值来进行分区

l  使用:Values  in,操作符定义分区

l  List没有range中类似于maxvalue的定义符存在,所以要匹配的值都必须手动创建

 MySQL性能优化及分区、分表的详细步骤

  3. Hash分区

l对表的一个或多个列的hashkey进行计算,最后通过这个Hash码不同数值对应的数据区域进行自动分区,但需要指定分区数量。

lList和range必须指定一个给定的列值或列值集合应该保存在哪个分区中,而在HASH分区中,MYSQL自动完成这些工作。

lHash分区的目的是将数据均匀的分布到预先定义的各个分区中

 MySQL性能优化及分区、分表的详细步骤

 

  4. Key分区

l与hash相似,不同在于hash分区是用户自定义函数进行分区,而key分区使用mysql数据库提供的函数进行分区,不同的存储引擎,使用的函数可能不同

     MySQL性能优化及分区、分表的详细步骤

  5. Columns分区

l从mysql5.5开始支持,可以视为range和list分区的进化,columns分区可以直接使用非×××数据进行分区

lCOLUMNS分区支持以下数据类型:

  所有×××,如INTSMALLINT TINYINT BIGINT。FLOAT和DECIMAL则不支持。

  日期类型,如DATE和DATETIME。其余日期类型不支持。

  字符串类型,如CHAR、VARCHAR、BINARY和VARBINARY。BLOB和TEXT类型不支持。

  COLUMNS可以使用多个列进行分区。

  6. Mysql分区是可以指定存储位置的,通过查看帮助,我们可以得到更多关于创建表的参数

     MySQL性能优化及分区、分表的详细步骤

     MySQL性能优化及分区、分表的详细步骤

例:创建分区表,并且将数据文件存放到其他位置,innodb存储引擎,数据文件和索引文件是在一起的,所以只需要指定数据文件的位置

    MySQL性能优化及分区、分表的详细步骤

    MySQL性能优化及分区、分表的详细步骤

  7. 其实hash和key也是根据取余进行分区运算

    比如分成4个分区

    MySQL性能优化及分区、分表的详细步骤

四、 Mysql分区与分表的区别

  1. 实现方式

  • 分表是真的将一个表分成多个小表

  • 分区只是将数据分区,而分区后的表还是一张表,数据处理还是由自己完成

  2. 数据处理

  • 分表后,数据都是存放在分表里,总表只是一个外壳,存取数据发生在一个一个的分表里面。

  • 分区,不存在分表的概念,分区只不过把存放数据的文件分成了许多小块,分区后的表呢,还是一张表,数据处理还是由自己来完成。

  3. 提高性能

  • 分表后,单表的并发能力提高了,磁盘I/O性能也提高了,重点是存取数据时,如何提高mysql并发能力。

  • 分区,主要是想突破磁盘I/O瓶颈,想提高磁盘的读写能力,来增加mysql性能。

  4. 实现难易

  • 分表除了用marge存储引擎分表对程序代码是透明的外,其他的大部分都不是

  • 分区实现是比较简单的,建立分区表,根建平常的表没什么区别,并且对开代码端来说是透明的。

五、 分区和分表的联系

  • 都能提高mysql的性高,在高并发状态下都有一个良好的表现

  • 分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式,访问量不大,但是表数据很多的表,我们可以采取分区的方式等

  • 分表技术是比较麻烦的,需要手动去创建子表,app服务端读写时候需要计算子表名。采用merge好一些,但也要创建子表和配置子表间的uNIOn关系。

  • 表分区相对于分表,操作方便,不需要创建子表。

MySQL性能优化及分区、分表的详细步骤就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的数据库。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL性能优化及分区、分表的详细步骤

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

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

猜你喜欢
  • MySQL性能优化及分区、分表的详细步骤
    本文主要给大家简单讲讲MySQL性能优化及分区、分表的详细步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL性能优化及分区、分表的详细步骤这篇文章...
    99+
    2024-04-02
  • zabbix表分区详细步骤
    1、连接数据库     mysql -h <database_ip/fqdn> -u<user> -p     Typ...
    99+
    2024-04-02
  • MySQL Limit性能优化及分页数据性能优化详解
    MySQL Limit可以分段查询数据库数据,主要应用在分页上。虽然现在写的网站数据都是千条级别,一些小的的优化起的作用不大,但是开发就要做到极致,追求完美性能。下面记录一些limit性能优化方法。 Lim...
    99+
    2024-04-02
  • SQL Server 数据库分区分表(水平分表)详细步骤
    目录1、 需求说明2、实现思路2.1分区原理2.2 水平分区优点2.3 实现思路3、实现步骤 3.1代码创建分区表3.1.1  创建...
    99+
    2024-04-02
  • Mysql参数优化的详细步骤
    本篇文章给大家主要讲的是关于Mysql参数优化的详细步骤的内容,感兴趣的话就一起来看看这篇文章吧,相信看完Mysql参数优化的详细步骤对大家多少有点参考价值吧。连接优化back_log=500 (默认50)...
    99+
    2024-04-02
  • SQLSERVER使用表分区优化性能
    目录1.简介2.表分区2.1分区范围2.2分区键2.3索引分区3.创建表分区3.1创建文件组3.2指定文件组存放路径3.3创建分区函数3.4创建分区方案3.5创建分区表3.6创建分区...
    99+
    2024-04-02
  • MySQL分区表的分区原理及优缺点
    这篇文章主要介绍“MySQL分区表的分区原理及优缺点”,在日常操作中,相信很多人在MySQL分区表的分区原理及优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL分...
    99+
    2024-04-02
  • mysql建表的详细步骤
    本文主要给大家简单讲讲mysql建表的详细步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql建表的详细步骤这篇文章可以给大家带来一些实际帮助。1....
    99+
    2024-04-02
  • 最新WindowsServer2012R2磁盘分区的详细步骤
    目录一、问题——只有一个磁盘二、新建磁盘分区1.这台电脑——右键——管理2.工具——计...
    99+
    2024-04-02
  • win7怎么分区详细步骤教程
    win7怎么分区详细步骤教程?无论是新电脑硬盘装系统,还是格盘重装系统,安装之前需要给硬盘分区,其中一个为系统盘,其余为普通磁盘分区,所以学会win7分区就显得格外重要了,很多用户在安装win7系统时不知要如何分区,那win7怎么分区呢?今...
    99+
    2023-07-18
  • mysql创建表分区详细介绍及示例
    mysql创建表分区详细介绍及示例 1. 基本概念1.1 什么是表分区?1.2 表分区与分表的区别1.3 表分区有什么好处?1.4 分区表的限制因素 2. 如何判断当前MySQL是否支持分区?3.分区类型详解3.1 MySQL支...
    99+
    2023-08-17
    mysql 数据库 java
  • Oracle 学习之 性能优化(十二) 分区表
    一、分区概念   Oracle允许将表、索引、索引组织表细分成更小的片,每个片我们称之为分区。分区有其自己的名字和存储参数。  如下图:每行数据只能属于一个分区,分区键决定数据...
    99+
    2024-04-02
  • Mysql临时表及分区表区别详解
    临时表与内存表 内存表,指的是使用Memory引擎的表,建表语法是create table … engine=memory。这种 表的数据都保存在内存里,系统重启的时候会被清空,但是表结构还在。除...
    99+
    2022-05-26
    Mysql 临时表 分区表
  • mysql表分区技术详细介绍
    1、概述     数据库单表到达一定量后,性能会有衰减,像mysql\sql server等犹为明显,所以需要把这些数据进行分区处理。同时有时候可能出现数据剥离什么的,分区...
    99+
    2024-04-02
  • PHP实现MySQL读写分离的详细步骤
    在当今的互联网应用开发中,数据访问速度和稳定性是至关重要的。为了提高数据库性能,许多开发者选择实现MySQL的读写分离。PHP作为一种流行的后端编程语言,能够与MySQL数据库进行高效...
    99+
    2024-03-04
    mysql php 分离 数据访问
  • MySQL性能优化的案例分析
    这篇文章主要介绍MySQL性能优化的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言MySQL索引底层数据结构与算法MySQL性能优化原理-前篇实践(1)--MySQL性能...
    99+
    2024-04-02
  • MySQL优化 - 性能分析与查询优化
    MySQL优化 - 性能分析与查询优化    优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根...
    99+
    2024-04-02
  • MySQL性能优化技巧分享
    MySQL性能优化 在互联网公司MySQL的使用非常广泛,大家经常会有MySQL性能优化方面的需求。整理了一些在MySQL优化方面的实用技巧。 Schema与数据类型优化 整数通常是标识列最好的选择,因为它...
    99+
    2022-05-20
    MySQL 性能优化 MySQL 优化
  • MySQL limit性能分析与优化
    一、结论 语法结构: limit offset, rows 结论:rows 相同条件下,offset 值越大,limit 语句性能越差 二、测试 执行测试: 5750000 条数据 sql 1 执行时间:...
    99+
    2024-04-02
  • MySQL Explain 详解(优化MySQL性能第一步)
    MySQL Explain 详解 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句。分析你的查询预付或表结构的性能瓶颈。 查询结果返回字段分析 ...
    99+
    2014-08-20
    MySQL Explain 详解(优化MySQL性能第一步)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作