内容简介:常见的MySQL数据库扩展方式有:以上三种方案的难度依次递增,对未来的预测和预留能力要求也是依次递增。现在出现了一些新的分布式方案,但是我还没有试过,所以没有写上去,例如
常见的 MySQL 数据库扩展方式有:
- 读写分离:这种情况适用于读远大于写的情况,读越多,就可以分出越多的从库。从库是只读的,主则负责所有的写入。主和从之间 通过同步binlog完成数据同步。
-
分表:
- 当一张表的数据量非常大时,我们可以采取对时间,id等进行分表,对表进行瘦身,从而达到提高读取/写入速度的目的,原理 是因为,表更小了,系统维护成本更低,此外对索引的维护成本也会随之降低,但是缺点是很明显的,即当需要对所有数据进行查询时, 查询的逻辑会变得复杂。这种方案适用于并不需要所有数据的情况,例如用户的消息,只需要保存最近三个月的数据,则可以把三个月 以前的数据从当前表中抽走到其他备份表中。
- 此外分表还有一种方式,例如用户可能有很多信息,但是常用的信息却只有那么多,我们可以把常用的信息放在用户表,其他的信息 放在其他表,通过关系把两个表关联起来,这样能加快查询的原因是可以减少很多不必要的数据查询,尤其是使用ORM的情况下,ORM 一般都会把所有的数据都拿出来以便进行映射,通过这种方式可以减少数据传输量和数据库维护表的成本。
-
分库:设想,当一个数据库的写入不堪重负时,我们该要如何处理?答案便是将一部分数据搬到另外一个数据库去,这种方案带来的好处 是显而易见的:把对其中一部分的数据的读和写都带走了,可以大大的降低数据库的负载,但是缺点便是,增加了应用程序的逻辑复杂度, 原本只要在一个数据库中连表就可以查出来的数据,现在要在不同的数据库中查找。
以上三种方案的难度依次递增,对未来的预测和预留能力要求也是依次递增。
现在出现了一些新的分布式方案,但是我还没有试过,所以没有写上去,例如 MySQL Cluster
和 TiDB
。
但是一般来说,合理的安排数据库的关系,合理的安排索引,合理的安排主从,在业务还没有达到那个量级之前,根本就不需要使用 更加高级的方案,目前我使用的一张表,合理的安排索引和表的关系,已经达到1.6亿行,读写分离1带3,仍然能在10ms内完成查找。
以上所述就是小编给大家介绍的《Web开发系列(十一):数据库扩展》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Vitess 10 发布,MySQL 数据库集群水平扩展系统
- Vitess 4.0 发布,MySQL 数据库集群水平扩展系统
- GridDB 社区版本 4.0 发布,高度可扩展 NoSQL 数据库
- 利用 Apache Spark SQL 和 DataFrames 扩展关系数据库
- 在 Kubernetes 上部署一个可扩展的 Apache Cassandra 数据库
- 华创资本领投1500万美元B轮融资,看PingCAP如何用TiDB解决分布式数据库水平扩展难题?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Effective Objective-C 2.0
Matt Galloway / 爱飞翔 / 机械工业出版社 / 2014-1 / 69.00元
《effective objective-c 2.0:编写高质量ios与os x代码的52个有效方法》是世界级c++开发大师scott meyers亲自担当顾问编辑的“effective software development series”系列丛书中的新作,amazon全五星评价。从语法、接口与api设计、内存管理、框架等7大方面总结和探讨了objective-c编程中52个鲜为人知和容易被忽......一起来看看 《Effective Objective-C 2.0》 这本书的介绍吧!