• 欢迎来到论文发表网(www.lunwenchina.cn),我们为您提供专业的论文发表咨询和论文发表辅导!
受“清朗”行动影响,原网站QQ被封,新老作者请联系通过新的QQ:189308598。或者电话微信:15295038855

你的位置:论文发表网 >> 论文库 >> 管理论文 >> 详细内容 在线投稿

传统关系型数据库瓶颈探讨

热度0票  浏览302次 时间:2020年2月19日 14:37
夏月平 
南京信息职业技术学院 
摘要:传统大型关系型数据库中,影响数据库的性能主要有两个方面,一个是软件方面,主另外一个限制数据库性能的是服务器硬件,如何应用现有硬件来大型数据库处理性能呢。通过一套数据库集群软件技术,利用其中的仲裁协调的进程整合普通数据库服务器来提高这个数据库处理能力。
关键词:数据哭瓶颈;数据库集群;脏数据,存储
传统大型关系型数据库市面上主流的有三种Oracle,db2和sqlserver。影响数据库的性能主要有两个方面,一个是软件方面,主要是指数据库对象比如表索引等是否建的合理,sql语句是否调优过执行计划是否高效等,软件方面的影响可以通过后期的表结构设计以及对sql语句的优化来改进,另外一个限制数据库性能的是服务器硬件,这里我们主要讲这些大型数据库是如何利用现有硬件来提高数据库的处理性能
服务器性能主要是受cpu、内存、存储设备io、网络带宽影响。
cpu:cpu频率越高说明数据处理速度就越快,cpu核数越多大规模并发请求的处理能力就越强;
内存:cpu要处理数据都是从内存获得,内存频率越快和cpu交换数据就越快,内存越大可以把越多的数据缓存在内存上,这样用到数据时候不用从硬盘上读取产生io也不会因为内存太小要频繁和硬盘交换数据;
存储设备io:数据都是存放在存储设备上,用的时候读取到内存,如果有修改要写入到存储设备(这里的存储设备并不是指单独的物理硬盘,而是指由若干个物理硬盘组成的一个硬件系统有它自己的操作系统和cache等,写入数据时候是写入到硬件系统由系统在具体指定存储在那个硬盘上,它可以做到各个物理硬盘的负载均衡,来达到提高整体io的结果),存储设备是最影响数据库性能的,因为它相对cpu和内存性能是最低的;
网络带宽:网络带宽越大,支持在同一时间客户端和数据库交换的数据量就越多,这个比较好理解比如数据库要返回客户端1G的数据,带宽只有100m/秒那么数据库要因为传输数据停顿近10秒。
随着硬件技术的发展,普通的数据库服务器可以有4颗物理cpu,每颗cpu高的可以有56个核心(核心数还在不断增加),内存可以达到512g(甚至更多),高端的服务器可以有更多的物理cpu和内存(当然服务器价格不是和cpu数量成正例而是几何数量增加的,服务器cpu数量越多硬件上架构就越复杂成本就越贵)、网络带宽现在万兆的也很普及,不够的话网络可以通过堆叠的方式增加;唯独存储设备的io读写性能增加不大还是存在瓶颈,即使是现在由全闪存组成的ssd固态硬盘的读写速度相对于内存和cpu的速度还是相差很多,而且要知道数据库的特点是所有的改变都要先写日志(日志一定要写才表示事务的完成,具体数据可以只修改了内存上的缓存这称为脏数据,脏数据积累到一定数量再一次写入存储上来减少io次数),日志文件是固定的文件,数据库事务多日志文件就存在争用的情况这会引起io瓶颈;所以存储设备的io吞吐能力是最限制数据库性能的,当然如果没有引起io瓶颈普通服务器处理极限也要受cpu和内存数量的限制。 
如何在现有普通的硬件条件下提高数据库的处理能力,不再受存储设备io的限制或者让io瓶颈限制最小化;并且有没有可能通过整合多台的普通数据库服务器组成集群,来使整体cpu和内存数量增加从而达到提高数据库处理能力。oracle和db2都提供了这样一种数据库集群软件, oracle的集群软件名字叫RAC(Real Application Cluster),db2的软件名称为Pure Scale。这两款软件具体的表现形式不一样,但是基本的原理都是一样的,它比普通的数据库软件主要是多了一套仲裁协调的进程。整套集群系统可以有N台数据库服务器,但它必须只能有一个共享的存储设备,数据库数据就存放在这个存储设备上并且只有这一份,所有的数据库服务器都能联上这个存储设备,也就是说所有的服务器上都有一个数据库实例,所有的实例操作的数据库数据都在共享存储设备上,大家操作的是同一个数据,同时服务器之间通过高带宽的网络连接在一起,具体拓扑结构。
在整个这样的集群环境下,我们访问任意一台数据库服务器数据都是一样的,服务器之间通过网络和数据库集群软件协调整合到一起,平时各个服务器之间各自处理自己的事务,当要处理同一个数据时提交到仲裁协调进程来仲裁谁先用,如果仲裁让a机先用,a机用完把数据通过网络传给b机内存,b机在内存上再处理数据,这样只要数据已经缓存在任意的服务器内存上就不会从存储设备上读取减少了io,通过这样的方式,如果能保持服务器之间减少相同数据的争用,理论上处理能力是各个服务器的总和。每个服务器都有自己的数据库实例,都有自己的日志文件,每个服务器实例对应的日志文件是独立的,互相不干扰就不存在服务器之间争用同一个日志文件的问题。这样的集群数据库系统还可以做到服务器冗余,其中任意一台或多台服务器故障不影响数据库整体正常工作,只是减少了一些处理能力。这个就是rac和pure scale所带来的整合普通数据库服务器来提高这个数据库处理能力的能力。
延续这种集群数据库的思路,我们的应用系统也可以配合这种多服务器集群来展开设计,比如我有4台服务器的集群,每台服务器设计上只负责处理每年的一个季度数据(我们只是在使用上区分,实际上每台都可以处理所有的数据),我要查询2年的数据,那么应用系统可以设计一个中间件系统,它把2年的数据请求分解成4个小的查询,到每个服务器获取一个季度的数据然后中间件系统汇总起来返回给客户端,再进一步设计让中间件系统分担数据库的一些计算能力,比如我查询1年数据要按照月份统计并进行排序,我们可以延续前面的查询先把所有数据取到中间件上,然后让中间件来对2年数据进行按月统计排序工作,这样数据库只是完成了原始数据的查询没有消耗资源进行统计排序计算,整个过程服务器之间没有要处理一样的数据,减少了服务器之间数据争用,同时中间件系统承担了一些计算工作来减轻数据库服务器的计算量,提高了数据库的处理能力。
通过分析数据库在硬件层面存在的瓶颈,我们可以知道,最主要的是存储io的吞吐瓶颈,然后是cpu频率核心数量内存数量的瓶颈,我们的应用系统也可以参考数据库产商提高的数据库服务器集群的方式来设计应用系统的体系架构,尽量减少数据库的负担,从而增加整个数据库的处理能力。



中国论文网(www.lunwenchina.cn),是一个专门从事期刊推广、论文发表、论文写作指导的机构。本站提供一体化论文发表解决方案:省级论文/国家级论文/核心论文/CN论文。

投稿邮箱:lunwenchina@126.com

在线咨询:189308598(QQ) 

联系电话:15295038855(徐编辑)  

 

上一篇 下一篇
0

联系我们