在线客服
扫描二维码
下载博学谷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开发简单吗?
Python技术可做web开发、Python技术可做数据分析、Python技术可做人工智能、将Python用于机器学习,流行的Python机器学习库和框架,其中最流行的两个是scikit-learn和TensorFlow。
8819
2019-06-11 15:19:29
五种方法教你Python字符串连接
字符串是Python中最常用的数据类型,在开发过程中可以对字符创进行截取并与其他字符创进行连接。下面小编整理了5种方法完成Python字符创的连接!
7026
2019-12-10 18:39:16
使用Django开发网站需要具备哪些知识?
只学习Django是不是就可以开发一个网站?还需要具备哪些知识?
5830
2020-08-24 11:47:13
Python2和 Python3都有哪些区别?
很多新同学在学习Python的过程当中,都会犹豫是学Python2还是Python3呢,这里给大家整理了一下关于Python2和Python3都有哪些区别,希望对迷茫的同学有所帮助
3613
2021-06-24 15:22:08
如何修改goods表结构?怎么操作?
如何修改goods表结构?怎么操作?修改表结构可以使用: alter table语句,多个修改字段之间使用逗号分隔,使数据库中表的字段名称标准化便于查找。
3302
2022-01-25 10:21:06