MySQL常用分库分表方案汇总

MySQL常用分库分表方案汇总

什么是分库分表

随着数据量的不断增长,单数据库可能不能满足我们的需求。分库分表即将数据划分到多台机器上存储,其中分库是将数据分布到不同的数据库实例中,分表是将数据分布到相同的数据库实例中的不同表中。

常用分库分表方案

  1. 垂直分库:按照业务模块或数据类型进行拆分,将不同类型的数据分布到不同的数据库上

  2. 水平分库:将同一张表中的数据按照某种方式拆分,将其分布到不同的数据库上

  3. 水平分表:将同一个库中的较大表按照某种规则分成多份存储在不同的表中,比如按照ID值范围、时间分区等方式

  4. 分库分表综合方案:结合以上三种方案,可达到更好的效果。

方案应用场景

  1. MyISAM存储引擎:MyISAM表锁限制导致高并发下的性能问题。此时可以考虑水平分表,把表按照ID范围等进行拆分,提高并发量。

  2. 基于ID的访问:当系统涉及ID查询时,可以考虑水平分表。通过对ID取模分表的方式,将同一张表的数据存储到不同的子表中,减少单表数据量。

实例说明

  1. 垂直分库实例

假设某电商网站既有普通商品又有虚拟商品,为了保证数据的安全性,可以进行垂直分库。将普通商品的数据放入一个库,将虚拟商品的数据放入另一个库,这样即使其中一个库出现问题,也不会影响到另一个库的正常运行。

  1. 水平分表实例

假设某电商网站的订单表一年有百万级别的订单数据,如果不进行水平分表,查询时将会非常缓慢。此时可以按照日期范围进行水平分表,将一年的订单数据分为12份,每个月的订单数据存储在不同的表中,查询时只需要查询对应的表即可,大大提高了查询效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL常用分库分表方案汇总 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • MySQL实例crash的案例详细分析

    MySQL实例crash的案例详细分析 背景介绍 MySQL是一个流行的关系型数据库管理系统,但在使用它的过程中,有时会遇到实例crash的情况。实例crash可能由于多种因素引起,如硬件故障、操作系统崩溃、MySQL bug等。 解决步骤 以下是一些解决MySQL实例crash的步骤: 步骤1:收集日志信息 MySQL服务器维护多种日志,包括错误日志、二进…

    MySQL 2023年5月18日
    00
  • mysql创建存储过程及函数详解

    下面是“mysql创建存储过程及函数详解”的完整攻略。 一、存储过程 1.1 创建存储过程 CREATE PROCEDURE procedure_name() BEGIN # 存储过程体 END; CREATE PROCEDURE: 表示创建存储过程的关键字。 procedure_name: 存储过程的名称,自定义,需符合 MySQL 的命名规则。 BEGI…

    MySQL 2023年5月18日
    00
  • Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

    针对Mysql5.7及以上版本中出现的ONLY_FULL_GROUP_BY报错,我们可以采取以下的解决方法: 方法一:修改系统参数 使用管理员账号登录Mysql服务器 运行命令“show variables like ‘sql_mode’;”,查看当前的sql_mode值,可能会输出类似“ONLY_FULL_GROUP_BY,STRICT_TRANS_TAB…

    MySQL 2023年5月18日
    00
  • mysql不能启动报error2013错误的多种解决方案

    针对Mysql无法启动报Error 2013错误,可能原因主要有两种: Mysql需要的内存过大,超过了系统限制; Mysql的某些数据文件损坏了。 以下是多种解决方案供参考: 方案一:编辑my.ini文件 在Mysql的bin目录下找到my.ini文件并备份一份,以防修改失误; 打开my.ini文件,将其中的max_allowed_packet数值调小,试…

    MySQL 2023年5月18日
    00
  • oracle和mysql几点差异对比

    Oracle与mysql差异性总结 之前有个项目是用oracle数据库进行开发,需要把数据库改成mysql,遇到了一些地方需要注意的,就简单记了下来。 备注: 再把oracle转成mysql的时候,表中字段的类型转换是比较头疼的,比如oracle中的number转成mysql的时候,你要从“FLOAT、DOUBLE、TINYINT、 SMALLINT、MED…

    MySQL 2023年4月13日
    00
  • 深入MYSQL字符数字转换的详解

    深入MySQL字符数字转换的详解 MySQL是一个强大的关系型数据库,支持多种数据类型,包括字符(字符串)和数字类型。在查询和操作数据时,经常需要进行字符和数字之间的转换。本文将详细介绍MySQL字符数字转换的各种方式。 1. 字符转数字 1.1 使用CAST函数 使用MySQL内置的CAST函数可以将一个字符转换成数字类型,例如: SELECT CAST(…

    MySQL 2023年5月19日
    00
  • 白嫖一个月的ES,完成了与MySQL的联动

    前言 《腾讯云 x Elasticsearch三周年》活动来了。文章写之前的思路是:在腾讯云服务器使用docker搭建ES。但是理想很丰满,显示很骨感,在操作过程中一波三折,最后还是含着泪美滋滋地,白嫖了一个月的腾讯云ES服务。 最后就是利用腾讯云的Elasticsearch和Kibana,和我在腾讯云服务器上搭建MySQL进行了一波联动,完成了数据库内部指…

    2023年4月8日
    00
  • 数据库:MySQL(多表的表记录的查询)(三)

    一、外键约束 1、创建外键 — 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 —-主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY KEY auto_increment, name VARCHAR (20), age INT , is_marriged boolean — show c…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部