在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
怎样解决数据库高并发的问题?解决数据库高并发使用缓存式的Web应用程序架构、增加Redis缓存数据库、增加数据库索引、页面静态化、使用存储过程、MySQL主从读写分离、分表分库、负载均衡集群。

解决数据库高并发的常见方案:
1)缓存式的Web应用程序架构:在Web层和DB(数据库)层之间加一层cache层,主要目:减少数据库读取负担,提高数据读取速度。cache存取的媒介内存,可以考虑采用分布式的cache层,这样更容易破除内存量的限制,同时增加了灵活性。
2)增加Redis缓存数据库
3)增加数据库索引
4)页面静态化:效率最高、消耗最小的就是纯静态化的html页面,所以们尽可能使我们的网站上的页面采用静态页面来实现,这个最简的方法其实也是最有效的方法。用户可以直接获取页面,不用像VC结构走那么多流程,比较适用于页面信息大量被前台程序调86传智播客旗下高端IT在线教育平台·博学谷,但是更新频率很小的情况。
5)使用存储过程:处理一次请求需要多次访问数据库的操作,可以把操作整到储存过程,这样只要一次数据库访问就可以了。
6)MySQL主从读写分离:当数据库的写压力增加,cache层(如Memcached)只能缓解数库的读取压力。读写集中在一个数据库上让数据库不堪重负。使用从复制技术(master-slave模式)来达到读写分离,以提高读写性和读库的可扩展性。读写分离就是只在主服务器上写,只在从服务上读,基本原理是让主数据库处理事务性查询,而从数据库处理ect查询,数据库复制被用于把事务性查询(增删改)导致的改变新同步到集群中的从数据库。MySQL读写分离提升系统性能:
1、主从只负责各自的读和写,极大程度缓解X锁和S锁争用。
2、slave可以配置MyISAM引擎,提升查询性能以及节约系统开。
3、master直接写是并发的,slave通过主库发送来的binlog恢复据是异步的。
4、slave可以单独设置一些参数来提升其读的性能。
5、增加冗余,提高可用性。实现主从分离可以使用MySQL中间件如:Atlas
7)分表分库:在cache层的高速缓存,MySQL的主从复制,读写分离的基础上,时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并MySQL应用开始使用InnoDB引擎代替MyISAM。采用Master-Slave制模式的MySQL架构,只能对数据库的读进行扩展,而对数据的操作还是集中在Master上。这时需要对数据库的吞吐能力进一步扩展,以满足高并发访问与海量数据存储的需求。对于访问极为频繁且数据量巨大的单表来说,首先要做的是减少表的记录条数,以便减少数据查询所需的时间,提高数据库的吞吐,就是所谓的分表【水平拆分】。
在分表之前,首先需要选择适当的表策略(尽量避免分出来的多表关联查询),使得数据能够较为均地分布到多张表中,并且不影响正常的查询。分表能够解决单表数据量过大带来的查询效率下降的问题,但是无法给数据库的并发处理能力带来质的提升。面对高并发的读写访,当数据库master服务器无法承载写操作压力时,不管如何扩展ve服务器都是没有意义的,对数据库进行拆分,从而提高数据库入能力,即分库垂直拆分。
8)负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故不影响整个服务,负载均衡集群同时也实现了高可用性。负载均衡将是大型网站解决高负荷访问和大量并发请求采用的极解决办法。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
python开发中元组是什么?元组定义
python开发中元组是什么?元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。
13751
2019-06-28 14:30:30
Python开发中类方法、类实例方法、静态方法的区别和作用
Python开发中类方法、类实例方法、静态方法的区别和作用:类方法是类对象的方法;类实例方法是类实例化对象的方法;态方法是一个任意函数,在其上方使用“@staticmethod”进行装饰。
11630
2019-06-28 14:42:21
零基础学Python爬虫难不难?要怎么学?
零基础学Python爬虫难不难?要怎么学?众所周知,Python是最容易上手的编程语言,如果有一定基础,学会Python爬虫也是分分钟钟的事。对于零基础的学习者来说,Python爬虫也是比较简单的,只要先学习Python这门编程语言,再会写几行代码就可以做爬虫了。现在的学习资源也有很多,比如在博学谷平台上的Python爬虫教程。一起来看看具体怎么学习Python爬虫吧!
7362
2019-10-11 11:31:19
Python 函数默认返回None原因是什么?
Python 函数默认返回None原因:定义的函数没有返回值,Python 解释器就会强行地默认给注入一段返回逻辑!实际上 Python 中有很多行为都是隐性的。
7660
2020-08-19 15:29:51
子查询的SQL语句怎么写?如何使用?
子查询的SQL语句怎么写?主查询在一个select 语句中嵌入了另外一个select语句, 被嵌入的 select 语句称之为子查询语句。子查询嵌入到主查询中辅助主查询,充当条件或充当数据源。
4328
2022-01-19 15:53:50
