MySQL常用分库分表方案汇总
什么是分库分表
随着数据量的不断增长,单数据库可能不能满足我们的需求。分库分表即将数据划分到多台机器上存储,其中分库是将数据分布到不同的数据库实例中,分表是将数据分布到相同的数据库实例中的不同表中。
常用分库分表方案
-
垂直分库:按照业务模块或数据类型进行拆分,将不同类型的数据分布到不同的数据库上
-
水平分库:将同一张表中的数据按照某种方式拆分,将其分布到不同的数据库上
-
水平分表:将同一个库中的较大表按照某种规则分成多份存储在不同的表中,比如按照ID值范围、时间分区等方式
-
分库分表综合方案:结合以上三种方案,可达到更好的效果。
方案应用场景
-
MyISAM存储引擎:MyISAM表锁限制导致高并发下的性能问题。此时可以考虑水平分表,把表按照ID范围等进行拆分,提高并发量。
-
基于ID的访问:当系统涉及ID查询时,可以考虑水平分表。通过对ID取模分表的方式,将同一张表的数据存储到不同的子表中,减少单表数据量。
实例说明
- 垂直分库实例
假设某电商网站既有普通商品又有虚拟商品,为了保证数据的安全性,可以进行垂直分库。将普通商品的数据放入一个库,将虚拟商品的数据放入另一个库,这样即使其中一个库出现问题,也不会影响到另一个库的正常运行。
- 水平分表实例
假设某电商网站的订单表一年有百万级别的订单数据,如果不进行水平分表,查询时将会非常缓慢。此时可以按照日期范围进行水平分表,将一年的订单数据分为12份,每个月的订单数据存储在不同的表中,查询时只需要查询对应的表即可,大大提高了查询效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL常用分库分表方案汇总 - Python技术站