已阅读5页,还剩54页未读, 继续免费阅读
(计算机软件与理论专业论文)达梦数据库的自调节技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学硕士学位论文 摘要 数据库的性能管理一直是十分重要的一个研究课题。为了减小数据库管理的难 度,提高数据库管理员的工作效率,在最大程度上实现数据库系统的自管理,自调 节技术逐渐成为了数据库管理系统的一个重要研究领域。本课题以达梦数据库系统 的网络子系统和i o 子系统为例,研究了数据库自调节技术的实现。 网络予系统和i o 子系统自调节功能的实现建立在线反馈控制的自调节模型之 上。在这个模型中,包括了五个组成部分:网络子系统、i o 子系统、性能监控子 系统、性能分析子系统和性能调节子系统。性能监控子系统收集d m 4 数据库网络子 系统和i 0 子系统运行期的性能数据,性能分析子系统采用简单队列分析技术对性 能监控子系统收集到的数据进行分析,如果发现预先设定的性能指标下降到了某个 预先设定的阀值以下,性能调节子系统将采用爬山算法对有关的参数进行调节。 在网络子系统的实现中,分析了现有各种通信模型的利弊,并提出了一科基于 队列的通信模型。该模型基于异步网络通信机制,利用多线程技术和队列技术处理 大量的网络连接和服务请求。在i o 予系统的实现中,采用了异步i o 方式,综合 考虑了w i n d o w s 和l i n u x 平台的差异。 从达梦数据库系统的自调节技术实现中可以得出一个结论,那就是数据库的自 调节技术应当建立在监控,反馈,调节这样一个循环的控制机制之上。同时它要求 数据库内核高度的模块化,模块与模块之间低耦合性,这样才便于分而治之。 关键字:数据库,性能,自调节,网络通信,异步输入输出 华中科技大学硕士学位论文 a b s tr a c t t h ep e r f o r m a n c eo fd b m si sav e r yi m p o r t a n tr e s e a r c hs u b j e c t r e c e n t y e a r s ,t h es e l f t u n i n gd b m sb e c o m e m o r ea n dm o r ei m p o r t t h i sp a p e rr e s e a r c h e s t h es e l f - t u n i n gd e s i g no fn e t w o r ks u b s y s t e ma n di os u b s y s t e mo fd a m e n gd b m s t h em a i np r i n e i p l et h a tw ep u r s u e di nt h es e l f - t u n i n gd e s i g no fd m 4 n e t w o r ks u b s y s t e ma n di os u b s y s t e mi st h ec o n c e p to fa no n l i n ef e e d b a c k c o n t r o ll o o p t h i sl o o pc o n s i s t so f f i v es u b s y s t e m s :t h en e t w o r ks u b s y s t e m o fd m 4 ,t h ei 0s u b s y s t e mo fd m 4 ,t h ep e r f o r m a n c em o n i t o rs u b s y s t e mo fd m 4 , t h e p e r f o r m a n c ea n a l y s i ss u b s y s t e m o fd m 4 ,a n dt h e p e r f o r m a n c ea d j u s t s u b s y s t e mo fd m 4 t h ep e r f o r m a n c em o n i t o rs u b s y s t e mc o l l e c t sp e r f o r m a n c ed a t a o ft h en e t w o r k s u b s y s t e m a n di 0 s u b s y s t e m t h ep e r f o r m a n c ea n a l y s i s s u b s y s t e ma n a l y z e st h ed a t at h a tm o n i t o rs u b s y s t e mg a t h e r sb ys i m p l eq u e u e i n g a n a l y s i sm e t h o d ,a n dw h e n e v e r t h e p e r f o r m a n c e m e t r i c se x c e e d c r i t i c a l t h r e s h o l d s ,t h ep e r f o r m a n c ea d j u s ts u b s y s t e md y n a m i c a l l ya d j u s t s s o m e p a r a m e t e r sb yh i l lc l i m b i n gm e t h o d i nt h en e t w o r ks u b s y s t e m ,w eg i v eaq u e u e i n gn e t w o r kc o m m u n i c a t i o nm o d e l w h i c hu s e st h em u l t i p l i n g t h r e a dt e c h n o l o g ya n dt h ea s y n c h r o n o u sn e t w o r k c o m m u n i c a t i o nt e c h n o l o g y i nt h ei os u b s y s t e m ,w eg i v ea na s y n c h r o n o u si o m o d e lb a s e do nw i n d o w sa n dl i n u x f r o mt h ea u t o m a t i ct u n i n gt e c h n o l o g yo fd a m e n gd b m s ,am a j o rc o n c l u s i o n i st h a ts e l f t u n i n gd a t a b a s et e c h n o l o g ys h o u l db eb a s e do nt h ep a r a d i g mo f af e e d b a c kc o n t r o l l o o p i na d d i t i o n ,t h ed a t a b a s em a n a g e m e n ts y s t e mm a y r e q u i r ear a d i c a ld e p a t u r et o w a r d ss i m p l e r ,h i g h l yc o m p o n e n t i z e ds o f t w a r e a r c h i t e c t u r e sw i t hn a r r o wi n t e r f a c e sb e t w e e n r i s c s t y l e “a u t o n e m i c ” c o o n e n t s i i 华中科技大学硕士学位论文 k e y w o r d s :d a t a b a s e ,p e r f o r m a n c e ,s e l f - t u n i n g ,n e t w o r k e o m m u n ic a t i o n 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均己在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:锨彳 日期:矿悔厂月9 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校 有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅 和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本论文属于, 不保密口 ( 请在以e 方框内打“”) 学位论文作者签名:考蕴咩 日期:f 年妇7 日 9 指导教师签名 目期:2 叼昨p 心 华中科技大学硕士学位论文 1 1 课题背景 l 绪论 随着企业信息化建设的不断深入,数据库管理系统( d a t a b a s em a n a g e m e n t s y s t e m ) 越来越成为公司和大型企业的核心i t 系统,从民用的管理系统到军队的指 挥自动化系统都离不开数据库管理系统,它己成为支持应用系统的核心软件。数据 库性能的好坏直接影响着整个应用系统的正常运行。 一般而言数据库的性能调节就是根据具体应用调整系统的参数以便取得最佳的 性能。商用数据库系统都提供了一些这样的参数,通常有2 0 一1 0 0 ,但是事实上数据 库系统本身并不能以一种智能化的方式来配置这些参数,以使数据库的性能达到最 优。这样,合理的参数配置就依赖于数据库管理员和应用开发人员的技术水平和实 际经验了。一直以来,很多的科研院所,商业组织对如何提高数据库的性能做了大 量的研究工作“。1 。 但是这些性能优化的方法都是针对特定的应用和数据库系统的,当然存在一些 一般性的调节原则“,但是,只有一小部分的数据库管理员和应用开发人员可以透 彻的理解这样的一些调节原则对数据库带来的影响和好处。 另一方面,随着关系数据库功能和应用领域的扩张,关系数据库本身正变得原 来越复杂。同时,数据复杂性和数据量也大大增加了。这一切都加大了数据库管理 员和应用开发人员的工作难度。 再次随着硬件费用的下降,人力成本相对增长,数据库用户原来越意识到操作 数据库系统所带来的人力资源费用的增长。 因此尽管好的数据库性能仍然是人们追求的目标,但是越来越多的用户已经难 以拥有调节系统性能到最优状态所需要的技术水平,专业人士的缺乏以及巨大的人 力成本,已经成为普通用户获得满意的数据库性能的巨大障碍,在这样的背景下就 出现了自调节技术。具有自调节功能的数据库可以根据应用需求和硬件能力自动 华中科技大学硕士学位论文 调节系统的性能,而不需要人为的干预。 1 2 国内外发展概况 众多的研究机构对数据库的自调节技术进行了大量研究,除此之外,一些大型 商业组织也对数据库自调节技术进行了大量的研究工作,并在其数据库产品中得到 了体现。 1 2 1 国内外类似系统的概况 i b m 一直致力于自调节技术方面的研究工作。很多理论成果都已经应用到它的 数据库产品d b 2 中。例如,d b 2 的u d b sq u e r yo p t i m i z e r 组件使用了两种自调节 方法来进行查询优化。一个是把用户查询转化成标准的易于优化的查询;另一个是 使用一套代价模型来评价一个查询的众多查询计划,这个模型可以根据机器的硬件 环境自动进行调整。 另外,d b 2 的c o n f i g u r a t i o na d v i s o r ,它可以自动配置数据库系统的内存,服 务器的数目,日志刷新频率等参数。 除此之外,d b 2 的a u t o m a t i ci n d e xr e o r g a n iz a t i o n 、u d bd e s i g na d v i s o f 、 u d bq u e r yp a t r o l l e t 、a u t o m a t i cq u e r yp a r a l l e l i s ms e l e c t i o n 、l o a du t i l i t y a u t o m a t i ct u n i n g 、a u t o m a t i ci n c r e m e n t a lr e s t o r e 和a u t o m a t i cc o n s i s t e n c y c h e c k i n gas e c t o rf o rp a g ei o 等组件都使用了自调节的技术。 对于o r a c l e 而言,能够动态调整系统的配置是o r a e l e l o g 最令人激动的特性。 在这之前,o r a c l e 只允许系统管理员实时监测系统的性能,以便及时发现问题,但 是并不允许系统管理员实时地改动这些参数,除非停止或重新启动数据库系统。但 o r a c l e 的最新版本l o g ,可支持系统管理员实时调整性能参数。例如,当系统缓冲 区的命中率大大下降时,数据库管理员可以立即动态增加缓冲区的大小去改善这个 问题,而不会影响数据库的正常运行。 o r a c l e l o g 在数据库服务器上引入了一套复杂的自管理系统,这套系统允许数 2 华中科技大学硕士学位论文 据库自我收集数据,分析数据,并利用这些分析结果调节环境参数或者自动修复潜 在的问题。o r a c l e l o g 是目前数据库市场上唯一的具有自调节功能的数掘库产品。 o r a c l e l o g 白调节系统由4 个都分组成:自动化的w o r k o a dr e p o s i t o r y ( a w r ) 、 自动化的m a i n t e n a n c et a s ki n f r a s t r u c t u r e ( m t i ) 、s e r v e rg e n e r a t e da l e r t s ( s g a ) 和a d v i s o r yf r a m e w o r k ( a f ) 。 同时,还提供了一些附属工具实现数据库的自管理。例如,引入了一个自我诊 断的数据库引擎,称为数据库自动诊断监视器( a u t o m a t i c d a t a b a s edj a g n o s t i c m o n i t o r ,a d d m ) 。a d d m 使得数据库能够诊断自己的性能,并确定问题所在。在每 一次a w r 收集到统计数据之后,a d d m 会自动运行,对a w r 捕获的数据进行分析,并 对系统性能进行预测。如果发现潜在的问题可以给出推荐的解决方案,并对方案可 能带来的好处进行评估。a d d m 采用历史比较的方法对系统性能进行分析,其目标就 是识别消耗d b t i m e 最多的部件。 除了a d d m 工具之外,o r a c l e l o g 还提供了自动s q l 调节工具,用于自动优化应 用程序s q l :自动共享内存管理工具,用来自动管理内存,这个工具可以自动配置 共享缓冲池、j a v a 缓冲池以及内存缓冲池的大小,即管理员不需要事先预设上述几 个缓冲池的大小( 默认情况下,上述几个参数的大小都为0 ) ,无论何时哪个部件需 要内存,它都可以通过内部的自动调节机制得到,这些对管理员而言是透明的,不 需要人为的干预。如果服务器端的参数文件s p f l l e 使用的话,那么上述经过自动调 节的各个部件的大小会在服务器关机的时候自动写入s p f i l e 文件中,那么当服务器 下次启动时就不需要再次学习应用的特性而重新配置合理的参数了。 空间管理也是非常耗费管理员的工作。但是在o r a c l e l o g 中,可以自动管理它 的空间消耗,提醒管理员潜在的空间问题,并推荐合适的解决方案。 除了上述的提到的一些部件之外,o r a c l e l o g 还实现下面这些方面的自动化操 作,包括:自动空间管理、自动存储管理、自动备份与恢复和自动配置管理等等。 另外,如果你使用o r a c l e 的s t a t s p a c k 工具集去收集数据库的统计数据,你可 以在你的历史数据的基础上开发一个预测模型,用来预测数据库某种资源的短缺。 你的s t a t s p a c k 也许会向你报告你的系统缓冲的命中率太低等等。 s o ls e r v e r 数据库管理系统也在一定程度上实现了自调节能力”1 。在s q l 华中科技大学硕士学位论文 s e r v e r 中提供了两个重要的白调谐工具,一个是i n d e xt u n i n gw jz a r d 可以帮助用 户自动选择索引;另一个是s q ls e r v e rs t o r a g ee n g i n e ,提供了1 6 + h e 务器方面 的调谐节点。 1 2 2 主要关键技术 数据库的自调节系统是一个体系结构,目前大部分自调节技术都是建立在在线 反馈控制机制之上“3 。系统根据预先配置的参数启动运行,在运行期系统通过性能 监控模块不断监控系统的各项性能指标,并将它传给性能分析模块。如果性能分析 模块发现系统的整体性能下降到某个预先设定的阀值,它将做出对哪些参数进行如 何调节的指令。而系统预测模块将根据性能分析模块给出的新的参数值对系统的各 项性能指标进行预测,如果预测的结果是性能有较大的提高,那么系统将启动参数 调节模块进行实际的系统参数的调整。 这种模型的难度在于性能预测模块使用的数学模型很难确定,并且性能预测需 要耗费大量的时间和空间。但是这种模型的好处是可以大大增加系统的稳定性和健 壮性,因为系统没有在发现可能的解决方案之后就贸然的进行系统的调节,而是在 性能预测模块的预测之后才进行真实的调节。 在本文中,采用了一种简化的在线反馈控制模型。在这种模型中,包含以下几 个组成模块:可动态调节的数据库系统内核、性能监控模块、性能分析模块和参数 调节模块。和前种模型类似,系统根据预先配置的参数启动运行,在运行期系统 通过性能监控模块不断的监视系统的各项性能指标,并将它传给性能分析模块。如 果性能分析模块发现系统的整体性能下降到某个预先设定的阀值,它将做出对哪些 参数进行如何调节的指令。和前一种模型不同的是,系统没有对性能分析模块给出 的新的参数值是否真的能够提高系统的整体性能进行预测,而是直接启动参数控制 模块进行实际的系统参数的调整。如果调整后的实际结果不理想,系统会再次进入 观测,分析,调节的循环过程。 可动态调节的数据库系统内核是整个自调节技术实现的核心。目前大部分数据 库系统内核都不允许运行期调节有关参数,除非停止运行后调节。因此对于数据库 d 华中科技大学硕士学位论文 内核而言,最重要的研究工作是如何开发出允许运行期动态调节的系统内核。由于 数据库管理系统是一个庞大的系统软件,它由很多模块组成。这样关于它的自调节 内核技术,就涉及到很多方面。国内外的研究有很多,在以下领域都取得了一定的 研究成果,包括:缓冲区管理的自调节研究”。1 “、自动的模式建立、自动的数据划 分“、查询优化“3 等等。 在本文中,选择了数据库管理系统中的网络子系统和i o 子系统两个部分为研 究内核,研究实现这两个内核的自调节技术。相关的核心技术主要有w i n d o w s 和 l i n u x 下的多线程技术、进程间通信技术、文件i o 技术、性能分析技术和参数调 节技术。下面分别介绍一下。 传统的操作系统中,资源分配和c p u 调度的单位是进程,即一个程序的一次执 行。进程在任何时候只有一个执行现场,即称为单线程结构。这种单线程结构的进 程已不能很好地适应计算机的发展。首先,计算机硬件向多处理机、网络方向发展, 这就要求操作系统能适应这种发展,合理地使用各处理机和网络上的其它处理机, 许多工作可以分配到不同的处理机上同时运行。在这一点上,传统的单线程进程不 能有效地实现;其次,应用程序要求并发执行。如数据库中,可以同时有多个用户 在交互执行,同时对几个文件或网络操作。又如窗口系统中,同时处理多个子窗口 的请求等,这就要求操作系统提供一些机制,使得用户能按需求,在个程序中设 计出多个线程同时运行,而这又不是多个进程组合在一起能完成的,因为他们之间 共享大部分资源。 基于上述原因,操作系统在系统结构上有了新的发展,与传统操作系统中的单 线程结构相对应,提出了多线程结构的概念“。1 。很多著名的操作系统都已经采用 了多线程结构。目前,对多线程结构还没有国际共认的标准,许多计算机公司和国 际组织都有自己的标准“,如w i n d o wn tt h r e a d 接口规范,s o l a r i st h r e a d 接口 规范,0 s 2t h r e a d 接口规范,p o s i xp t h r e a d 标准和d e c pt h r e a d 标准等。所有这 些规范都对操作系统的多线程结构给出了系列的外部接口,虽然这些标准在具体 的接口格式或功能上有所区别,但主要的内容是一致的。 从理论上说,用户进程可以创建任意多个用户线程。这些线程可以在不同的处 理机上同时执行。但从资源分配、处理机调度、线程切换、效率等诸多问题出发, 华中科技大学硕士学位论文 并不是每创建一个线程,就作为一个独立的单位,交给核心管理。因此在线程机制 的具体实现上,又分为多种模式。2 ”3 。在多线程结构的操作系统中,多线程结构大 都分成两个层次来实现,一层是用户层,在用户级多线程库中实现,一层是核心层, 在操作系统内核中实现。为了区别,处于不同层次中的线程分别叫做用户线程和核 心线程。用户线程只是一个代表对应线程的数据结构,它只占用用户空间的资源, 是用户级的对象,对核心是透明的。而核心线程才是线程执行的实体,是核心调度 的单位。 当内核既支持进程也支持线程时,就可以实现线程一进程的多对多模型,即一个 进程的某个线程由内核调度,而同时它也可以作为用户级线程池的调度者,选择合 适的用户级线程在其空间中运行。这就是前面提到的混合线程模型,既可满足多处 理机系统的需要,也可以最大限度的减小调度开销。绝大多数商业操作系统( 如 d i g i t a lu n i x 、s o l a r i s 、i r i x ) 都采用的这种能够完全实现p o s i x l 0 0 3 1 c 标准的 线程模型”。在核外实现的线程又可以分为一对一和多对一两种模型,前者用一个 核心进程( 也许是轻量进程) 对应一个线程,将线程调度等同于进程调度,交给核 心完成,而后者则完全在核外实现多线程,线程调度也在用户态完成。后者就是前 面提到的单纯的用户级线程模型的实现方式,显然,这种核外的线程调度器实际上 只需要完成线程运行栈的切换,调度开销非常小,但同时因为核心信号( 无论是同 步的还是异步的) 都是以进程为单位的,因而无法定位到线程,所以这种实现方式 不能用于多处理器系统,而这个需求正变得越来越大,因此,在现实中,纯用户级 线程的实现,除算法研究目的以外,几乎已经消失了。 l i n u x 内核只提供了轻量进程的支持,限制了更高效的线程模型的实现,但 l i n u x 着重优化了进程的调度开销,一定程度上也弥补了这一缺陷。目前最流行的 线程机制l i n u x t h r e a d s 所采用的就是线程一进程“一对一”模型,调度交给核心, 而在用户级实现一个包括信号处理在内的线程管理机制。 在实际的应用编程中,w i n d o w s 和l i n u x 都给程序员提供了可直接调用的系统 函数库,程序员利用这些库函数,可以很容易的编写出多线程程序牌。3 “。 进程间通信的方式主要有邮槽,命名管道,套接字( s o c k e t ) 编程等几种。 邮槽是由w i n d o w s 提供的一种单向内部处理通讯机制,并且它对于w i n d o w s 9 x 6 华中科技大学硕士学位论文 与w i n d o w s n t 2 0 0 0 都适用”“。实际上一个邮槽是驻留在内存中的一个w i n d o w s 临 时虚拟文件,利用w i n d o w s 标准文件函数可以创建邮槽,并且向其中写入与读取消 息,但它不同于磁盘文件,当它的旬柄被关闭后,邮槽中的消息将被全部删除。这 些消息通常是指通过网络发送到指定的一台计算机上,或某个指定域中所有计算机 上的数据,数据的格式则由应用程序来确定,同时这些计算机上的邮槽所有者可以 从中读取这些消息,并作相应的处理。自口槽的工作方式为客户服务器方式。创建 并拥有邮槽的进程为服务器,不管该进程是在主域服务器上还是在由w i n d o w s 9 x 与 n t w o r k s t a t i o n 组成的工作站上都被视为邮槽服务器。而向指定的邮槽写入消息的 进程则为邮槽客户,同样它不考虑邮槽所处机器在网络上的具体身份。同时邮槽服 务器接收来自客户端写入消息的请求,并从中读取消息。邮槽工作方式有三大特点。 一个特点是单向通讯。刨建邮槽的服务器只能读取消息,不能写入消息;而客户端 则与之正好相反。如果某一端应用程序要同时具备读取与写入的双向功能,那么必 须两端的应用程序分别建立两个邮槽。另一个特点是广播消息。假如在域上有若干 计算机使用同样的名称创建邮槽,那么某一邮槽客户可以次性向所有的同名邮槽 服务器发送消息。最后一个特点是数据报传输。邮槽对消息的传输为数据报方式, 即客户端只负责数据的发送,而服务器端并不回应客户端发送的数据是否接收到。 管道的通信方式又具体分为匿名管道和命名管道两种”“。匿名管道即没有命名 的管道,只能用于相关的进程之间,而且是单方向的,要实现双工传输,需要同时 创建两个管道。匿名管道用于父进程与子进程之间,其工作原理是在子进程端用管 道的读、写操作替代子进程的标准输入或标准输出,这样子进程就能与父进程交换 数据了。父进程用写句柄写数据到管道的同时,子进程用读句柄从相应管道中读这 些数据。同样,子进程在另一个管道中写数据,父进程在相应管道中读数据。需要 注意的是,匿名管道不能用于网络中,也不能用于不相关的进程间,只能用于同 台计算机的父进程与子进程之间传递数据。 相对匿名管道,命名管道的使用就要方便得多,它既可用于同一台计算机的进 程间传递数据,也可用于不同计算机的进程间传递数据,而且只需创建一个命名管 道就可以实现双工传输。在w i n 3 2 中,命名管道是作为文件系统实现的,由命名管 道文件系统驱动程序执行,它是一个在内存中存储管道数据和根据命令对其进行检 7 华中科技大学硕士学位论文 索的伪文件系统。在处理本地命名管道请求或从远程计算机接收命名管道请求时, 它好象是一个普通的文件系统命名管道是由应用程序指定的唯一名字的单向或双 向管道,进程通过名字而不是句柄来访问命名管道。 除了邮槽和管道之外,另一种进程间通信方式是套接字接口。套接字接口是 t c p i p 网络的a p i 接口函数。套接字最先应用于u n i x 操作系统,套接字数据传输 实际上就是一种特殊的5 0 。 t c p f l l p 协议被集成到到u n i x 内核中时,相当于在u n i x 系统引入了一种新型的 i o 操作。u n i x 用户进程与网络协议的交互作用比用户进程与传统的i 0 设备相互 作用复杂得多。首先,进行网络操作的两个进程在不同机器上,如何建立它们之间 的联系。其次,网络协议存在多种,如何建立一种通用机制以支持多种协议。这些 都是网络应用编程界面所要解决的问题。 在u n i x 系统中,网络应用编程界面有两类:u n i xb s d 的套接字和u n i xs y s t e m v 的t l i 。由于s u n 公司采用了支持t c p i p 的u n i xb s d 操作系统,使t c p i p 的应 用有更大的发展,其网络应用编程界面一套接字在网络软件中被广泛应用,至今已 引进多种操作系统中,成为开发网络应用软件的强有力工具。 套接字有两种主要的操作方式:面向连接的和无连接的。无连接的操作使用数据 报协议。一个数据报是一个独立的单元,它包含了所有的这次投递的信息。这个模 式下,不需要连接一个目的的套接字,发送方只是简单地投出数据报。无连接的操 作是快速的和高效的,但是数据安全性不佳。 面向连接的操作使用传输控制协议。一个这个模式下的套接字必须在发送数据 之前与目的地的套接字取得一个连接。一旦连接建立了,套接字就可以使用一个流 接口:打开一读一写一关闭。所有的发送的信息都会在另一端以同样的顺序被接收。 面向连接的操作比无连接的操作效率更低,但是数据的安全性更高。 到底用哪种模式是由应用程序的需要决定的。如果可靠性更重要的话,用面向 连接的操作会好一些。比如文件服务器需要他们的数据的正确性和有序性。如果一 些数据丢失了,系统的有效性将会失去。一些服务器,比如间歇性地发送一些数据 块。如果数据丢了的话,服务器并不想要再重新发过一次,因为当数据到达的时候, 它可能已经过时了。确保数据的有序性和正确性需要额外的操作的内存消耗,额外 r 华中科技大学硕士学位论文 的费用将会降低系统的回应速率。 在实际的应用编程中,w i n d o w s 和l i n u x 都给程序员提供了可直接调用的系统 函数库,程序员利用这些函数库,可以很容易的编写出套接字程序”4 。 u n i x 系统的i o ( 输入输出) 命令集,是从m a l t i t s 和早期系统中的命令演变出 来的,其模式为打开一读写一关闭。在一个用户进程进行i o 操作时,它首先获得对 指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打丌的 文件或设备上进行i o 操作的进程。然后这个用户进程多次调用读或者写操作以传 输数据。当所有的传输操作完成后,用户进程关闭调用,通知操作系统已经完成了 对某对象的使用。主要的i o 通信模式主要有两种,一种是同步方式,另一种是异 步方式。 同步i o 是一种以“封锁的方式”执行i o 的方法,进程必须等待i o 完成, 才能继续处理其它的任务。这种方式的优点是实现容易,操作简单,但是对系统资 源的利用率不高。 异步i o 是一种“非封锁的方式”执行i o 的方法,利用这些方法,进程不等 待1 0 完成( 特别是关于写入) 。成功完成一个写操作时,o s 将返回一个“i o 完成” 的状态或者标记给应用程序。其优点是,应用程序不必等待存储设备上的写操作完 成,大大提高了系统资源的利用率。 在性能分析这一块,分析技术也有很多。通常越复杂的性能分析方法就越准确。 在数据库性能分析领域,常用的性能分析方法主要有简单数学分析方法、比率模型 分析方法、回归分析方法、模拟分析方法和排队分析方法等。 简单数学分析方法,正如它的名字暗示的那样,很多时候你只需要简单的加减 乘除就可以预测系统的性能。比如,如果每个用户各自需要 o m 的非共享内存,而 你希望在六个月内有超过1 5 0 的用户,那么我们至少需要1 5 0 0 m 或者更多的内存, 除非我们改变体系结构。 比率模型分析方法,是九十年代中期由d a v ec o o k 等人提出的。它们的目标是 快速的预测容量的需求。该分析方法广泛的应用于硬件预算,评估重大的技术风险 之所在,评估技术体系的替换方案等。比率模型通常可以很快的进行预测而准确性 也很高。它很容易学习和使用,但是也很容易被滥用。 9 华中科技大学硕士学位论文 回归分析方法,较好的应用于工业生产系统,也很准确。它的优点是快速,可 靠,准确以及提供统计数据( 这样我们可以量化错误,这点十分重要) 。但是,回归 分析并不提供o s 系统的具体细节,并且需要理解统计数据。 模拟分析方法,利用模拟终端进行系统性能分析。它在许多的利学领域有多年 的使用。很多模拟工具提供高级的统计分析和动画能力,但是他们是昂贵的,工作 在特定的问题域,并且需要大量的学习曲线。 基于排队理论的模拟分析方法,在模拟分析方法的基础上,利用多重排队系统 提供特定子系统的细节和子系统之间的交互,分析结果很准确。但是这面临着模拟 系统和真实系统调节一致的挑战。为了考虑所有的组合,这个调节的过程可以高度 的计算机化,计算机化的程度越高,预测的结果就越准确。即使是一个很简单的调 节过程也需要上千次的计算。 简单排队分析方法,这种方法可以提供非常准确的预测,也可以用来做高层的 和决定性的决定。它最初由j a c k s o n 在1 9 5 7 年提出,后来又进过很多的改进,并广 泛地用于性能分析之中”7 “3 。简单排队理沦大致是下面描述的这样:一个事务进入队 列( 排队时间开始) ,如果服务器很繁忙,这个事务将等待。当服务器有空闲时间后, 它进入队列,取出一个等待的事务,然后处理它。当事务从队列中移出后,排队时 间结束,服务时间开始。当服务器处理完事务,事务的服务时间中止,而服务器再 次到队列中去找另一个事务服务。本课题中将主要采用这种性能分析方法。 在参数调节方面,最常用的是爬山算法。它的核心思想是如果有众多需要调 节的参数,每次只调节一个参数,每个参数都有一个最大值和最小值,参数只能在 最大值和最小值之间选择。参数调节后,如果系统性能提高了,则中止算法,否则 选取下一个参数进行调节。 1 3 课题主要研究工作 1 3 1 课题的研究思路 本课题将以达梦数据库系统d m 4 的网络子系统和i 0 子系统为研究对象,探讨 1 0 华中科技大学硕士学位论文 数据库系统的自调节技术的实现。选择这两个子系统为研究对象的原因有两个,一 个是两个模块相对而言比较独立,它们的动态调节不会对系统的其他模块的正常运 行造成大的影响。另一个原因是这两个模块往往是数据库系统设计中的瓶颈,它f l , 的性能对整个数据库的性能有重大影响。本课题将首先探讨如何设计高性能的,可 伸缩性的网络模型,以支持大量用户对数据库的并发访问请求以及如何设计高性能 的,可伸缩性的i o 模型,以支持较大的并发磁盘i o 访问请求。然后,在此基础 之上,探讨在这两个模型中对系统性能有重大影响的参数有哪些,并进一步研究可 在运行期调整这些参数的机制以及实现方案。 1 3 2 课题的主要工作及预期结果 本课题的最终目标是实现达梦数据库d m 4 网络子系统的自调节功能和i o 子系 统的自调节功能。具体来说,本课题包括两大部分的研究工作: 1 研究达梦数据库d m 4 网络子系统的实现,并在此基础上研究其自调节技术的 实现。这部分工作包括分析现有的各种网络模型的长处和弊端,提出能同时支持上 千用户并发访问数据库的可伸缩网络模型。然后在此基础上研究对网络性能有重大 影响的系统参数,并研究可在运行期动态调节这些参数的机制以及实现方案。 2 研究达梦数据库d m 4 i o 子系统的实现,并在此基础上研究其自调节技术的 实现。这部分工作包括分析现有的i o 模型的长处和弊端,提出能同时支持较大磁 盘i o 服务请求的体系模型。然后在此基础上研究对i o 性能有重大影响的参数, 并研究可在运行期动态调节这些参数的机制以及实现方案。 华中科技大学硕士学位论文 2 达梦数据库网络子系统的自调节技术研究 本章首先研究了达梦数据库d m 4 网络子系统的实现,然后在此基础上研究了d m 4 数据库网络子系统的自调节技术的实现。 2 1 系统分析 网络予系统的作用是接收用户的请求,并将请求传给数据库服务器进行处理, 在数据库服务器处理完用户的请求后,网络子系统把结果返回给用户。 d m 4 数据库系统是基于c s 模式的。客户端要与服务器通信首先就必须建立与 服务器的连接。一般而言,每个d m 4 应用程序用户都有两个与他们数据库连接相关 的进程( 线程) :一个用户进程,它运行在用户的客户机或者应用程序的w e b 服务器 上;一个服务器进程,它运行在d m 4s e r v e r 计算机上。所以要实现客户端与服务器 端的通信,就是要实现跨网络的进程问通信。进程间通信的方法有很多,比如远程 过程调用,套接字等等。套接字是c s 模式中使用最广的进程间通信方式,而且具 有很好的伸缩性。所以在d m 4 数据库系统中采用了套接字方式作为客户端和服务器 通信的方式。套接字主要分为两种,一种是基于u d p 协议的无连接的套接字,所谓 无连接的套接字就是说在客户端向服务器端发送任何消息之前,客户端并不需要与 服务器端先建立连接。这种方式优点是快速,但缺点是不可靠,它不能保证客户端 发送给服务器的消息或者服务器发送给客户端的消息,对方是否能够收到,也不能 保证收到消息的次序是不是和发送消息的次序一致。另外种是基于t c p 协议的有 连接的套接字。这种通信方式虽然在实现上要复杂一些,但是优点是非常可靠。消 息的发送方能够准确的知道消息是否被消息的接收方收到,并且收到消息的次序与 发送消息的次序必定是一致的。由于数据库管理系统对消息的可靠性要求很高,所 以d m 4 数据库系统采用了面向连接的套接字方式,作为客户端和服务器端通信的基 本方式。 1 2 华中科技大学硕士学位论文 对于客户端而言,它与数据库服务器的通信是很简单的,它的基本作用就是建 立与数据库服务器的连接,然后发送服务请求并接收服务器传回来的处理结果。但 是对服务器而言,却要复杂很多。因为它要处理很多个客户端的并发连接请求以及 服务请求,而不像客户端只需要处理与一个特定的服务器的消息往来。在大型应用 中,同时访问数据库的客户端数日可能会达到成千上力,面对如此巨大的服务请求, 要求服务器必须具有良好的伸缩性,否则很容易在极短的时间耗尽服务器的资源, 而导致系统崩溃的。 因此,实现网络通信的自调节功能是十分有益的。这样,系统可以根据用户连 接请求的数目和服务请求的数目自动的调节有关系统参数,避免在极短的时间耗尽 服务器的资源。我们将首先讨论一下d m 4 网络子系统的实现,然后在此基础上探讨 网络子系统自调节功能的实现。 2 2 达梦数据库网络子系统结构 在网络予系统的结构中主要包含了两个部分,一个是客户端和数据库服务器之 间的消息协议,它规定了客户端发送给数据库服务器的信息或者数据库服务器发送 给客户端的信息的格式。另外一个是客户端与服务器端的通信模式,它决定了服务 器如何处理众多的并发客户服务请求。 2 2 1 客户端和服务器消息间的消息协议 消息协议定义了客户端和服务器端通信的数据格式。客户端把用户请求按照消 息格式的规则打包发送给数据库服务器,数据库服务器收到消息包后按照消息协议 的规则解开消息包,取出实体消息,然后由进程处理,处理完成后,再将数据打包 发送给客户端。客户端和服务器都按相同的方式,打包数据,打包后的数据称为一 个完整的消息。消息由两部分组成,一部分是消息头,另一部分是消息体。消息头 记录了消息体的类型和数据长度等信息。不论是客户端还是服务器端都是根据消息 头的内容来决定以何种方式来处理消息体的。消息头的定义如下: 1 3 华中科技大学硕士学位论文 t y p e d e fs t r u c tm s g h e a d s t r u c tm s g _ h e a d t : s t r u e tm s g h e a d s t r u e r u l i n ts t m t i d : u s i n tc r n d : u l i n t1 e n : u s i n tc o l n u m u s i n t p a r a n u m : d d w o r d r o w n u m ; u l i n t s q l c o d e : u li n te x e c d i r e c t : c h a rc r c : ) : 下面解释一下各个字段的含义。 1 字段s t m t i d 是s q l 语句的内部标识。 2 字段c m d 是客户端与服务器端传递的消息类型。服务器根据消息类型做不同 的处理。这个字段取值样本如下: # d e f i n e c m i ) _ l o g i n ( u s i n t ) 1 # d e f in e c m d l o g o u t ( u sin t ) 2 # d e f i n er e tb a s e( u s i n t ) 1 2 7 # d e f i n e r e t d d l c d b( u s i n t ) ( r e t b a s e + 1 ) 以c m d 开头的宏,标识的是客户端发往服务器端的消息;以r e t 开头的宏,标 识的是服务器发往客户端的消息。消息分为几大类:d d l 消息、d 1 4 l 消息和c o n t r o l 消息等。 3 字段l e n 是消息块的长度,不包括消息头的长度。 4 字段c o l n u m 在服务器返回s e l e c t 查询结果时使用,表示的是查询结果包含 的行数。 5 字段p a r a n u m 在执行动态s q l 语句时使用,表示的是所需的参数个数。 6 字段s q l c o d e 表示语句执行的结果,如果语句成功执行,其值将大于零:如果 14 华中科技大学硕士学位论文 语句执行失败,其值将小于零。 7 字段e x e c d i r e e t 表示s q l 语句是静态s q l 语句还是动态s q l 语句。 8 字段c r c 循环冗余校验码,检查消息在传递过程中是否出错。 当服务器收到客户端传来的消息,它将生成下面的一个节点把消息缓存在其中。 s t r u c tc o p s t r u t t t e n u mp o r t t y p e t y p e : c o m mh a n d l eh a n d l e : u s i n t p o r t h u m : u l i n tt i m e o u t : s y s n a m e - th o s t r a m e : b y t ei n n e r d a t a m s g m a x l e n : byte*data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输电线路迁改项目设备安装调试方案
- 2025四川九州电子科技股份有限公司招聘软件开发岗(平台)2人笔试历年备考题库附带答案详解试卷3套
- 2025北京东城文旅发展集团有限公司应届高校毕业生招聘7人笔试历年常考点试题专练附带答案详解试卷3套
- 2025中国化学工程集团有限公司校园招聘500人笔试历年常考点试题专练附带答案详解试卷3套
- 封丘公务员考试试题及答案
- 楚雄州卫健委公务员考试试题及答案
- 健康养老信息化建设方案
- 产城融合示范区安置区项目建设工程方案
- 北京区卫健委公务员考试试题及答案
- 安置房项目规划设计方案
- 2025年国家开放大学(电大)《公司治理与内部控制》期末考试备考题库及答案解析
- DB15∕T 3413-2024 住宅小区和商业用房供配电设施规范
- ICU专科护士学习汇报
- 排水管网错接混接专项整改方案
- 测量安全注意事项培训课件
- 2025年传统糖画制作技艺传承师认证考试模拟题集及解析
- 肠菌移植应用于肿瘤治疗中国专家共识(2025年版)解读
- 住建方面营商环境方面存在的问题及整改措施
- 消防知识竞赛题库及答案(共60题)
- 彝族简介教学课件
- 中医经络养生课件
评论
0/150
提交评论