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存储引擎?

    MySQL是一个开源的关系型数据库管理系统,拥有多种存储引擎(Storage Engine),不同的引擎具有不同的特点和性能表现。可通过修改数据表的存储引擎来优化数据库的性能。 存储引擎介绍 MySQL支持的存储引擎较多,具体如下: 1 InnoDB:支持ACID事务,并发性高,行级锁定、MVCC、自适应哈希索引、为外键提供支持。 2 MyISAM:不支持事…

    MySQL 2023年3月9日
    00
  • WinXP下的Apache-PHP-MySQL安装和配置

    WAMP=WIN+APACHE+MYSQL+PHP 在配置的时候我用了摆动工坊的方法,下面就我自己的实际情况根据自己的实践做相应修改,这是我经历了一次复制php.ini和相关dll文件成功之后然后再对这种方法进行测试的,方法是这一个较为简单,而且可移植性强,据说可以不用重装升级的…. 本文包含了在WinXP上基于Apache 2.2.13的PHP 5.3…

    MySQL 2023年4月13日
    00
  • mysql总结

    MyiSAM和innodb MyiSAM:非聚集索引、B+树、叶子结点保存data地址; innodb:聚集索引、B+树、聚集索引中叶子结点保存完整data,innodb非聚集索引需要两遍索引,innoDB要求表必须有主键; innodb为什么要用自增id作为主键: 自增主键:顺序添加,页写满开辟新的页; 非自增主键(学号等):主键值随机,有碎片、不够紧凑的…

    MySQL 2023年4月17日
    00
  • MYSQL之on和where的区别是什么

    这篇“MYSQL之on和where的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MYSQL之on和where的区别是什么”文章吧。 on和where的区别 多表查询语法结构: table_reference {[INNER] JOI…

    MySQL 2023年4月10日
    00
  • MySql中的连接查询问题怎么解决

    本文小编为大家详细介绍“MySql中的连接查询问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySql中的连接查询问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 连接查询 当进行多表连接查询时 需要指定字段所属的表 , 可以提高查询效率 , 如果不指定字段所属的表 , 数据库会从每个表中都找一下该字段 e…

    MySQL 2023年4月11日
    00
  • 2018.09.17MySql报错1062

    一、 在执行sql语句时出现了一个错误:1062:Duplicate entry ‘0’ for key ‘PRIMARY’ 二、报错原因:Navicat中,本来没有主键id,后来要加入主键id,但是原来的表中已经有了一个主键,创建完id后,保存不了,报这个错:Duplicate entry ‘0’ for key ‘PRIMARY’; 三、解决方法:在Na…

    MySQL 2023年4月13日
    00
  • MySQL聚合查询方法怎么使用

    本篇内容介绍了“MySQL聚合查询方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1、前言 前面的内容已经把基础的增删改查介绍的差不多了,也介绍了表的相关约束, 从本期开始往后的内容,就更加复杂了,更多的是一些复杂的查询 SQL. 2、插入查询结果…

    MySQL 2023年4月10日
    00
  • MySQL控制用户输错密码尝试次数

    MySQL在安全性方面有一个有用的特性——控制用户输错密码尝试次数。这个特性可以防止暴力破解密码攻击,限制在一定时间内允许用户的登录尝试次数,错过限制次数后,MySQL会禁止用户登录一段时间。这里提供了一些步骤来实现这个特性。 1. 创建一个新的用户 首先,创建一个新用户专门用于控制限制和监控登录尝试次数。以下是创建用户的SQL脚本,你可以将“new_use…

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