©Silberschatz,KorthandSudarshan18.1DatabaseSystemConcepts第18章:数据库系统体系结构集中式系统客户--服务器系统并行系统分布式系统网络类型©Silberschatz,KorthandSudarshan18.2DatabaseSystemConcepts集中式系统单机系统上运行,不与其他计算机系统交互.通用计算机系统:一个或若干个CPU及若干设备控制器通过总线连接共享内存.单用户系统(例如个人计算机或工作站):桌上型,单用户,通常只有一个CPU,一个或两个硬盘;OS可能只支持一个用户.多用户系统:更多硬盘,内存,多CPU,以及多用户OS.为通过终端连接到系统的许多用户提供服务.常称为服务器系统.©Silberschatz,KorthandSudarshan18.3DatabaseSystemConcepts集中式计算机系统©Silberschatz,KorthandSudarshan18.4DatabaseSystemConcepts客户-服务器系统服务器系统响应若干个客户机系统的请求,一般结构如下:©Silberschatz,KorthandSudarshan18.5DatabaseSystemConcepts客户-服务器系统(续)数据库功能分为:后端:管理存取结构,查询处理与优化,并发控制和恢复.前端:提供各种工具,如表格,报表制作,图形用户界面.前端与后端的交互通过SQL或应用程序界面.©Silberschatz,KorthandSudarshan18.6DatabaseSystemConcepts客户-服务器系统(续)用工作站或个人计算机通过网络连接后端服务器,取代了大型主机.好处是:性价比高灵活性用户界面更好易于维护服务器系统大致可分为两类:事务服务器:广泛用于关系型数据库系统中数据服务器:用于面向对象数据库系统©Silberschatz,KorthandSudarshan18.7DatabaseSystemConcepts事务服务器亦称为查询服务器系统或SQL服务器系统;客户发送请求给服务器系统执行事务,结果在送回给客户.SQL请求通过远程过程调用(RPC)机制传给服务器.事务RPC允许多个RPC调用共同构成一个事务.ODBC是一个C语言应用程序界面标准(Microsoft),用于连接服务器,发送SQL请求,接收结果.JDBC标准类似ODBC,用于Java©Silberschatz,KorthandSudarshan18.8DatabaseSystemConcepts事务服务器进程结构典型的事务服务器包含多个进程在共享内存中存取数据.服务器进程接收用户查询(事务),执行查询并返回结果进程可以是多线程的,允许单个进程并发执行多个用户查询通常有多个多线程服务器进程锁管理器进程详见后数据库写进程不断输出更新后的缓冲块到磁盘©Silberschatz,KorthandSudarshan18.9DatabaseSystemConcepts事务服务器进程(续)日志写进程服务器进程向日志记录缓冲区增加日志记录日志写进程将日志记录输出到稳定存储器.Checkpoint进程执行周期性的checkpoints进程监控进程监控其他进程,当其他进程失败时采取恢复行动E.g.中止正在由服务器进程执行的任何事务并重启之©Silberschatz,KorthandSudarshan18.10DatabaseSystemConcepts事务系统进程(续)©Silberschatz,KorthandSudarshan18.11DatabaseSystemConcepts事务系统进程(续)共享内存包含共享数据缓冲池(Bufferpool)锁表日志缓冲区Cached查询计划(如果同一查询再次提出可以重用)所有数据库进程都可存取共享内存为确保两个进程不同时存取同一数据结构,数据库系统实现互斥,通过操作系统信号灯原子指令©Silberschatz,KorthandSudarshan18.12DatabaseSystemConcepts事务系统进程(续)为避免锁请求/授予的进程间通信开销,每个数据库进程都直接操作锁表数据结构(Section16.1.4)而不是向锁管理器进程发送请求利用信号量,或更普通的用原子指令,来确保锁表上的互斥如果一个锁可以获得,锁表在共享内存中直接更新如果一个锁不能立即获得,则在锁表中记录锁请求,而进程(或线程)等待锁被授予当锁被释放,释放进程更新锁表以记录锁的释放及将锁授予等待请求(如果有的话)等待锁的进程/线程可能:连续扫描锁表以检查锁授予情况,或者利用操作系统信号量机制来等待一个信号量.–信号量标识记录在锁表中–当锁被授予,释放进程点亮信号量以通知等待进程/线程继续执行死锁检测仍然要用锁管理器进程©Silberschatz,KorthandSudarshan18.13DatabaseSystemConcepts数据服务器用在LAN中,客户机与服务器之间有高速连接,客户机在处理能力上可与服务器相比,并且要执行的任务是计算密集的.将数据送到执行处理的客户机,再将结果送回到服务器.这种体系结构要求在客户机具有完全的后端功能.在许多面向对象数据库系统中使用问题:页传送还是项传送封锁数据缓存锁缓存©Silberschatz,KorthandSudarshan18.14DatabaseSystemConcepts数据服务器(续)页传送vs项传送较小传送单元更多消息与请求项一道预读取相关项是值得的页传送可视为预读取的一种形式封锁由于消息延迟,从服务器请求及获得锁的开销很高可以授予请求及预读取项上的锁;对于页传送,事务被授予整个页上的锁.预读取项上的锁可被服务器要求收回,如果预读取项不被使用的话由客户事务返回锁.当发生锁冲突时页上的锁可降级为页内项上的锁.然后未使用项上的锁即可返回给服务器.©Silberschatz,KorthandSudarshan18.15DatabaseSystemConcepts数据服务器(续)数据高速缓存数据可被高速缓存到客户端,甚至跨事务存在但在使用前要检查数据是最新的(高速缓存一致性)可以在请求数据项封锁时进行检查锁高速缓存锁甚至可以被客户机系统跨事务保持事务可以在本地获得被高速缓存的锁而不需联络服务器当服务器收到冲突的锁请求时可从客户机回叫锁.一旦没有本地事务使用该锁,客户机就送回该锁.类似于降级,但可跨事务.©Silberschatz,KorthandSudarshan18.16DatabaseSystemConcepts并行系统并行数据库系统由多个处理器和多个磁盘通过高速互连网络连接而组成.粗粒度并行机由少量强大的处理器组成大规模并行或细粒度并行机利用了成千上万的较小处理器.两个主要的性能指标:吞吐量---在给定时间区间可以完成的任务数量响应时间---单个任务从提交到完成所花的时间©Silberschatz,KorthandSudarshan18.17DatabaseSystemConcepts加速比和扩展比加速比:将在小系统上执行的固定大小的问题拿到N倍大的系统上执行.度量方法:加速比=小系统所花时间大系统所花时间如果等于N则称加速比是线性的.扩展比:同步增加问题和系统的大小用N-倍大的系统来执行N-倍大的任务度量方法:扩展比=小系统小问题所花时间大系统大问题所花时间如果等于1则称扩展比是线性的.©Silberschatz,KorthandSudarshan18.18DatabaseSystemConcepts加速比加速比©Silberschatz,KorthandSudarshan18.19DatabaseSystemConcepts扩展比扩展比©Silberschatz,KorthandSudarshan18.20DatabaseSystemConcepts批量与事务扩展批量扩展:单个大任务;典型的如数据库查询和科学模拟.使用N-倍大的计算机计算N-倍大的问题.事务扩展:由独立用户提交许多小查询到共享数据库;典型的如事务处理系统和分时系统.N-倍多的用户提交请求(因此有N-倍多的请求)到N-倍大的计算机上的N-倍大的数据库.非常适合于并行执行.©Silberschatz,KorthandSudarshan18.21DatabaseSystemConcepts影响加速比和扩展必的因素加速比和扩展比经常是亚线性的,原因是:启动代价:如果并行度很高的话,启动多个进程的代价可能主宰计算时间.干扰:访问共享资源的进程(如系统总线,磁盘,锁)相互竞争,因此要花时间等待其他进程,而不是执行有用的工作.偏斜:增加并行度会增加对并行执行的任务的服务时间的偏差.总的执行时间是由最慢的任务决定的.©Silberschatz,KorthandSudarshan18.22DatabaseSystemConcepts互连网络体系结构总线.系统组件通过单一通信总线发送和接受数据;随着并行程度增加伸缩性不好.网格(Mesh).组件构成网格(grid)中的节点,每个组件都连接到它的所有邻接组件随着组件数目增加,通信链也增加,伸缩性较好.但是可能需要2(n–1)跳以发送消息到一个节点(或者当网格边缘有绕接时为n).超立方体.组件按二进制编号;若两个组件的二进制表示恰好在一位上不同则互连.n个组件中的每一个都与log(n)个其他组件相连,并能经由最多log(n)个链接到达另一节点;减少了通信延迟.©Silberschatz,KorthandSudarshan18.23DatabaseSystemConcepts互连体系结构©Silberschatz,KorthandSudarshan18.24DatabaseSystemConcepts并行数据库体系结构共享内存–处理器共享同一内存共享磁盘–处理器共享同一磁盘无共享–处理器既不共享内存也不共享磁盘层次式–上述体系结构的混合©Silberschatz,KorthandSudarshan18.25DatabaseSystemConcepts并行数据库体系结构©Silberschatz,KorthandSudarshan18.26DatabaseSystemConcepts共享内存处理器和磁盘通过总线或互连网络存取共同的内存.极其高效的处理器间通信—共享内存中的数据可被任何处理器存取,不需用软件来移动数据.体系结构在超过32或64个处理器时伸缩性不好,因为总线或互连网络成为瓶颈广泛用于较低并行度(4到8).©Silberschatz,KorthandSudarshan18.27DatabaseSystemConcepts共享磁盘所有处理器都可通过互连网络直接存取所有磁盘,但是处理器具有私有内存.内存总线不是瓶颈体系结构提供了一定的容错度—如果一个处理器故障,其他处理器可以接过其任务.因为数据库驻留在磁盘上的,可以被所有处理器存取.实例:IBMSysplex,运行Rdb(现为OracleRdb)的DEC(现在是Compaq的一部分)群集都是早期的商品化应用瓶颈现在发生在连到磁盘子系统的互连网络.共享磁盘系统对一定的较大处理器数目具有伸缩性,但是处理器间通信较慢.©Silberschatz,KorthandSudarshan18.28DatabaseSystemConcepts无共享节点由一个处理器,内存,一个或多个磁盘组成.一个节点上的处理器利用互连网络与另一个节点上的处理器通信.节点的作用是作为该节点所拥有的磁盘上数据的服务器.实例:Teradata,Tandem,Oracle-nCUBE从本地磁盘存取的数据(以及本地内存存取)不通过互连网络,因而将