关于MySQL分库分表--简单想法

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1333460,如需转载请自行联系原作者为提高业务响应时间,避免OS处理过大的文件,修改MySQL表结构应用更顺畅,分库分表是最好的选择;大致的两个思路是:

   1、数据表容量一定,表的个数不限;

   2、数据表的个数一定,容量递增;

   针对表容量一定,有以下思路:称之为step方式:

          按照splitField取整存放:databasesize 代表该数据库总记录行数,tablesize 代表 表的记录数

    例如一个数据表里最多100万条记录,每个数据库最多放10个表。则databaseSize=1000万。tableSize=100.

           假定splitField=N时,则该记录在dbPrefix + (int)Math.ceil((N/(databaseSize*1.0)))数据库

    数据表为 tbPrefix + (int)Math.ceil((N/(tableSize*1.0)))

          则数据库的编号从1开始,db1,db2,....,dbN(N根据splitField的无限增大而动态扩张)

          db1里面的表为tb1,tb2,...,tb10

          db2里面的表为tb11,tb12,...,tb20.

          db10里面的表为tb91,tb92,...,tb100.

          这样已经做好扩展,每个表的容量一定,表的个数不限,比较适合QQ群的方式,也不存在数据冷热问题;

         按照以上的方式,对于像视频评论,或者微博评论来说 就容易出现 访问没有实现负载均衡,易出现太多的热点;

         用取模mode方式还是比较合适的:

        下面讨论下标的个数一定,容量递增;取模是最好的负载均衡,针对热门评论,可以实现很好的负载均衡;

         其实这个大家一看是有一个明显问题的,就是扩容时需要迁移数据的;所以规定表的个数是很关键的;

        splitType=mode时,数据库的数量恒定为databaseSize,每个库的表的数量恒定为tableSize张表,按照splitField取模存放

   假定splitField=N时,则该记录在dbPrefix + (N%databaseSize)数据库

   数据表为 tbPrefix + N%(tableSize*databaseSize)

        例如分拆4个库,每个数据库里四张表。则数据库编号从0开始,db0,db1,db2,db3

        db0里面的数据表为db0,db4,db8,db12

        db1里面的数据表为db1,db5,db9,db13

        db2里面的数据表为db2,db6,db10,db14

        db3里面的数据表为db3,db7,db11,db15

        感谢总监的帮助!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 SQL 关系型数据库
MySQL分库分表
MySQL分库分表
41 0
|
4月前
|
关系型数据库 MySQL Java
MySQL单表膨胀优化之MyCat分库分表
MySQL单表膨胀优化之MyCat分库分表
64 0
|
7月前
|
Java 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(中)
浅谈mysql数据库分库分表那些事
69 0
|
7月前
|
关系型数据库 MySQL Java
浅谈订单重构之MySQL分库分表实战篇
浅谈订单重构之MySQL分库分表实战篇
136 0
|
4月前
|
SQL 关系型数据库 MySQL
②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
56 0
|
3月前
|
SQL 存储 关系型数据库
Mysql系列-5.Mysql分库分表(中)
Mysql系列-5.Mysql分库分表
35 0
|
4月前
|
中间件 关系型数据库 Java
MySQL数据库分库分表方案
MySQL数据库分库分表方案
137 0
MySQL数据库分库分表方案
|
3月前
|
存储 cobar 关系型数据库
MySQL分库分表
MySQL分库分表
49 1
|
7月前
|
SQL 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(下)
浅谈mysql数据库分库分表那些事
66 0
|
7月前
|
SQL 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(上)
浅谈mysql数据库分库分表那些事
72 0