黑龙江省网站备案,网站建设目的与作用,做内容网站好累,海南短视频搜索seo哪家实惠文章目录 为什么要分库分表一、分库分表二、不停机分库分表数据迁移 为什么要分库分表
一般的机器#xff08;4核16G#xff09;#xff0c;单库的MySQL并发#xff08;QPSTPS#xff09;超过了2k#xff0c;系统基本就完蛋了。最好是并发量控制在1k左右。这里就引出一个… 文章目录 为什么要分库分表一、分库分表二、不停机分库分表数据迁移 为什么要分库分表
一般的机器4核16G单库的MySQL并发QPSTPS超过了2k系统基本就完蛋了。最好是并发量控制在1k左右。这里就引出一个问题为什么要分库分表 分库分表目的解决高并发和数据量大的问题。 高并发情况下会造成IO读写频繁自然就会造成读写缓慢甚至是宕机。一般单库不要超过2k并发数据量大的问题。主要由于底层索引实现导致MySQL的索引实现为BTREE数据量其他会导致索引树十分庞大造成查询缓慢。第二innodb的最大存储限制64TB
要解决上述问题。最常见做法就是分库分表。 分库分表的目的是将一个表拆成N个表就是让每个表的数据量控制在一定范围内保证SQL的性能。 一个表数据建议不要超过500W。 一、分库分表 垂直拆分 就是把一个有很多字段的表给拆分成多个表或者是多个库上去。每个库表的结构都不一样每个库表都包含部分字段。一般来说可以根据业务维度进行拆分如订单表可以拆分为订单、订单地址、订单商品、订单扩展等表又比如做低代码平台的时候各种表单需要保存。可以把表单内容拆分为一个大字断表也可以根据数据冷热程度拆分20%的热点字段拆到一个表80%的冷字段拆到另外一个表,但都要建立1:1或者1:N的关系。 水平分表 统一个表的数据拆到不同的库不同的表中。可以根据时间、地区、或某个业务键维度也可以通过hash进行拆分最后通过路由访问到具体的数据。拆分后的每个表结构保持一致。
二、不停机分库分表数据迁移
一般数据库的拆分也是有一个过程的一开始是单表后面慢慢拆成多表。那么我们就看下如何平滑的从MySQL单表过度到MySQL的分库分表架构。
利用mysqlcanal做增量数据同步利用分库分表中间件将数据路由到对应的新表中利用分库分表中间件全量数据导入到对应的新表中通过单表数据和分库分表数据两两比较更新不匹配的数据到新表中数据稳定后将单表的配置切换到分库分表配置上