如何为大数据处理构建高性能Hadoop集群
越来越多的企业开始使用Hadoop来对大数据进行处理分析,但Hadoop集群的整体性能却取决于CPU、内存、网络以及存储之间的性能平衡。而在这篇文章中,我们将探讨如何为Hadoop集群构建高性能网络,这是对大数据进行处理分析的关键所在。
关于Hadoop
“大数据”是松散的数据集合,海量数据的不断增长迫使企业需要通过一种新的方式去管理。大数据是结构化或非结构化的多种数据类型的大集合。而 Hadoop则是Apache发布的软件架构,用以分析PB级的非结构化数据,并将其转换成其他应用程序可管理处理的形式。Hadoop使得对大数据处理成为可能,并能够帮助企业可从客户数据之中发掘新的商机。如果能够进行实时处理或者接近实时处理,那么其将为许多行业的用户提供强大的优势。
Hadoop是基于谷歌的MapReduce和分布式文件系统原理而专门设计的,其可在通用的网络和服务器硬件上进行部署,并使之成为计算集群。
Hadoop模型
Hadoop的工作原理是将一个非常大的数据集切割成一个较小的单元,以能够被查询处理。同一个节点的计算资源用于并行查询处理。当任务处理结束后,其处理结果将被汇总并向用户报告,或者通过业务分析应用程序处理以进行进一步分析或仪表盘显示。
为了最大限度地减少处理时间,在此并行架构中,Hadoop“moves jobs to data”,而非像传统模式那样“moving data to jobs”。这就意味着,一旦数据存储在分布式系统之中,在实时搜索、查询或数据挖掘等操作时,如访问本地数据,在数据处理过程中,各节点之间将只有一个本地查询结果,这样可降低运营开支。
Hadoop的最大特点在于其内置的并行处理和线性扩展能力,提供对大型数据集查询并生成结果。在结构上,Hadoop主要有两个部分:
Hadoop分布式文件系统(HDFS)将数据文件切割成数据块,并将其存储在多个节点之内,以提供容错性和高性能。除了大量的多个节点的聚合I/O,性能通常取决于数据块的大小——如128MB。而传统的Linux系统下的较为典型的数据块大小可能是4KB。
MapReduce引擎通过JobTracker节点接受来自客户端的分析工作,采用“分而治之”的方式来将一个较大的任务分解成多个较小的任务,然后分配给各个TaskTrack节点,并采用主站/从站的分布方式(具体如下图所示):
Hadoop系统有三个主要的功能节点:客户机、主机和从机。客户机将数据文件注入到系统之中,从系统中检索结果,以及通过系统的主机节点提交分析工作等。主机节点有两个基本作用:管理分布式文件系统中各节点以及从机节点的数据存储,以及管理Map/Reduce从机节点的任务跟踪分配和任务处理。数据存储和分析处理的实际性能取决于运行数据节点和任务跟踪器的从机节点性能,而这些从机节点则由各自的主机节点负责沟通和控制。从节点通常有多个数据块,并在作业期间被分配处理多个任务。
部署实施Hadoop
各个节点硬件的主要要求是市县计算、内存、网络以及存储等四个资源的平衡。目前常用的并被誉为“最佳”的解决方案是采用相对较低成本的旧有硬件,部署足够多的服务器以应对任何可能的故障,并部署一个完整机架的系统。
Hadoop模式要求服务器与SAN或者NAS进行直接连接存储(DAS)。采用DAS主要有三个原因,在标准化配置的集群中,节点的缩放数以千计,随着存储系统的成本、低延迟性以及存储容量需求不断提高,简单配置和部署个主要的考虑因素。随着极具成本效益的1TB磁盘的普及,可使大型集群的TB级数据存储在DAS之上。这解决了传统方法利用SAN进行部署极其昂贵的困境,如此多的存储将使得Hadoop和数据存储出现一个令人望而却步的起始成本。有相当大一部分用户的Hadoop部署构建都是采用大容量的DAS服务器,其中数据节点大约1-2TB,名称控制节点大约在1-5TB之间,具体如下图所示:
对于大多数的Hadoop部署来说,基础设施的其他影响因素可能还取决于配件,如服务器内置的千兆以太网卡或千兆以太网交换机。上一代的CPU和内存等硬件的选择,可根据符合成本模型的需求,采用匹配数据传输速率要求的千兆以太网接口来构建低成本的解决方案。采用万兆以太网来部署Hadoop也是相当不错的选择。
万兆以太网对Hadoop集群的作用
千兆以太网的性能是制约Hadoop系统整体性能的一个主要因素。使用较大的数据块大小,例如,如果一个节点发生故障(甚至更糟,整个机架宕机),那么整个集群就需要对TB级的数据进行恢复,这就有可能会超过千兆以太网所能提供的网络带宽,进而使得整个集群性能下降。在拥有成千上万个节点的大型集群中,当运行某些需要数据节点之间需要进行中间结果再分配的工作负载时,在系统正常运行过程中,某个千兆以太网设备可能会遭遇网络拥堵。
每一个Hadoop数据节点的目标都必须实现CPU、内存、存储和网络资源的平衡。如果四者之中的任意一个性能相对较差的话,那么系统的潜在处理能力都有可能遭遇瓶颈。添加更多的CPU和内存组建,将影响存储和网络的平衡,如何使Hadoop集群节点在处理数据时更有效率,减少结果,并在Hadoop集群内添加更多的HDFS存储节点。
幸运的是,影响CPU和内存发展的摩尔定律,同样也正影响着存储技术(TB级容量的磁盘)和以太网技术(从千兆向万兆甚至更高)的发展。预先升级系统组件(如多核处理器、每节点5-20TB容量的磁盘,64-128GB内存),万兆以太网卡和交换机等网络组件是重新平衡资源最合理的选择。万兆以太网将在Hadoop集群证明其价值,高水平的网络利用率将带来效益更高的带宽。下图展示了Hadoop集群与万兆以太网的连接:
许多企业级数据中心已经迁移到10GbE网络,以实现服务器整合和服务器虚拟化。随着越来越多企业开始部署Hadoop,他们发现他们完全不必要大批量部署1U的机架服务器,而是部署更少,但性能更高的服务器,以方便扩展每个数据节点所能运行的任务数量。很多企业选择部署2U或4U的服务器(如戴尔 PowerEdge C2100),每个节点大约12-16个核心以及24TB存储容量。在这种环境下的合理选择是充分利用已经部署的10GbE设备和Hadoop集群中的 10GbE网卡。
在日常的IT环境中构建一个简单的Hadoop集群。可以肯定的是,尽管有很多细节需要微调,但其基础是非常简单的。构建一个计算、存储和网络资源平衡的系统,对项目的成功至关重要。对于拥有密集节点的Hadoop集群而言,万兆以太网能够为计算和存储资源扩展提供与之相匹配的能力,且不会导致系统整体性能下降。
数据库物理模型设计的目标是根据选定的Oracle数据库系统特点和航空物探数据管理与服务的业务处理需求,确定航空物探数据库最优的物理环境、存取方法和存储结构。即通过数据库物理设计,以便达到物理数据库结构的优化,使得在数据库上运行的各种事务响应时间少、存储空间利用率高、事务吞吐率大。
一、数据库布局
航空物探信息系统的维护数据(部门、岗位、人员、人员权限、数据入库检查规则及数据字典等)相对比较稳定。入库前数据需经过各种检查校对,确认数据正确后才能归档,存入航空物探资料数据库,所以存入资料库前的数据可能经常需要修改和删除,相对变化较大;而存入资料数据库中的数据一般不允许修改和删除,以免误操作破坏资料库数据造成损失。
图2-12 航空物探数据库逻辑模型
图2-13 航空物探数据库布局与数据采集流程图
据此,我们采用图2-13所示的数据库数据采集流程,并将航空物探数据库分为资料采集数据库、资料数据库、系统维护数据库分别进行存储和管理,实现数据的统一管理和统一使用,便于数据入库和易于维护等。
航空物探资料数据库是航空物探所有数据最终存储的场所。资料采集数据库是数据归档存入资料数据库前的临时“集散地”,在此接收各项检查,在确认数据无误后归档到资料数据库,然后删除资料采集数据库中已归档的数据。此外,资料采集数据库中还保存数据入库、维护、检查日志及归档记录。
系统维护数据库,存储系统维护信息(如系统功能、数据库表清单等)、安全信息(如信息系统用户的角色、权限、授权的系统功能等),数据字典、入库数据检查规则等。将其与航空物探数据分开,有利于系统维护和管理。
二、数据库空间设置
数据库空间设置包括磁盘空间设置、应用系统表空间设置、撤销表空间、临时表空间、日志空间和索引空间设置。
(一)磁盘空间设置
磁盘空间设置的目标:磁盘性能不能阻碍实现数据库性能,数据库磁盘必须专用于数据库文件,否则非数据库将会影响到数据库性能,且磁盘空间必须满足恢复和性能的要求。
航空物探数据库服务器为IBM P620小型机,8块硬盘,每块硬盘36GB空间,每块物理磁盘建立一个文件系统。为了提高磁盘的反应时间和寻道时间,提高I/O的存取效率,除了一块硬盘用于UNIX操作系统外,其余7块磁盘分别存放资料采集数据库、系统维护数据库-日志文件,资料数据库及资料数据库的大字段数据、索引、回滚段和数据日志文件。
(二)应用系统表空间设置
信息系统数据采集过程对数据的事务操作比较频繁,经常进行数据插入(新数据入库)、修改(入库数据有误)和删除操作(数据重新导入或归档入库),因此航空物探资料采集数据库所在的表空间会很活跃。为了不影响其他I/O的竞争,同时也可以提高数据入库的操作效率(50多年的历史数据需要集中入库),分配一个磁盘空间(36GB)为采集库的表空间。由于采集数据归档入资料库后被删除,同时进行数据入库的项目也不是很多,虽仍保留所有的采集日志数据,一个磁盘空间也足够使用。
航空物探资料数据库的二维表和Oracle大字段(BLOB)分别存放在不同的物理磁盘(每个磁盘36GB)上,对同时存在有表格数据和大字段数据的数据库表(如航迹线数据)时,可以提高磁盘I/O效率。随着数据入库的项目越来越多,需要增加相应的物理磁盘或磁盘阵列。
系统维护数据库相对稳定,占用磁盘空间约500 M左右。由于系统磁盘有限,把日志文件存放该磁盘中。
(三)撤销表和临时表空间的设置
在Oracle数据库中,撤销的目的是确保事务的回退和恢复。撤销参数有UNDO_MANAGEMENT、UNDO_TABLESPACE和UNDO_RETENTION。
UNDO_MANAGEMENT参数用于数据库中管理撤销数据的方式,航空物探数据库设置为自动模式(auto)。
UNDO_TABLESPACE参数用于指定数据库中保存撤销数据的撤销表空间名称,航空物探数据库撤销表空间名称为UNDO_ARGS_TBSPACE,空间大小设置为20GB,以确保在保留时间内进行恢复。
UNDO_RETENTION参数用于指定已经提交事务的撤销数据在能够覆盖之前应该保留多长时间,本数据库系统设置为60 min。
临时表空间是用以存储大量的排序,与撤销表空间存放在一个物理磁盘上,本数据库系统临时表空间设置为500 M。
(四)日志空间设置
日志的主要功能是记录对数据库已做过的全部操作。在系统出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以不会丢失已有操作结果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,航空物探数据库系统分别在一个独立磁盘和系统维护库磁盘中存放日志文件。若系统出现故障,在下次打开数据库时Oracle数据库系统自动用日志文件中的信息来恢复数据库文件。
根据航空物探数据库信息系统同时登录的用户数及使用的功能,将日志文件大小设置为10GB。
(五)索引表空间设置
为了提高航空物探信息系统的查询和统计速度,把所有索引空间与应用表空间完全分开,从而提高I/O存取效率。航空物探索引表空间大小设置为10GB。
聚集是表的一种存储方法,一般每个基本表是单独组织的,但对逻辑上经常在一起查询的表,在物理上也邻近存放,这样可减少数据的搜索时间,提高性能。
当几个关系(表)以聚集方式组织时,是通过公共属性的值为表聚集的依据。航空物探数据库系统是以项目标识(PROJ_ID)建立聚集的,所有涉及项目标识的数据库表直接引用项目标识聚集。航空物探聚集表空间与索引表空间相同。
三、数据库参数设置
在数据库创建前需要对如下数据库参数进行设置,航空物探参数文件名为Initoraargsora,各种参数设置如下:
航空物探信息系统建设
四、内存设置
航空物探数据库服务器物理内存为4GB,除部分用于系统开销外,其余全部用于数据库。
Oracle使用共享系统全局区(System Global Area,SGA)内存来管理内存和文件结构,包含DB_block_Buffers、DB_cache_size、Shared_pool_size、Log_Buffer参数。航空物探数据库系统的全局区内存参数设置如下。
DB_block_Buffers参数为SGA中存储区高速缓存的缓冲区数目,每个缓冲区的大小等于参数DB_block_size的大小,DB_block_Buffers=19200(约300 MB)。
Shared_pool_size参数为分配给共享SQL区的字节数,是SGA大小的主要影响者,Shared_pool_size=1228800000(12GB)。
DB_cache_size参数是SGA大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O,DB_cache_size=1024000000(1GB)。
Log_Buffer参数为重做日志高速缓存大小,主要进行插入、删除和修改回退操作,Log_buffer=5120000(5MB)。
五、优化设置
由于航空物探信息系统的采集软件和应用软件是采用MSNET C#进行开发的,应用程序与数据库之间的连接有传统的ODBC和OLE DB两种方式。为了支持ODBC在OLE DB技术上建立了相应的OLE DB到ODBC的调用转换,而使用直接的OLE DB方式则不需转换,从而提高处理速度。
在建立数据库表时,参数Pctfree和Pctused设置不正确可能会导致数据出现行链接和行迁移现象,即同一行的数据被保存在不同的数据块中。在进行数据查询时,为了读出这些数据,磁头必须重新定位,这样势必会大大降低数据库的执行速度。因此,在创建表时应充分估计到将来可能出现的数据变化,正确地设置这两个参数,尽量减少数据库中出现的行链接和行迁移现象。
航空物探资料采集数据库表的插入、修改和删除的频率较高,Pctfree设置为20,Pctused设置为40;系统维护数据库表相对稳定,Pctfree设置为10,Pctused设置为15;资料数据库表除了增加数据外基本不进行修改和删除操作,Pctfree设置为10,Pctused设置为5。
六、扩展性设置
多CPU和并行查询PQO(Parallel Query Option)方式的利用:CPU的快速发展使得Oracle越来越重视对多CPU的并行技术的应用,一个数据库的访问工作可以用多个CPU相互配合来完成。对于多CPU系统尽量采用并行查询选项方式进行数据库操作。航空物探数据库服务器为2个CPU,在程序查询中采用了并行查询的方式。
在航空物探工作量统计、飞行小时统计、测量面积统计和岩石物性统计中,为了加快统计效率,在相应的查询语句中增加了并行查询语句。
随着航空物探高精度测量程度的不断提高,测量数据将越来越大。为了满足航空物探查询效率及发展,将航磁测量数据与校正后航磁测量数据按比例尺分1∶20 万以下、20万~50万、1∶50万以上分别存放3张不同的数据库表。
七、创建数据库
在完成数据库布局、空间设置、内存设置、数据库参数设置、扩展性设置和优化设置后,进行航空物探数据库物理模型设计,即航空物探数据库实体创建。由于航空物探空间数据库逻辑模型是采用ESRI提供的ArcGIS UML构建的Geodatabase模型,因此,使用ESRI公司提供的CaseTools将航空物探数据UML模型图转成空间数据库(Geodatabase)实体(图2-14)。
航空物探属性数据库表(二维表)是采用Power Designer数据库设计平台直接把数据库关系模型生成数据库脚本来创建的。
经过数据库的概念设计、逻辑设计和物理设计,最终生成航空物探数据库。
图2-14 航空物探数据库物理模型实现
八、空间数据的索引机制
对于海量的空间数据库而言,数据库的操作效率是关系到数据库成败的关键问题。为了提高数据的访问、检索和显示速度,数据在加载到数据库时,要素类数据建立了空间索引,栅格数据构建了金字塔结构,对象类数据采用与数据库直接联接的访问机制。
(一)空间索引
为了提高要素类数据的查询性能,在建立航空物探空间数据库时,创建了空间索引机制。常用的空间索引有格网索引、R树索引、四叉树索引等。Geodatabase采用格网索引方式。所谓格网索引是将空间区域划分成适合大小的正方形格网,记录每一个格网内所包含的空间实体(对象)以及每一个实体的封装边界范围,即包围空间实体的左下角和右上角坐标。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后通过格网编号,就可以快速检索到所需的空间实体。
确定适合的格网级数、单元大小是建立空间格网索引的关键。格网太大,在一个格网内有多个空间实体,查询检索的准确度降低。格网太小,则索引数据量成倍增长和冗余,检索的速度和效率较低。数据库的每一数据层采用不同大小、不同级数的空间索引格网单元,但每层最多级数不能超过三级。格网单元的大小不是一个确定性的值,需要根据对象的大小确定。空间索引格网的大小与检索准确度之间的关系如图2-15所示。
选择格网单元的大小遵循下列基本原则:
1)对于简单要素的数据层,尽可能选择单级索引格网。减少RDBMS搜索格网单元索引的级数,缩短空间索引搜索的过程,例如航迹线要素类。
图2-15 索引格网大小与检索准确度的关系
2)如果数据层中的要素封装边界大小变化比较大,应选择2或3级索引格网。Geodatabase最多提供三级格网单元。每一要素封装边界在适合的级内,减少了每一封装边界有多个格网的可能性。在空间索引搜索过程中,RDBMS则必须搜索所有3个格网单元级,这将消耗大量的时间。
3)若用户经常对图层执行相同的查询,最佳格网的大小应是平均查寻空间范围的15倍。
4)格网的大小不能小于要素封装边界的平均大小,为了减少每个格网单元有多个要素封装边界的可能性,格网单元的大小应取平均格网单元的3倍。最佳格网单元的大小可能受图层平均查询的影响。
空间域是按照要素数据集定义的,空间索引格网是按照要素类设置的。它们都是在创建Geodatabase数据库时设置,并一经设置,中间不许改变;所以一定要在充分分析数据的情况下确定它们的值。航空物探数据主要是简单要素类,空间跨度为70°。根据上述原则,航空物探数据选择单级索引格网,格网大小为20°。
(二)金字塔结构
金字塔结构的核心是将栅格数据逐级进行抽稀,形成多级分辨率的重采样数据,并将其分割成块,按一定的文件格式(金字塔文件格式)存储成磁盘文件;在以后进行图像显示处理时,只需将要显示的部分所覆盖的块从磁盘文件直接读进内存缓冲区显示即可。从金字塔的所有层中寻找与所要求显示的比例相近或匹配的一层,并将该层的从某一点起的一定范围的图像所覆盖的所有块加载到内存缓冲区,提取所需部分并形成图像。
金字塔算法(图2-16)是通过获取显示时所需要的一定分辨率的数据来提高显示速度。使用金字塔数据格式后,在显示全图时仅需要显示一个较低分辨率的数据,这样既能加快显示速度,又不会影响显示效果。放大图像,尽管显示图像分辨率提高,由于显示区域减小,所以显示速度不会下降。如果没有为栅格数据建立金字塔数据,则每次显示都会读取整个数据,然后进行重采样得到显示所需要的分辨率,明显地降低了显示速度。
图2-16 金字塔压缩示意图
金字塔数据重采样方式有:最近邻法、双线性内插和立方卷积。其中最近邻法适用于离散数据,而双线性内插法和立方卷积法适合于连续数据。
在ArcGIS Engine中提供了IRasterPyramid和IRasterPyramid2接口来实现金字塔数据的建立,而建立的数据保存在rrd格式的文件中。
(三)空间域定义
空间域是指数据的有效空间范围,即Geodatabase数据库的最大等效坐标的值域范围,其定义主要是指比例系数和Min X、Min Y的计算。
因为使用整数比浮点数有更高的压缩率,并且对整数进行二进制搜索比较快,所以多用户Geodatabase以4字节正整数存储坐标,其最大值为32位正整数所能表示的范围是214亿(2147483647),整数的范围称为空间域。在创建Geodatabase数据库时需要定义合适的比例系数。大的整数值将消耗大量的计算机物理内存,所以选定的比例系数最好不要大于必须的比例系数。空间域随坐标系的单位变化而变化。
比例系数和空间域之间成反比例关系,比例系数越大(存储单位越小),表达的空间域也越小。为了使目标数据都存储在系统中,需要谨慎地设置比例系数。将目标数据的宽度和高度较适中的数值乘以比例系数,如果结果小于214亿,则比例系数是合适的。
航空物探数据模型是为我国的航空物探行业数据建库设计的,它支持的空间数据的坐标范围为我国领土覆盖的海陆空间,最低纬度为赤道。根据概念设计的分析,航空物探数据模型采用的是地理坐标系,坐标系单位是度,基准是Beijing_1954,要求存储的坐标数据精度达到001 m。在赤道处,赤道圆周长为400756946 m,则每度弧长=400756946×100/360 cm=11132137389 cm,即1 cm对应8983000883E-8°。所以,航空物探数据模型的比例系数取为898E-8,即存储单位为898E-8°,可满足1 cm精度要求。
将空间域移动到目标数据范围之前,首先找到空间域在存储单位的中心位置,目的是在必要时向各个方向扩展。4字节正整数可表示的坐标范围:2147483647×898E-8=19284°。我国的领土范围是东经70°~140°,北纬0°~60°。所以,选取的比例系数是合适的。把空间域坐标系中心定为90°,然后,计算空间域的Min X、Min Y。
航空物探信息系统建设
航空物探信息系统建设
所以坐标的存储数据是:
航空物探信息系统建设
航空物探信息系统建设
由于ORACLE数据库产品是当前数据库技术的典型代表,她的产品除了数据库系统外,还有应用系统、开发工具等。刚接触Oracle的人员都有这样的感觉:Oracle的产品太多,每个产品内容精深,不知道从哪儿开始学才好。为了用少量时间更好地理解和使用oracle 数据库系统,有必要对oracle的一些基本术语及概念进行了解,下面给出一些在管理中经常用到的概念和术语,供初学者快速了解Oracle数据库系统提供方便。
§11 ORACLE7和ORACLE8
ORACLE7是一种完全的关系数据库系统,它不支持面向对象。
ORACLE8 则是一个引入面向对象的数据库系统,它既非纯的面向对象的数据库也非纯的关系数据库,它是两者的结合,因此叫做“对象关系数据库”。
§12 ORACLE8 特点
ORACLE8 于 1997年6月正式发布,它包括了几乎所有的数据库技术,因此被认为是未来企业级主选数据库之一。主要有以下特点:
1对象/关系模型
ORACLE8对于对象模型采取较为现实和谨慎的态度,使用了对象/关系模型,即在完全支持传统关系模型的基础上,为对象机制提供了有限的支持。ORACLE8不仅能够处理传统的表结构信息,而且能够管理由C++,Smalltalk 以及其它开发工具生成的多媒体数据类型,如文本,视频,图形,空间对向等。这种做法允许现有软件开发产品与工具软件及ORACLE8应用软件共存,保护了客户的投资。
2数据库服务器系统的动态可伸缩性
ORACLE8引入了连接存储池(connection polling)和多路复用(multiplexing)机制,提供了对大型对象的支持。当需要支持一些特殊数据类型时,用户可以创建软件插件(catridge )来实现。ORACLE8采用了高级网络技术,提高共享池和连接管理器来提高系统的可括性,容量可从几 GB 到 几百 TB 字节,可允许10万用户同时并行访问,ORACLE 的数据库中每个表可以容纳 1000列,能满足目前数据库及数据仓库应用的需要。
ORACLE 公司称,ORACLE8可以支持达 512PB的数据量。但目前还未有哪一家用户的数据库的数据量达到这个数量。下面是几种常用数据量的等价关系:
1MB = 1024 KB
1GB = 1Gigabyte Byte = 1024 MB
1TB = 1TeraByte = 1024 GB = 10241024MB
1PB = 1PeraByte = 1024 TB = 1024 1024 1024 MB
1EB = 1ExaByte = 1024 PB = 1024 1024 1024 1024 MB
3系统的可用性和易用性
ORACLE8提供了灵活多样的数据分区功能,一个分区可以是一个大型表,也可以是索引易于管理的小块,可以根据数据的取值分区。有效地提高了系统操作能力及数据可用性 ,减少I/O 瓶颈。ORACLE8还对并行处理进行了改进,在位图索引,查询,排序,连接和一般索引扫描等操作引入并行处理,提高了单个查询的并行度。ORACLE8通过并行服务器(Parallel Server Option )来提高系统的可用性。
4系统的可管理性和数据安全功能
ORACLE8提供了自动备份和恢复功能,改进了对大规模和更加细化的分布式操作系统的支持,如加强了SQL 操作复制的并行性。为了帮助客户有效地管理整个数据库和应用系统,ORACLE还提供了企业管理系统(ORACLE Enterprise Manager),数据库管理员可以从一个集中控制台拖放式图形用户界面管理ORACLE的系统环境。
ORACLE8通过安全服务器中提供的安全服务,加强了ORACLE Web Server 中原有的用户验证和用户管理。
5面向网络计算
ORACLE8i在 与JAVA VM 及 CORBA ORB 集成后,将成为NCA(网络计算机体结构)的核心部件。NCA是ORACLE 关于分布式对象与网络计算机的战略规划。ORACLE8 对NCA产生了巨大影响,简化了应用软件的化分,推动了瘦型客户机及Web 应用软件的发展。在ORACLE8 FOR NT 中还提共了新产品Web 发布助理(Web Publishing Assistant ORACLE),提供了一种在WORD WIDE WEB 上发布数据库信息的简便,有效的方法。
6对多平台的支持与开放性
网络结构往往含有多个平台,ORACLE8 可以运行于目前所有主流平台上,如
SUN Solarise, Sequent Dynix/PTX,Intel Nt,HP_UX,DEC_UNIX,IBM AIX 和 SP等。ORACLE8 的异构服务为同其它数据源以及使用SQL 和PL/SQL的服务进行通讯提供了必要的基础设施。ORACLE8 继续至力于对开放标准规范SQL3,JDBC,JSQL和CORBA 的支持。
§13 ORACLE8和ORACLE8i
当 ORACLE 8 第一次发行时,它提供了优于 ORACLE 7 的性能和选件,但是它基本是ORACLE7 的引擎。 在ORACLE8 的后来版本中不断作过多次的完善,出现 ORACLE 80X 版本。然而1998年初发行(推出)的 ORACLE 8I 可以被看作是 ORACLE 8 的功能扩展集。
由于ORACLE 8I 比 ORACLE 8 提供了更多的功能,它除了共同的RDBMS功能外,还提供了许多与INTERNET 有关的能力,最重要的是它将 JAVA 集成为一种内部的数据语言,这种语言可充当或替代品,而且它还集成了一个WEB服务器和开发平台(Web DB )。对ORACLE 80x 来说只到 ORACLE 805 版本就终止了,接着就推出了 ORACLE8i 815版本,ORACLE8i 815版本也经常被称为Release 1;而ORACLE8i 816版本被称为Release 2;ORACLE8i 817版本被称为Release 3。
§14 ORACLE8i和ORACLE9i
在正式进入21世纪前的2000年年底,ORACLE公司正式发布了ORACLE 9i 新数据库系统。原先预料可能会有ORACLE 8i V818等版本,但ORACLE8i版本只推出817就被Oracle9i所代替。ORACLE公司和其它的软件公司一样,为了抢占市场,不再愿意在原来版本上再作更多的改进和优化工作,而是直接的推出新产品这样一种策略。ORACLE9i 与ORACLE8i 比较,ORACLE 9i 主要包括下面三大部分:
l 数据库核心(Database )
l 应用服务器(Application Server )
l 开发工具集(Developer Suite )
Oracle9i 主要焦点(Oracle9i Focus ):
l 电子商务智能化( E-Business Intelligence )
l 应用开发( Applications Development )
l 应用主机( Applications Hosting )
l 门户与内容( Portals and Content )
l 电子商务连续性( E-Business Continuity )
Oracle9i 为了结合 Internet 市场设计。Oracle9i适合并胜任市场上所有的苛刻要求。
l Oracle9I实时应用( Oracle9i Real Application)
l Oracle9I高可用性(Oracle9i High Availability)
l Oracle9I 系统管理( Oracle9i Systems Management )
l Oracle9I 安全( Oracle9i Security)
Oracle9i 数据库服务(Oracle9i Database Services):
l 商业智能与数据仓库( Business Intelligence and Data Warehousing)
l Oracle9I动态服务( Oracle9i Dynamic Services)
l Oracle9I JAVA 和XML(Oracle9i Java and XML)
l 电子商务集成( E-Business Integration )
§15 ORACLE OAS和ORACLE iAS
目前的ORACLE公司的iAS 的早期版本是 ORACLE Web Server ,后来第4版改名为ORACLE APPLICATION SERVER ,2000年底前又改名为 ORACLE9i Internet Application Server(ORACLE iAS)。目前的iAS可以与ORACLE8i 或ORACLE9i 结合在一起的综合开发工具。为创建和部署任何基于网络的应用程序提供了一个完整的Internet 平台,iAS包括了门户、事务应用、商业智能工具、无线上网应用和企业集成等。
Oracle Internet Application Server 提供了行业中最全面的中间层产品,包括通信、表示、商业逻辑、数据缓存和系统服务等。
1通信服务:
基于Apache 的ORACLE HTTP Server,主要包括下面模块:
mod_jserv:将对servlet 的HTTP请求分发到Oracle iAS 的Servlet 引擎。
Mod_perl:将perl 程序的HTTP 请求分发到Apache Web Server 的Perl Interpreter。
Mod_ssl:提供基于SSL证书的公共密钥,它被用来在客户端和Apache Server 之间进行加密通信。
Mod_plsql:Oracle 专用模块,用来将HTTP请求传到数据库内的PL/SQL和Java存储过程。
2 表示服务
提供下面方法进行内容表示:
Oracle portal(Oracle 门户)
Apache Jserver (Apache Java 服务器)
Perl Interpreter( Perl 解释程序 )
Oracle JavaServer Pager(JSP)
Oracle PL/SQL Server Pages(PSP)
3商业逻辑服务
可提供以下服务组件:
Oracle8i JVM( Java 虚拟机)
Oracle8i PL/SQL
Java 商业组件(BC4J)
Form Service
Report Service
Discoverer Viewer
4数据管理服务
Oracle 8i cache
5系统服务
Oracle Enterprise Manager(Oracle 企业管理器)
Oracle Advanced Security (Oracle 高级安全性)
Developer's KITS(开发工具),包括:
l Oracle database client developer's Kit
l Oracle XML developer's Kit(XDK)
l Oracle LDAP developer's Kit
§16 ORACLE Application R11i
Oracle 公司除了提供完美的数据库系统外,也提供完整的解决方案的套件,即全套应用系统,通常称作 Oracle Application R11i。它是一全面集成的电子商务套件。它包括:
1.数据仓库平台
l Oracle 8i 企业级数据库服务器
l Oracle Warehouse Builder(数据仓库构造器)
2商业智能工具集
l Oracle Discoverer
l Oracle Express产品系列
l Oracle darwin
3Oracle 金融服务应用
l 绩效管理
l 客户关系管理
l 风险管理
4ORACLE财务系统
基于Internet 的财务管理系统包括下面模块:
l 商业智能管理
l 预算管理
l 合并管理
l 现金预测管理
l 员工费用管理
l Oracle 财务分析系统
l Oracle 项目管理系统
l 工作流程管理
l 预警系统
§17 ORACLE 服务器组件
l 过程组件
可以用于建立过程、触发器(封装),这些代码可以存放在数据库服务器中。Oracle,Sybase,Informix,Sql Server 都把这些所谓存储过程存放在数据库内,而DB2则把这些所谓存储过程存放在服务器的另外一个专门分区内。
l 分布选件
可以支持多台服务器(在不同的地方)间的通信,即每个服务器上均有Oracle系统,而分布选件就是把这些不同的地方的数据库系统管理起来的部件。
l 并行选件
对一台具有多个CPU的机器能进行并行查询、充分利用计算机的性能。
l 并行服务器
对于多台机器(有自己的处理器)共同访问同一个硬盘这样的结构进行管理,为用户提供很高的容错性。当某台机器出现故障时,可以安排用户使用(登录)到另一台机器上。当两台都出现故障时,则整个系统都不能使用。
l 图象选件
可以存储、管理和提供实时的,全屏幕的图象和高质量的声音给网络上的用户。
l 企业管理器
Oracle 提供一个帮助用户管理系统,应用网络和数据库工具“Oracle企业管理器(OEM)”
l 空间数据选件(Spatial data option)
空间数据选件是一种存储和检索数据的新方法,在查询中系统根据所关心的数据进行组织,因此,数据库性能的主要决定因素是所感兴趣的数据库集的大小。
l 上下文选件
是一种文本管理方案,它把非结构化的文本数据管理如同结构化一样。可以建立和开展基于文本的带有类似SQL接口的应用。这种方法只有 ORACLE8 及以后版本能支持。
l Web服务器
可以通过WWW来访问Oracle数据库中的数据。
l OLAP选件
联机分析处理,Oracle提供Oracle Express作为联机分析处理。
§18 目前ORACLE8i 的主要产品
(Oracle9i产品在最后一天介绍)
l SQLPlus
Oracle的SQLPlus是标准SQL的一个超集,它除提供符合SQL标准的语句外,还提供一些Oracle特定的外加语句,set,column,Ttitle等。
l Oralce Forms
Oracle Forms的前身是SQLForms。SQLForms和Oracle Forms都是为用户提供输入、查询、修改等功能的开发工具,前者是在字符终端上运行。后者是在图形终端上运行。Oracle Forms除了在许多触发器及功能键继承前者外,大部分的设计界面都发生了变化。
SQLForms不含Menu功能,Menu专门为一个产品叫SQLMenu;而Oracle Forms 把Menu,Library 等融为一体,使功能更强大。
l Oracle Reports
Oracle Reports的先前版本是SQLReportwriter,自从Oracle7以后,将其发展为能支持Windows界面的开发工具,在最新版本中,它可以访问其他主要数据库,如Sybase, Informix, DB2 ,Microsoft SQL Server等。
l Oracle Book
Oracle Book提供一个共享Oracle产品文本的联机文档生成与浏览工具。
l Oracle Loader
Oracle Loader早期就提供一个ODL(Oracle data Loader)数据加载工具。该工具可以把多种格式的文本数据加载到Oracle表中。后来的版本更名为SQLLoader,现在叫Oracle Loader,目前版本可以把多媒体数据加载到数据库系统中。
l Developer/2000 和 Oracle Developer
是一个综合产品的总称,它包括:
l Oracle Reports
l Oracle Forms
l Oracle Graphics
l Procedure Builder
四个部件,它的先前名称叫CDE产品(即协同开发环境),现在Oracle的开发工具叫Oracle Developer。
l ORACLE Designer(Designer /2000)
ORACLE Designer 的前身是 Designer/2000,而Designer/2000的前身是SQLCase,它是一个数据库Case工具(计算机辅助设计工具),它目前版本包含:
Business Process Reengineering
Modellers
Generators
l Personal Oracle
95年后,Oracle 提供了可以在Dos,Windows3x,Windows95,Windows NT 等不同的单机版,它的基本使用方法完全同工作组版和企业版一样。
l SQLNet和Net 8
SQLNet和Net 8都提供在网络下的访问Oracle数据库的产品。SQLNet 分为SQLNet V1 和SQLNet V2。SQLNet V1主要支持字符终端方式,如Dos,终端服务器方式;SQLNet V2x主要支持图形终端与Oracle的连接,而Net 8则是Oracle 8网络产品SQLNet V2x的升级版。
l Oracle Jdeveloper
Oracle 最新产品,它是一个具有高效生产力的3GL编程工具,它可以使编程人员在Java中嵌入SQL语句,编写能访问数据库的Java程序。
l Oracle Express
可以在线分析处理的工具,利用它可以方便地进行各种数据分析。
l PROC, PROCOBOL, PROFORTRAN等
可以提供与3GL接口的工具,利用它可以在高级语言中嵌入 SQL语句,从而达到访问Oracle数据库的目的。
l 财务软件( ORACLE Financials )
ORACLE Financials 是 ORACLE APPLICATION 中用于财务管理的应用程序模块。包括财务会计,管理会计。
l 供应链与制造应用软件
包括:
l 销售定单管理
l 供应商管理
l 新产品工程设计管理
l 物料管理
l 成本管理
l 质量管理
oracle内存结构分为:
一:系统全局区 (SGA)
二:程序全局区 (PGA)
其中
SGA分为:
dagtabase buffer cache数据库缓冲区高速缓存:用于缓存从磁盘检索到的数据块
redo log buffer cache重做日志缓冲区:用于缓存重做信息,直到其可以写入磁盘为止
shared pool共享池:用于缓存可在用户间共享的各种结构
large pool大型池:用于缓冲大型 I/O 请求的可选区域,以便支持并行查询、共享服务器、Oracle XA 以及某些类型的备份操作
Java 池:用于存放 Java 虚拟机 (JVM) 中特定于会话的 Java 代码和数据
streams pool流池:由 Oracle Streams 使用
保留缓冲区高速缓存:用于存放会尽可能长地保留在缓冲区高速缓存中的数据
循环缓冲区高速缓存:用于存放缓冲区高速缓存中很快过期的数据
nK 块大小缓冲区高速缓存:用于缓存大小与默认数据库块大小不同的数据块,用来支持可传输的表空间。
PGA分为:
程序全局区 (PGA) 是一个内存区,其中包含每个服务器进程的数据及控制信息。服务器进程是处理客户机请求的进程。每个服务器进程都有在服务器进程启动时创建的自己专用的 PGA。只有该服务器进程才能访问。
所用 PGA 内存量和 PGA 的内容取决于实例是否是在共享服务器模式下配置的。通常,PGA 包含下列内容:
专用 SQL 区:包含绑定信息和运行时内存结构等数据。发出 SQL 语句的每个会话都有一个专用 SQL 区。
会话内存:此处分配的内存用于存放会话变量以及与该会话相关的其它信息。
http://www2ctocom/database/201410/344338html
像 SQL Server 这样的数据库管理系统依赖于文件输入/输出操作的及时进行。有故障或配置不当的硬件、固件设置、筛选器驱动程序、压缩、程序错误以及 I/O 路径内的其他情况都可能导致阻塞或延迟 I/O 问题,并且很快对 SQL Server 性能产生消极影响。
上述问题对 SQL Server 的影响因问题细节的不同而差异很大,但它们通常导致阻塞、锁存器争用和超时、过长的响应时间以及资源的过度利用。
阻塞 I/O 是指必须进行外部干预才能完成的 I/O 请求(通常是 I/O 请求包 (IRP))。这种状况通常需要执行完整的系统重新启动或类似操作才能解决,并且强烈表明硬件有故障或者在 I/O 路径组件中存在程序错误。
延迟 I/O 是指无需干预即可完成但所花时间超过预期时间的 I/O 请求(同样,这通常是 IRP)。这种状况的原因通常是硬件配置、固件设置或筛选器驱动程序干预,需要硬件或软件供应商提供帮助以便跟踪和解决。
SQL Server 2000 SP4 包含数据库和日志文件 I/O(读和写)逻辑以便检测延迟和阻塞状况。当 I/O 操作经过 15 秒钟或更长时间仍未完成时,SQL Server 会检测到并报告这一状况。以下消息将被记录到 SQL Server 错误日志中:
2007-11-1 00:21:2526 spid1 SQL Serverhas encountered 192
occurrence(s) of IO requests taking longer than 15 seconds to complete
on file [E:\SEDATA\stressdb5ndf] in database [stressdb] (7) The OS
file handle is 0x00000000000074D4 The offset of the latest long IO is:
x00000000022000"
该消息表明,当前工作负载需求超出了 I/O 路径或当前系统配置和功能,或者 I/O 路径含有不能正常工作的软件(固件、驱动程序)或硬件组件。
所记录的错误信息提供了以下信息:
• ### occurrences — 未能在 15 秒钟以内完成读或写操作的 I/O 请求的数量。
• File information — 完整的文件名、数据库名和受影响文件的 DBID。
• File handle — 该文件的操作系统句柄。可以通过调试器和其他实用工具来使用这一信息跟踪 IRP 请求。
• Offset — 上一个阻塞或延迟 I/O 的偏移量。可以通过调试器和其他实用工具来使用这一信息跟踪 IRP 请求。(注:在记录该消息的时候,该 I/O 可能不再阻塞或延迟。)
记录与报告
I/O 的报告和记录是按照文件执行的。延迟和阻塞 I/O 请求的检测和报告是两个不同的操作。
检测(记录)是在 SQL Server 内部的两个位置处理的。第一个位置是在 I/O 实际完成的时候。如果请求花费了 15 秒钟以上,则发生记录操作。第二个位置是在延迟写入器进程执行的时候。当延迟写入器执行时,它包含新的对所有挂起的数据和日志文件 I/O 请求进行检查的操作,并且,如果已经超过了 15 秒钟的阈值,则会发生记录操作。
报告是按照不低于 5 分钟的时间间隔执行的。当对文件进行下一次 I/O 请求时,发生报告操作。如果记录操作已经发生,并且自上一次报告发生以来已经过去了 5 分钟或更长时间,则向错误日志中写入新的报告(上面显示的错误消息)。
15 秒钟的阈值当前是不可调整的。尽管不推荐这样做,但您可以用跟踪标志 830 完全禁用延迟和阻塞 I/O 检测。在 SQL Server 启动期间设置启动参数 –T830 可以禁用延迟/阻塞 I/O 检测。使用 dbcc traceon(830, -1) 可以禁用对当前正在运行的 SQL Server 实例的检测。只有重新启动 SQL Server,Dbcc traceon 才会生效。
注:延迟或阻塞的给定 I/O 请求只会报告一次。如果消息报告 10 个 I/O 被延迟,则这 10 个报告不会再次发生。如果下一个消息报告 15 个 I/O 被阻塞,则表明 15 个新的 I/O 请求已经被延迟 性能和计划操作
总体系统性能可能在 I/O 处理中扮演关键的角色。在研究延迟或阻塞 I/O 的报告时,应该考虑系统的综合运行状况。过多的负载可能导致整个系统(包括 I/O 处理)变慢。系统在发生问题时的行为可能是确定问题根源的关键所在。例如,如果 CPU 利用率在发生问题时变高或者保持较高水平,则可能表明系统中的某个进程正在消耗如此之多的 CPU 时间,以至于它以各种方式对其他进程产生了消极影响。
请查看性能计数器 Average Disk Sec/Transfer 以及 Average Disk Queue Length 或 Current Disk Queue Length,以获得特定的 I/O 路径信息。例如,SQL Server 计算机上的 Average Disk Sec/Transfer 通常低于 15ms。如果该值上升,则可能表明 I/O 子系统无法满足 I/O 要求。
请记住,SQL Server 充分利用了 Windows 的异步 I/O 功能,并且猛烈地扩展磁盘队列长度,因此上述性能计数器具有较高的值本身并不表明存在问题。
索引和并行性
特别常见的一种情况是,因为索引丢失以及由此导致的扫描、哈希和排序对 I/O 系统造成的压力,所以突发大量的 I/O。运行一遍“Index Turning Wizard”通常会有助于解决系统的 I/O 压力。如果添加索引可以帮助查询避免表扫描甚至排序或哈希,则系统可以获得多个优点:
• 减少完成操作所需的物理 I/O,这直接等效于提高查询的性能。
• 数据缓存中只有较少的页面必须周转,因此缓存中的那些页面可以一直与活动查询相关。
• 避免不必要的排序和哈希。
• 可以降低 tempdb 利用率和减少争用情况。
• 减少资源利用率和/或并行操作。因为 SQL Server 不能保证服务器在确定是否将查询并行化时考虑并行查询执行和系统中的负载,所以您针对串行执行优化所有查询。在 Q/A 环境中,应该将 max degree of parallelism 设置为 1,以便对根本没有从服务器收到任何并行计划的最糟糕情况强行进行调整。如果在测试环境中证实查询可以按串行方式高效执行,则生产环境中的并行计划可以提供出乎意料的性能改进。但是,很多情况下,SQL Server 选择并行执行,这是因为要遍历数据的绝对数量过于庞大。该数据量通常直接受到索引的影响。例如,如果丢失索引,则可能产生大量排序操作。我们很容易就可以看出,执行排序操作的多个辅助进程如何使响应速度比以串行方式处理排序更快速,不过我们需要了解,该操作可能大幅增加 I/O 系统的压力。当多个辅助进程并发运行时,来自多个辅助进程的大型读请求可能导致 I/O 突发以及 CPU 利用率提高。很多时候,如果添加了索引或者发生了其他调整操作,则可以调整查询以使其更快地运行并使用更少的资源。这不仅提高了相关查询的性能,而且还提高了系统的整体性能。
来自 Microsoft SQL Server Support 的实际示例
Microsoft SQL Server 和 Platforms Escalation Support 已经处理了下列方案,这些方案旨在提供一个参考框架,并且帮助树立有关延迟和阻塞 I/O 情况以及系统可能如何受到影响的预期。不存在给其他软硬件带来任何特殊或更高风险的特殊硬件或驱动程序集;在这个方面,所有系统都是相同的。
示例 1 — 阻塞 45 秒钟的日志写操作:
一个尝试性的 SQL Server 日志文件写操作周期性地阻塞 45 秒钟。该日志写操作无法及时完成,从而产生阻塞情况,导致 30 秒钟的客户端查询超时。
请求被提交并阻塞(日志写挂起),导致查询继续占用锁并且阻塞来自其他客户端的传入请求。其他客户端开始超时并且使问题变得复杂,这是因为应用程序没有被设计为在发生超时的时候回滚尚未解决的事务。这会导致数以百计尚未解决的事务占用锁以及严重的阻塞。(有关事务处理和阻塞的详细信息,请参阅 INF: Understanding and Resolving SQLServer 70 or 2000 Blocking Problems)。应用程序使用连接池来维护 Web 站点,因此,随着更多的连接被阻塞,Web 站点创建了更多的连接,而这些连接又会被阻塞,该循环会一直持续下去。
在大约 45 秒钟之后,该日志写操作将完成,但到此时为止,数以百计的连接已经积累起来,从而导致阻塞问题,并使得 SQL Server 和应用程序需要花费几分钟的时间进行恢复。当与应用程序问题结合起来的时候,延迟 I/O 状况会对系统产生非常消极的影响。
解决办法:这归因于 HBA 驱动程序中的延迟 I/O 请求。计算机具有多个带有故障转移支持的 HBA 卡。故障转移超时值被配置为 45 秒。当一个 HBA 落后或者在 45 秒钟或更长时间内未与 SAN 通信时,该 I/O 请求被路由到第二个 HBA 进行处理,并且会很快完成。硬件产品的推荐故障转移设置为 5 秒钟,以便避免出现这样的延迟状况。
如果在 SQL Server 2000 SP4 中已经有了新的自动报告该状况的功能,那么我们在疑难解答过程中就可以很快知道,基本问题是由于 SQL Server 外部的问题而发生的阻塞或延迟 I/O 操作。事实上,我们花费了大量时间来解决一个在最初呈现为普通性能问题的问题。
示例 2 — 筛选器驱动程序干预:
许多防病毒软件和备份产品使用 I/O 筛选器驱动程序。这些筛选器驱动程序成为 I/O 请求栈的一部分,并且可以访问 IRP 请求。Microsoft 技术支持部门已经遇见过各种问题 — 从导致阻塞 I/O 的错误到筛选器驱动程序实现中的延迟状况。
其中,Microsoft SQL Server 技术支持部门遇到的一种情况是,涉及到用于备份处理(该过程能够备份在备份时处于打开状态的文件)的筛选器驱动程序。系统管理员错误地在文件备份选择中包括了 SQL Server 数据文件目录。当备份发生时,它试图收集备份开始时文件的一致镜像。在完成该操作时,它将延迟后续的 I/O 请求,使它们能够在软件处理它们时逐个完成。
当备份开始时,SQL Server 的性能会急剧下降,因为针对 SQL Server 的 I/O 被强迫逐个完成。使该问题变得更为复杂的是,单 I/O 逻辑的特点使得 I/O 通常无法异步执行,因此当 SQL Server 期望发送 I/O 请求并继续工作时,UMS 辅助进程却在 I/O 完成之前一直阻塞在读或写调用中。SQL Server 预读功能实际上被筛选器驱动程序的操作禁用了。而且,即使当备份完成时,筛选器驱动程序中的另一个程序错误仍然使单 I/O 行为保持不变。恢复 SQL Server 性能的方法是关闭数据库并重新打开它或者重新启动 SQL Server,以便在当前筛选器驱动程序交互未就绪的情况下释放并重新获取文件句柄。
解决办法:将 SQL Server 的数据文件从文件备份过程中排除,并且解决筛选器驱动程序中的导致文件被置于单 I/O 模式的程序错误。
示例 3 — 隐藏的错误:
很多高端系统具有用于处理负载平衡的多通道 I/O 路径以及类似的工具。Microsoft SQL Server 技术支持部门已经见过使用此类软件的情况,其中,尽管 I/O 请求失败,但软件确实正确地处理了错误状况,并且执行了无数次重试。I/O 被阻塞,并且 SQL Server 无法完成指定的操作。与上面描述的日志写状况非常类似,在这样的状况对系统产生了消极影响之后,发生了很多糟糕的系统行为。
解决办法:在类似情况下,重新启动 SQL Server 可以在一定程度上缓解问题,但是,有时需要重新启动 Windows 来使处理恢复到正常状态。当然,I/O 子系统中的程序错误最终需要由 I/O 供应商解决。
SQL Server 2000 SP4 的新的对此类状况进行自动报告的功能使得类似问题的检测变得更加容易。我们不仅可以看到整个服务器的总体性能下降,而且还可以通过 SP4 所记录的新消息洞察问题的本质,并且知道该问题很可能出在 SQL Server 外部。
示例 4 — 远程存储/镜像/RAID 驱动器:
很多系统使用镜像或类似的技术来帮助防止丢失数据。其中一些系统是基于软件的,而其他系统是基于硬件的。Microsoft SQL Server 技术支持部门经常遇到的与这些系统有关的情况是延迟增加。
当针对镜像的 I/O 必须在 I/O 操作被视为完成之前成功完成时,这显然会增加总体 I/O 时间。对于远程镜像安装,网络延迟和重试可能成为一个不利因素。当发生驱动器故障并且 RAID 子系统重新生成时,I/O 吞吐量可能会受到影响。
解决办法:在类似情况下,我们通常建议使用严格的配置设置(这随供应商和设备而异),以减少镜像延迟和 RAID 重新生成操作。
RAID 系统开销和延迟可能导致 I/O 变慢,而 SQL Server 对此无能为力。就像任何其他应用程序一样,它是 RAID 硬件和驱动程序的客户端。当该类型的问题使服务器的速度过度降低时,SP4 中新的延迟和阻塞 I/O 报告功能有助于查明问题所在。
示例 5 — 压缩:
Microsoft 不在压缩驱动器上支持 SQL Server 70 或 2000 数据和日志文件。NTFS 压缩是不安全的,这不仅是因为它破坏了预写日志 (WAL) 协议,而且还因为它要求对每个 I/O 请求执行更多的处理。压缩禁止了异步 I/O,从而导致所有带有受影响数据或日志文件的 SQL Server I/O 都被同步执行。
解决办法:在这种情况下,我们总是建议客户解压缩他们的数据和日志文件。
NTFS 压缩可能导致 I/O 变慢,而 SQL Server 对此无能为力。就像任何其他用户模式应用程序一样,它是文件系统的客户端。当压缩对 SQL Server I/O 操作产生不利影响时,SP4 中新的延迟和阻塞 I/O 报告功能有助于查明问题所在。
附加数据点
系统进程中提供的等待类型信息可能有助于诊断 I/O 瓶颈。缓冲区 I/O 锁存器等待类型和写日志等待是调查 I/O 路径性能的关键指标。Microsoft 知识库文章 822101: The waittype and lastwaittype fields in the sysprocesses table 概述了等待类型,并且详细介绍了与诊断延迟或阻塞 I/O 状况有关的 I/O 等待类型
超大型系统的特点为: 1、处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB; 2、系统必须提供实时响应功能,系统需不停机运行,要求系统有很高的可用性及可扩展性。 为了能达到以上要求,除了需要性能优越的计算机和海量存储设备外,还需要先进的数据库结构设计和优化的应用系统。 一般的超大型系统采用双机或多机集群系统。下面以数据库采用Oracle 806并行服务器为例来谈谈超大型数据库设计方法: 确定系统的ORACLE并行服务器应用划分策略 数据库物理结构的设计 系统硬盘的划分及分配 备份及恢复策略的考虑 二、Oracle并行服务器应用划分策略 Oracle并行服务器允许不同节点上的多个INSTANCE实例同时访问一个数据库,以提高系统的可用性、可扩展性及性能。Oracle并行服务器中的每个INSTANCE实例都可将共享数据库中的表或索引的数据块读入本地的缓冲区中,这就意味着一个数据块可存在于多个INSTANCE实例的SGA区中。那么保持这些缓冲区的数据的一致性就很重要。Oracle使用 PCM( Parallel Cache Management)锁维护缓冲区的一致性,Oracle同时通过I DLM(集成的分布式锁管理器)实现PCM 锁,并通过专门的LCK进程实现INSTANCE实例间的数据一致。 考虑这种情况:INSTANCE1对BLOCK X块修改,这时INSTANCE2对BLOCK X块也需要修改。Oracle并行服务器利用PCM锁机制,使BLOCK X从INSTANCE 1的SGA区写入数据库数据文件中,又从数据文件中把BLOCK X块读入INSTANCE2的SGA区中。发生这种情况即为一个PING。PING使原来1个MEMORY IO可以完成的工作变成2个DISK IO和1个 MEMORY IO才能够完成,如果系统中有过多的PING,将大大降低系统的性能。 Oracle并行服务器中的每个PCM锁可管理多个数据块。PCM锁管理的数据块的个数与分配给一个数据文件的PCM锁的个数及该数据文件的大小有关。当INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果这些BLOCK 是由同一个PCM锁管理的,仍然会发生PING。这些PING称为FALSE PING。当多个INSTANCE访问相同的BLOCK而产生的PING是TRUE PING。 合理的应用划分使不同的应用访问不同的数据,可避免或减少TRUE PING;通过给FALSE PING较多的数据文件分配更多的PCM锁可减少 FALSE PING的次数,增加PCM锁不能减少TRUE PING。 所以,Oracle并行服务器设计的目的是使系统交易处理合理的分布在INSTANCE实例间,以最小化PING,同时合理的分配PCM锁,减少FALSE PING。设计的关键是找出可能产生的冲突,从而决定应用划分的策略。应用划分有如下四种方法: 1、根据功能模块划分,不同的节点运行不同的应用 2、根据用户划分,不同类型的用户运行在不同的节点上 3、根据数据划分,不同的节点访问不同的数据或索引 4、根据时间划分,不同的应用在不同的时间段运行 应用划分的两个重要原则是使PING最小化及使各节点的负载大致均衡。 三、数据库物理结构的设计 数据库物理结构设计包括确定表及索引的物理存储参数,确定及分配数据库表空间,确定初始的回滚段,临时表空间,redo log files等,并确定主要的初始化参数。物理设计的目的是提高系统的性能。整个物理设计的参数可以根据实际运行情况作调整。 表及索引数据量估算及物理存储参数的设置 表及索引的存储容量估算是根据其记录长度及估算的最大记录数确定的。在容量计算中考虑了数据块的头开销及记录和字段的头开销等等。
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
扩展资料:
SQL中存储过程优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
4、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
-存储过程
0条评论