深入浅出mysql分库分表

日期:2024-07-05  作者:小天  来源:www.txunda.com  人气:616

        为什么要分库分表?很多人总是第一反应说因为高并发,其实这个回答是非常不严谨的。 我见过非常多的高并发系统都是单库单服务,照样跑的很稳定。 其实分库分表的核心是**《数据库面临了性能瓶颈》**所以分库分表是只有在数据库的性能处理能力确实满足不了当前情况,且已经很难靠业务进一步提升后,才采取的必要措施,如果性能满足的情况下,非必要绝对不要进行分库分表
        因为分库分表一定会带来额外的复杂性和挑战,带来的成本也是巨大的,增加复杂性:开发者需要处理数据的分片逻辑、路由请求到正确的数据库实例等,这增加了开发和维护的难度,数据一致性问题:在分布式数据库环境中,保持数据的一致性是
天津天迅达科技有限公司
如果您需要相关服务,可以找天津天迅达科技有限公司,我们的业务有Web开发、iOS APPAndroid APP、微信开发、HTML5开发等,天迅达——您身边的App个性化定制专家!
一个挑战。 跨多个数据库实例的事务处理更加复杂,可能导致数据不一致的风险 事务管理困难:传统的数据库事务(ACID属性)在分库分表后变得难以实现。 跨多个数据库的事务需要额外的协调机制,这可能影响性能,查询性能下降:虽然分库分表可以提高单个数据库的性能,但跨多个数据库的查询可能需要更多的协调和数据聚合,这可能导致整体查询性能下降
        数据迁移和同步问题:数据迁移到新的分库分表架构可能非常复杂和耗时。 此外,保持数据在多个数据库之间的同步也是一个持续的挑战增加运维成本:管理多个数据库实例需要更多的运维工作,包括监控、备份、故障恢复等,这会增加运维成本,虽然当前分库分表的技术已经相当成熟了,但是对于这个最终的选择仍然需要慎重,什么场景下才需要分库分表?
        数据量增长导致数据量过大–分表,这个应该很好理解,就是单表的存储的数据量超过一定的阈值,比如可能单表数据1000W条,或者可能占用了3-4G的磁盘,这个时候sql查询的性能会明显的下降,并且这个时候通过优化索引也没有办法很好的解决的情况下,这个时候就可以考虑用分表的方式将数据分散到多个表里面
        这里通常采取的是横向拆分,这里的核心其实就是因为数据量的增多,导致B+树层数的增加,导致IO增加,引起性能下降。 其实单表最多能记录多少条数据而卡这个跟单条数据的大小也是有很大的关系的,具体业务具体分析,记住技术是为业务服务的,业务也倡导技术的发展但是这里在最终确定选择这个方案前,可能还有其他考量,比如确定大量数据的原因,历史数据是否一定需要保存(比如起一个定时任务每天定时清理三个月前的数据)? 是否可以直接删除或者存档es等来缓解单表数据量的压力,如果可以当然也没必要分表
高并发访问–分库
        单库的访问量过高,导致数据库压力过大,也是一个核心问题。 这个可能也跟数据库机器的性能相关,对于机器好的服务来说,可能抗压能力更强,但是如果再高点比如7-8k qps,数据库的稳定性也面临着相当大的压力。 这个时候就不是分表的问题了,这里应该是采用分库的方式,通过增加数据库的方式将访问的压力分散到多个数据库实例中,来提高整体的并发处理能力,一般的分库都是搭配微服务架构,常见的做法是根据业务的归属拆分不同的库,将不同的表拆分到不同的库中以达到专库专用,在降低风险的同时也减低了耦合度
地理分散的业务–分库
        这个比较少见,业务覆盖多个地区或国家,需要在不同地理位置提供服务,然后在地区本地部署服务以减少时延,或者某些地区的数据保护法规要求数据必须存储在本地等等,这里就不做扩充
分库分表的区别
分库(Database Sharding)
        定义: 分库是指将数据分布到多个数据库实例中,每个实例可以是独立的数据库服务器或者集群。 通常用于处理跨多个业务模块的大规模数据,适用于业务模块之间相对独立的场景,特点:每个数据库实例存储的数据是独立的,互不干扰,可以针对不同的业务模块或数据类型进行分库,通常用于解决单一数据库实例无法承载的数据量或并发请求量问题。适用场景:业务模块之间关联性不大,可以独立存储和管理,数据量或访问量非常大,单一数据库无法满足性能需求,需要根据业务模块进行物理隔离,例如出于安全或合规性考虑
分表(Table Partitioning)
        定义: 分表是指将单个表中的数据分割成多个子表,这些子表可以分布在同一个数据库实例中,也可以分布在不同的实例中。特点:子表之间在逻辑上是连续的,但在物理上是独立的.
以上所有设计图和部分文字均来自网络,如有侵权,请call我删除,感谢~
天津天迅达科技有限公司经过多年来对APP小程序、以及网站建设的探索,已经帮助每一个客户快速开发出属于自己的APP小程序网站,是万千企业之选。
标签:天迅达科技 天津APP开发 天津网站建设 网站建设