如何处理数据库瓶颈问题

亿级数据量系统数据库性能优化方案
一、数据库性能瓶颈主要原因
1、数据库连接

MySQL数据库默认连接为100,我们可以通过配置initialSize、minIdle、maxActive等进行调优,但由于硬件资源的限制,数据库连接不可能无限制的增加,对大型单体应用单实例数据库可能会出现最大连接数不能满足实际需求的情况,这时就会系统业务阻塞。

2、表数据量大(空间存储问题)

普遍观点认为单表数据量超过1000万条时就是出现数据库读取性能瓶颈。从索引角度分析,如果索引未被命中,数据库系统就会全表扫描,数据量越大,扫描全表的时间就会越长;即使索引被命中了,由于B+TREE索引是存放在硬盘上的,数据量越大B+TREE层次越深,IO次数也就越多。

3、硬件资源限制

硬件资源直接影响QPS每秒查询数/TPS每秒事务数。

二、数据性能优化方案
常见的数据性能优化方案:SQL优化、缓存、创建索引、读写分离、分库分表等。

解决大数据量性能优化,真正有效方案是采用分布式数据存储,即上面所述读写分离和分库分表。

1、读写分离

读写分离基于主从复制,采用区别读、写多数据源方式进行数据的存储和加载。数据的存储(增删改)指定写数据源,数据的读取查询指定读数据源。

在这里插入图片描述

通过读写分离复制与master相同的数据源(一主多从),多数据源可以部署到不同主机上,从而可以解决数据里连接瓶颈和硬件资源限制问题。

2、分库分表

对数据的库表进行拆分,用分片的方式对数据进行管理。
在这里插入图片描述

数据库垂直拆分将单一库拆分多个领域数据库,使各领域数据库移植性更好,功能划分更清晰。同时也能解决数据库连接、硬件资源限制问题。任何一种方案在解决问题的同时,也会带来新的问题,分库分表也不例外,比如关联查询变得复杂、分布式事务问题等。

水平拆分是将大表按照一定规则拆分成若干个小表,比如将3000万数据量的一张单表user拆分为3个小表user01、user02、user03。主要解决了单表数据量大问题,从而也就解决了存储空间带来的数据库性能瓶颈。
在这里插入图片描述

下一篇文章将重点讲解MyCat及其在分库分表方面的应用,更详细介绍分库分表实现方案。
————————————————

转自参考链接:https://blog.csdn.net/wangpf2011/article/details/100116677

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
openGauss是一款开源的关系型数据库管理系统,它具有多核高性能、全链路安全性、智能运维等企业级特性。 openGauss内核早期源自开源数据库PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。作为一个开源数据库,期望与广泛的开发者共同构建一个多元化技术的开源数据库社区。 软件特点: 1、高性能 openGauss突破了多核CPU的瓶颈,实现两路鲲鹏128核150万tpmC,内存优化表(MOT)引擎达350万tpmC。 2、数据分区 内部线程共享的关键数据结构进行数据分区,减少加锁访问冲突。比如CLOG就采用分区优化,解决ClogControlLock锁瓶颈。 3、NUMA化内核数据结构 关键数据结构NUMA化分配,减少跨CPU访问。比如全局PGPROC数组按照NUMA Node的数目分为多份,分别在对应NUMA Node上申请内存。解决ProcArrayLock锁瓶颈。 4、绑核优化 把网络中断绑核和后台业务线程绑核区分开,避免运行线程在核间迁移造成的性能不稳定。 5、ARM指令优化 结合ARM平台的原子操作lse进行优化,实现关键互斥变量原子高效操作。 6、SQL BY PASS 通过SQL BY PASS优化SQL执行流程,简化CPU执行开销。 7、高可靠 正常业务负载情况下,RTO小于10秒,降低节点故障导致的业务不可用时间。 8、并行恢复 主机日志传输到备机时,备机日志落盘的同时,发送给重做恢复分发线程,分发线程根据日志类型和日志操作的数据页发给多个并行恢复线程进行日志重做,保证备机的重做速度跟上主机日志的产生速度。这样备机实时处于ready状态,从而实现瞬间故障切换。 9、MOT引擎(Beta发布) 内存优化表(MOT)存储引擎是一个专为多核大内存优化的存储引擎,具有极高的联机事务处理(OLTP)性能和资源利用率。MOT的数据和索引完全存储在内存中,通过NUMA感知执行,算法消除闩锁争用以及查询JIT本地编译,提供低时延数据访问及高效事务执行。更多请参考MOT引擎文档。 10、安全 openGauss支持账号管理,账号认证,口令复杂度检查,账号锁定,权限管理和校验,传输加密,操作 审计等全方位的数据库安全能力,保护业务满足安全要求。 11、易运维 openGauss将AI算法集成到数据库中,减少数据库维护的负担。 12、SQL预测 openGauss根据收集的历史性能数据进行编码和基于深度学习的训练及预测,支持SQL执行时间预测。 13、SQL诊断器 openGauss支持SQL执行语句的诊断器,提前发现慢查询。 14、参数自动调整 openGauss通过机器学习方法自动调整数据库参数,提高调参效率,降低正确调参成本。
MyCAT是一种开源软件,是面向企业的“大型数据库集群”。MyCAT是一个强制数据库,可以替代MySQL,并支持事务和ACID。作为企业数据库的MySQL群集,MyCAT可以代替昂贵的Oracle群集。MyCAT还是一种新型的数据库,它看起来像是与内存缓存技术,NoSQL技术和HDFS大数据集成的SQL Server。作为一种新型的现代企业数据库产品,MyCAT与传统的数据库和新的分布式数据仓库相结合。总之,MyCAT是一种全新的数据库中间件。 Mycat的目标是以低成本将当前的独立数据库和应用程序平稳地迁移到云端,并解决由于数据存储和业务规模的快速增长而引起的瓶颈问题。 特性: 支持SQL92标准 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server、mongodb、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。 优点: 1、基于阿里巴巴的开源项目Cobar,其稳定性,可靠性,出色的体系结构和性能以及许多成熟的用例使MyCAT有了良好的开端。站在巨人的肩膀上,MyCAT感到足够自信,可以走得更远。 2、MyCAT的基因整合了最好的开源项目和创新思想,使MyCAT领先于其他当前类似的开源项目,甚至超越了某些商业产品。 3、MyCAT支持强大的技术团队,该团队的参与者经验超过5年,其中包括一些高级软件工程师,架构师,DBA等。优秀的技术团队可确保Mycat的产品质量。 4、MyCAT不依赖任何商业公司。它与一些开源项目不同,后者的重要特征包含在其商业产品中,并使开源项目像装饰一样。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值