掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点

这篇具有很好参考价值的文章主要介绍了掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


不能⼀上来就说分库分表!

MySQL数据库性能优化思路【面试题】

根据实际情况分析,两个角度思考:不分库分表、分库分表

不分库分表

软优化

  1. 数据库参数调优
  2. 分析慢查询SQL语句,分析执行计划,进行sql改写和程序改写
  3. 优化数据库索引结构
  4. 优化数据表结构优化
  5. 引入NOSQL和程序架构调整

硬优化

提升系统硬件(更快的IO、更多的内存):带宽、CPU、硬盘

分库分表

  1. 根据业务情况而定,选择合适的分库分表策略(没有通用的策略
    外卖、物流、电商领域
  2. 先看只分表是否满⾜业务的需求和未来增长
    数据库分表能够解决单表数据量很大时,数据查询的效率问题
    无法给数据库的并发操作带来效率上的提高,分表的实质还是在⼀个数据库上进行的操作,受数据库IO性能的限制
  3. 如果单分表满足不了需求,再分库分表⼀起

结论

在数据量及访问压力不是特别大的情况,首先考虑缓存、读写分离、索引技术等方案
如果数据量极⼤,且业务持续增长快,再考虑分库分表方案

分库分表能解决的问题

解决数据库本身瓶颈

连接数

连接数过多时,就会出现‘too many connections’的错误,访问量太大或者数据库设置的最大连接数太小的原因
Mysql默认的最大连接数为100可以修改,⽽mysql服务允许的最⼤连接数为16384

数据库分表可以解决单表海量数据的查询性能问题
数据库分库可以解决单台数据库的并发访问压力问题

解决系统本身IO、CPU瓶颈

  1. 磁盘读写IO瓶颈,热点数据太多,尽管使用了数据库本身缓存,但是依旧有⼤量IO,导致sql执行速度慢
  2. 网络IO瓶颈,请求的数据太多,数据传输大,网络带宽不够,链路响应时间变长
  3. CPU瓶颈,尤其在基础数据量大单机复杂SQL计算,SQL语句执行占用CPU使用率高,也有扫描行数大、锁冲突、锁等待等原因

可以通过 show processlistshow full processlist,发现 CPU 使用率比较高的SQL

常见的对于查询时间长,State 列值是 Sending dataCopying to tmp tableCopying to tmp table on diskSorting resultUsing filesort 等都是可能有性能问题SQL,清楚相关影响问题的情况可以kill掉

也存在执行时间短,但是CPU占用率⾼的SQL,通过上面命令查询不到,这个时候最好通过执行计划分析explain进行分析

分库分表带来的问题

问题⼀ 跨节点数据库Join关联查询

数据库切分前,多表关联查询,可以通过sql join进行实现分库分表后,数据可能分布在不同的节点上,sql join带来的问题就⽐较麻烦

问题二 分库操作带来的分布式事务问题

操作内容同时分布在不同库中,不可避免会带来跨库事务问题,即分布式事务

问题三 执行的SQL排序、翻页、函数计算问题

分库后,数据分布再不同的节点上, 跨节点多库进行查询时,会出现limit分页、order by排序等问题
而且当排序字段非分片字段时,更加复杂了,要在不同的分片节点中将数据进行排序并返回,然后将不同分片返回的结果集进行汇总和再次排序(也会带来更多的CPU/IO资
源损耗)

问题四 数据库全局主键重复问题

常规表的id是使用自增id进行实现,分库分表后,由于表中数据同时存在不同数据库中,如果用自增id,则会出现冲突问题

问题五 容量规划,分库分表后二次扩容问题

业务发展快,初次分库分表后,满足不了数据存储,导致需要多次扩容

问题六 分库分表技术选型问题

市场分库分表中间件相对较多,框架各有各的优势与短板,应该如何选择文章来源地址https://www.toymoban.com/news/detail-418469.html

到了这里,关于掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案

    导航: 【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/黑马旅游/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码-CSDN博客 目录 一、分库分表基本概念 二、分库分表的场景和核心思想 三、分库分表具体步骤 3.1 分库分表的原则:能不分就

    2024年02月03日
    浏览(31)
  • 数据库的分库分表

     

    2024年02月14日
    浏览(25)
  • 数据库-分库分表初探

    数据量在百万以里,可以通过Tina集从库、优化索引等提升性能 数据量超过千万,为了减少数据库的负担,提升数据库响应速度,缩短查询时间,需要进行分库分表 推荐:采用垂直分库水平分表 总结:分库要解决的是硬件资源的问题,不管是拆分字段,还是拆分数据,都是要

    2024年01月25日
    浏览(33)
  • 数据库分库分表思路

    一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据

    2024年02月09日
    浏览(30)
  • 浅谈数据库分库分表

    本文主要介绍数据库分库分表相关的基础知识,包括分库分表是什么,为什么要分库分表,以及有哪些解决方案。 数据库分库分表,用英文表示是 \\\"database sharding\\\" or \\\"database partitioning\\\" 。 分库分表是指将一个大型数据库按照一定的规则拆分成多个小型数据库,每个小型数据库

    2024年02月15日
    浏览(34)
  • shell脚本:数据库的分库分表

     

    2024年02月15日
    浏览(31)
  • 千万级并发架构下,如何进行关系型数据库的分库分表

    最近项目上线后由于用户量的剧增,导致数据库的数据量剧增,随之而来的就是海量数据存储的问题,针对最近解决数据的优化过程,谈谈sql语句的优化以及数据库分库分表的方案。 建议大家先阅读一下数据库的优化方案 《数据库大数据量的优化方案》,里面从 1.优化现有数

    2024年02月16日
    浏览(34)
  • 分库分表已成为过去式,使用分布式数据库才是未来

    转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南 当我们使用 Mysql数据库到达一定量级以后,性能就会逐步下降,而解决此类问题,常用的手段就是引入数据库中间件进行分库分表处理,比如使用 Mycat 、 ShadingShpere 、 tddl ,但是这种都是过去式了,现在使用分布

    2024年02月19日
    浏览(32)
  • 性能优化之分库分表

    分库分表包括分库和分表两个维度,在开发过程中,对于每个维度都可以采用两种拆分思路,即垂直拆分和水平拆分。 将同一个库中的一张表(比如SPU表)按某种方式(垂直拆分、水平拆分)拆分成SPU1、SPU2、SPU3、SPU4…等若干张表,如下图所示: 在表数据不变的情况下,对

    2024年02月10日
    浏览(26)
  • 【性能优化】MySql数据库查询优化方案

    了解系统运行效率提升的整体解决思路和方向 学会MySQl中进行数据库查询优化的步骤 学会看慢查询、执行计划、进行性能分析、调优 ​关于这个问题,我们通常首先考虑的是硬件升级,毕竟服务器的内存、CPU、磁盘IO速度 、网络速度等都是制约我们系统快慢的首要因素。硬

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包