在线客服
扫描二维码
下载博学谷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的脚本特性,python易于配置,对字符的处理也非常灵活,加上python有丰富的网络抓取模块,所以两者经常联系在一起。Python抓取网页文档的接口更简洁;相比于其他动态脚本语言,Python的urllib2包提供了较为完整的访问网页文档的API。
15761
2019-06-10 15:11:35
Python开发中类方法、类实例方法、静态方法的区别和作用
Python开发中类方法、类实例方法、静态方法的区别和作用:类方法是类对象的方法;类实例方法是类实例化对象的方法;态方法是一个任意函数,在其上方使用“@staticmethod”进行装饰。
10436
2019-06-28 14:42:21
Python定位及修改文件读写位置方法介绍
Python定位及修改文件读写位置方法介绍,Python提供用于获取文件读写位置以及修改文件读写位置的方法tell()方法与seek()方法。当你导入一个模块,Python解析器对模块位置的搜索:当前目录;如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录;如果都找不到,Python会察看默认路径。
4485
2021-03-23 10:54:20
常用的初始HTML标签有哪些?书写规范是什么?
常用的初始HTML标签有哪些?书写规范是什么?初始 HTML 标签按类别可以区分为基础标签、格式标签、多媒体链接、列表、表单等,学习HTML需要先学习标签如何使用,没有技巧需要平时多练习多用才能达到熟能生巧的境界。
2940
2021-12-14 14:18:53
连接查询右连接的SQL语句怎么写?
连接查询右连接的SQL语句怎么写?右连接查询以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在使用null值填充。作为程序员要能写出右连接查询的SQL语句。
3479
2022-01-18 15:31:15