第一部分:
关系型数据库随时间的流逝慢慢的不能满足现在每秒大量的操作、很多打开的连接、大量的数据和非常高的写比率。为避免这种情况的出现,很多大型站点和SaaS的应用开始使用sharding技术和他们的关系型数据结合。
怎样对应用分片?下面列出的四点很简单:
1、分析表schema得出分片该如何设置
2、开启多个MySQL 实例
3、根据shard配置,导入导出数据
4、更新程序代码来支持shard配置
分析数据:
为了得到一个shard 配置,你需要做下面三步:
1、列出表名和表的大小。 大表时最需要进行分片的,因为很多SQL命令经常在表上执行。
2、列出外键(如果有的话)外键帮助我们了解表之间的关系,这样的表需要很明智的划分,否则你的表将失去一致性
3、分析涉及到的SQL语句 一些SQL语句在shard环境下是难以执行的。所以需要整理一份SQL语句来决定哪些表时不需要shard的。我们还能得出哪些表时访问频率很高,哪些不是。
表划分规则:
在实施shard的时候,需明白并不是所有的表都会被分片。因为sharding会限制SQL的书写(不允许在表之间进行join,表的唯一性,自增字段),你必须强制修改应用代码。通常情况下一些表被shard,另一些表被复制到其他shard上。
确定哪些表时需要被分片的;
对表进行shard的算法像下面描述的一样简单:
1、寻找最大的表,很多表结构中都有几张大表,其余并不是。
2、分析sql语句:
是否表之间使用了join查询&#x