广告
返回顶部
首页 > 资讯 > 数据库 >如何进行MySQL Sharding可扩展设计
  • 951
分享到

如何进行MySQL Sharding可扩展设计

2024-04-02 19:04:59 951人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关如何进行Mysql Sharding可扩展设计,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.背景  我们知道,当数据库中的数

今天就跟大家聊聊有关如何进行Mysql Sharding可扩展设计,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一.背景
  我们知道,当数据库中的数据量越来越大时,不论是读还是写,压力都会变得越来越大。采用mysql Replication多master多slave方案,在上层做负载均衡,虽然能够一定程度上缓解压力。但是当一张表中的数据变得非常庞大时,压力还是 非常大的。试想,如果一张表中的数据量达到了千万甚至上亿级别的时候,不管是建索引优化缓存等,都会面临巨大的性能压力。
  二.定义
  数据sharding,也称作数据切分,或分区。是指通过某种条件,把同一个数据库中的数据分散到多个数据库或多台机器上,以减小单台机器压力。
  三.分类
  数据分区根据切分规则,可以分为两类:
  (1)垂直分区:以表为单位,把不同的表分散到不同的数据库或主机上。特点是规则简单,实施方便,适合业务之间耦合度低的系统。
  (2)水平分区:以行为单位,将同一个表中的数据按照某种条件拆分到不同的数据库或主机上。特点是相对复杂,适合单表巨大的系统。
  在实际情况中,有的时候把垂直分区和水平分区结合使用。
  四.示意图
  下面通过几张图来给出上面三种分区方式的直观效果。
  (1)垂直分区
  

  (2)水平分区
  

  (3)联合分区
  

  五.注意事项
  下面我们所说的分区,主要是指水平分区。
  (1)在实施分区前,我们可以查看所安装版本的mysql是否支持分区:

 mysql> show variables like "%partition%";

  如果支持则会显示:
        +-------------------+-------+
        | Variable_name     | Value |
        +-------------------+-------+
        | have_partitioning | YES   |
        +-------------------+-------+
  (2)分区适用于一个表的所有数据和索引;不能只对数据分区而不对索引分区,反之亦然,同时也不能只对表的一部分进行分区。
  (3)分区类型:
  RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。
  LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
  HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。
  KEY 分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
  无论使用何种类型的分区,分区总是在创建时就自动的顺序编号,且从0开始记录。当有一新行插入到一个分区表中时,就是使用这些分区编号来识别正确的分区。
  (4) MySQL提供了许多修改分区表的方式。添加、删除、重新定义、合并或拆分已经存在的分区是可能的。所有这些操作都可以通过使用ALTER TABLE 命令的分区扩展来实现.
  (5) 可以对已经存在的表进行分区,直接使用alter table命令即可。

看完上述内容,你们对如何进行MySQL Sharding可扩展设计有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: 如何进行MySQL Sharding可扩展设计

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

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

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

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作