数据库优化 | 亿级数据量系统数据库性能优化方案

一、数据库性能瓶颈主要原因

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://www.cnblogs.com/wyf0518/p/11456817.html

时间: 2024-08-27 23:05:10

数据库优化 | 亿级数据量系统数据库性能优化方案的相关文章

数据库选型之亿级数据量并发访问(MySQL集群)

刘 勇  Email:[email protected] 简介 针对实际应用中并发访问MySQL的场景,本文采用多线程对MySQL进行并发读取访问,其中以返回用户所需的数据并显示在终端为测试结束节点,即将数据从MySQL集群读取后存储于客户端本地内存中.测试过程如下:分别针对4种应用场景,从10.20.50.100个线程对MySQL展开测试.测试结果表明:对场景1)一般的并发访问能够满足需求:对于场景2)和3)响应时间在分钟级,分别处于1-3分钟和10分钟左右:对于场景4)则经常会抛出异常,并且

【转】Mongodb亿级数据量的性能测试

进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目: (所有插入都是单线程进行,所有读取都是多线程进行) 1) 普通插入性能 (插入的数据每条大约在1KB左右) 2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高 3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少 4) 查询一个索引后的数字列,返回10条记录(也就是10KB)的性能,这个测的是索引查询的性能 5) 查

Mongodb亿级数据量的性能测试

Mongodb亿级数据量的性能测试 ——转载 进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目: (所有插入都是单线程进行,所有读取都是多线程进行) 1) 普通插入性能 (插入的数据每条大约在1KB左右) 2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高 3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少 4) 查询一个索引后的数字列,返回10条记录(也就是10K

关于大型门户网站系统的性能优化

鉴于B/S架构在维护成本和客户端配置等方面所具有的绝对优势,越来越多的系统采用了B/S架构,包括ERP.CRM等管理系统也开始向Internet靠拢.而B/S架构的系统却往往很难预计到系统并发访问数有多少,系统往往在高并发访问量的时候出现性能瓶颈,具体表现为页面提示超时信息或者提示数据库抛出的异常信息.为此,针对于B/S架构的面向Internet的系统,尤其是像淘宝.当当网等日访问量超过20余万的大型门户网站进行性能优化是势在必行! 针对大型门户网站系统的性能优化方案有以下几种: (1)页面静态

财务平台亿级数据量毫秒级查询优化之elasticsearch原理解析(转)

https://blog.csdn.net/wang123459/article/details/81045416 财务平台进行分录分表以后,随着数据量的日渐递增,业务人员对账务数据的实时分析响应时间越来越长,体验性慢慢下降,之前我们基于mysql的性能优化做了一遍,可以说基于mysql该做的优化已经基本上都做了,本次是基于elasticsearch对其做进一步的性能优化 正文 1mysql索引原理 基于mysql最常用也最直接有效的性能优化也就是添加索引. mysql索引是怎么实现的呢?数据库

Java Web系统常用性能优化方式

在很多企业中,一些Web应用,在前期运行的时候由于用户量较小,系统压力不大,系统运营状态良好.随着时间的推移,可能由于企业内某项制度的变化,使得原本并不热门的系统,变成了大家日常都需要去使用的,由于用户量激增,原本系统设计和实现中存在的缺陷大量的暴露,而最不能让人容忍的是,系统的响应时间变长,甚至在某时段用户集中访问时,这一现象会变得让人难以忍受.这往往会导致相关业务部门和负责系统运维的技术人员承受很大的压力.本文将介绍如何针对这些的系统进行相应的优化和改进,即使没有相关的系统需要优化,也可以在

MySQL优化之二:My SQL Server性能优化

1 安装优化 一般说来,系统功能越多越复杂,性能就会越差.因此在编译安装MySQL时,仅安装需要的功能模块.如存储引擎.需要的字符集等,让系统尽可能的简单. 2 日志设置优化 由于日志记录直接带来的性能损耗就是数据库最为昂贵的I/O资源,因此在默认情况下MySQL仅开启了错误日志,关闭了其它所有日志.但是在生产环境中,至少需要打开二进制日志和慢查询日志,前者是增量备份的基础,而后者有利于进一步对数据库进行优化.通常情况下,生产环境中很少会打开一般查询日志,如果打开,数据库会记录每一条操作记录对系

java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

android app性能优化大汇总(google官方Android性能优化典范 - 第2季)

Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓存,重用,PNG压缩,自定义View的性能,提升设置alpha之后View的渲染性能,以及Lint,StictMode等等工具的使用技巧. (1)Battery Drain and Networking 对于手机程序,网络操作相对来说是比较耗电的行为.优化网络操作能够显著节约电量的消耗.在性