您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle 数据库可以在VMware产品上完美运行的10大理由
Oracle数据库可以VMware产品上完美运行的10大理由看到外界非常关注Oracle在虚拟环境中的表现,我们感到十分高兴。Oracle在VMwareESX上的优越表现一直是我们的秘诀之一。这种优越表现绝非偶然,因为我们对VMwareESXServer体系结构做了大量功能和性能优化工作,特别是在数据库支持方面。在此,我将向大家介绍一下确保我们获得最佳数据库性能的10大重要因素。以下是其中几项性能优势:•接近本机系统的性能:Oracle数据库与物理系统的性能几近相似•超强的数据库I/O扩展性:VMwareESXServer的精简虚拟化管理程序层每秒能够驱动63,000次数据库I/O操作•多核扩展:使用SMP虚拟机和多个数据库实例进行纵向扩展•巨大的内存容量:可扩展的内存容量-每个数据库64GB;每台主机256GB我们一直持续地下大气力优化Oracle在VMware产品上的性能,因为它已是最常用的虚拟化应用程序之一。融合了多项先进优化措施的ESX3.5版本即将发行,这是我们迄今为止推出的最棒的数据库平台。在本篇博客文章中,我将为大家介绍数据库应用程序(如Oracle产品)的独特和专有特性,并向大家展示ESXServer在此类工作负载下的运行能力。数据库的本质数据库具有多种独特的属性,例如较大的内存占用空间。这样,数据库要进行顺畅的虚拟化就略显复杂了。然而,实践证明这也是一种机会,因为我们可以专门针对这些特定的属性进行优化。•巨大的内存容量:数据库使用大量的内存来对其存储数据进行高速缓存。大容量高速缓存是衡量数据库性能极为重要的一个标准,因为它通常可使物理I/O操作的次数减少10-100倍。•高性能数据块I/O:数据库使用固定大小的数据块写入和读取数据。这些I/O通常较小,频繁发生于少量文件或设备中。•以吞吐量为中心:数据库通常会有大量的用户同时进行操作,因此具有多个逻辑或物理处理器的系统便可以使这些用户自然并存并充分受益。理解和量化虚拟性能量化虚拟系统的性能时,首先应衡量延迟和吞吐量,其次是资源的使用率。例如,如果一个物理系统正在以每分钟10000个事务、每个事务500毫秒的延迟运行,则与该物理系统性能相同的虚拟系统也应该以可接受的延迟标准提供同样水平的吞吐量。其次应该是资源使用率的衡量指标,通过这一指标可以衡量要取得同样水平的性能需要额外使用多少物理资源。有些时候我们过于简单地仅去考虑CPU资源,然而现实中我们需要配备的内存和I/O却是更加昂贵的资源。随着时间的推移,内存和I/O资源的使用率变得越来越重要,原因是多核CPU会使每个处理器内核的成本继续降低,而内存的成本却一直居高不下。对于Oracle而言,更重要的一点是纵向扩展能力,即通过虚拟化管理程序充分利用多核CPU、大容量内存以及I/O吞吐量来支持后端存储阵列中大量的磁盘。数据库性能认识误区对于虚拟化数据库,通常存在以下几点认识误区:•虚拟数据库具有很高的系统开销:就延迟和吞吐量而言,虚拟数据库的运行速度能等于或接近物理系统。对于常见的数据库而言,虚拟化开销很小–在VMwareESXServer中所测量到的CPU开销低于10%。•数据库的I/O操作过多无法进行虚拟化:通常情况下,数据库会产生大量小的、随机的I/O操作,其理论值可能达到虚拟化管理程序层的I/O数量极限。然而,VMwareESX的精简虚拟化管理程序层每秒可以驱动63,000多次数据库I/O操作,等同于600多个硬盘的I/O吞吐量。这样的I/O极限值,即使是用于x86系统上最大的数据库也绰绰有余。•虚拟化只能用于较小的、无关紧要的应用程序:ESX虚拟化管理程序非常强健-很多客户的基于ESX的系统已经连续正常运行了两年多的时间。此外,ESX虚拟化管理程序一直非常稳定,即便在资源过度使用时亦是如此。我们不能奢望通过一个快速的解决方案使数据库与很多种实际的应用程序完美兼容–只有通过长时间地致力于研究众多用户在实际数据库工作中获得的教训,并且在虚拟化管理程序体系结构中应用这些教训,才能获取优异的性能。下面让我们简要了解一下虚拟化管理程序中可确保数据库获得优异性能的一些特性。1:VMwareESX的高性能I/OI/O系统的吞吐量和延迟对于在线事务处理系统的性能来说至关重要。由于事务数据库系统是针对数据集中随意位置的不同小数据项进行操作的,因此应测量随机I/O吞吐量(以每秒钟的I/O操作数为测量标准),而非带宽(MB/s)。图1:VMwareESXI/O驱动程序模型由于逻辑上虚拟化管理程序驻留在客户虚拟机数据库和后端存储之间,因此很重要的一点就是虚拟化管理程序的I/O能力可以纵向扩展且不会超出任何性能限额,并且不能产生可察觉延迟。如图1所示,VMwareESX的I/O子系统使用直接的驱动程序模型,以使由虚拟堆栈引起的延迟最小化。这是可能的,因为I/O请求可以由同一个处理器(相对于发出请求的虚拟机)进行内处理。在其他体系结构中,当I/O由一个重量级域0或父分区进行代理时,会产生大量的延迟和CPU开销。在随机存取模式下,Oracle数据库通常会产生许多4KB或8KB的小型I/O操作。对于这类I/O操作,一个典型的磁盘每秒可处理的I/O操作数介于100到200之间(具体值取决于磁盘的转速)。然而在实际操作中,最好不要使一个驱动器每秒处理的I/O数超过100个。VMwareESX3.5虚拟化管理程序的吞吐量已经得到了显著的提升,可持续以每秒60,000多个I/O操作数的速度运行,相当于600多个磁盘的吞吐量。图2:随机I/O吞吐量4-CPU数据库平均量对比VMwareESX3.5VMware对其客户的15,000个Oracle服务器进行的调查研究结果表明:对于加载的4处理器系统,每秒的平均I/O数为1280个,大约是15个磁盘的吞吐量。由于一些工作负载吞吐量要求比其他工作负载高,有些工作负载的吞吐量要求是突发性的,因此必须要备有充足的预留量。即便是对于要求最高的数据库,ESXI/O子系统的吞吐量能力也是绰绰有余的。2:使用VirtualSMP进行纵向扩展VMwareESX可以通过两种方式来利用多个物理处理器:通过多个虚拟机进行横向扩展;通过纵向扩展每个虚拟机来使用多个物理处理器。VMwareESX提供的VirtualSMP功能允许每个客户虚拟机最多有4个处理器,物理系统最多有64个处理器。图3:VirtualSMP由于数据库工作负载通常会有大量的用户同时进行操作,这些用户是完全并行的,并且可以毫不费力地同时处理多个任务。Oracle能够利用VMwareVirtualSMP扩展性能,从而超出每个虚拟机单处理器的能力。为了说明这一点,我们通过OracleDatabase10g版本2进行了几个基准测试,使用的是流行的SwingBench在线事务处理工作负载。图5显示的是在单个虚拟机上增加处理器时Oracle的吞吐量。基准测试测量了事务的吞吐量,结果表明随着额外处理器的增加,吞吐量提高了94%。恰巧,这与我们在本机系统上看到的扩展量完全一致,这很可能是硬件和数据库扩展带来的结果。图.5:VMwareVirtualSMP针对单个Oracle10gR2实例的扩展情况进行整合的关键要求之一是对于多个数据库实例的良好扩展性。为了显示这一点,我们在VMwareESXServer3.5上运行了多个Oracle10G实例。图4显示了在运行开放源DVDstore数据库基准测试时,VMwareESX平台的扩展情况。该基准测试是以客户端-服务器模式运行的,因此我们可以专注于数据库层。在此研究中,我们在7个双处理器SMPLinux虚拟机(每个虚拟机皆具有自己的数据库实例)中运行了该基准测试。我们很快将在Vroom中发布该基准测试的详细信息。图4:16核Sunx4600M2上VMwareESX中多个数据库实例的扩展情况3:利用大容量内存进行纵向扩展Oracle数据库会消耗大量内存。主要是在内存中缓存预编译的SQL查询和来自磁盘的数据块。数据库设计者花费了极大的精力来尽量避免进行磁盘I/O。这是因为一个磁盘I/O的延迟要远远长于CPU处理一个事务的时间。例如,一个磁盘I/O需要等待10毫秒,而典型的事务只需占用CPU几毫秒。如果一个到磁盘的I/O能够被高速缓存在内存中,则可以在不到1毫秒的时间内调用。此外,由于磁盘很贵,通常情况下用于数据库的存储系统的成本更多地受其每秒所执行的I/O操作数的影响,而不是单纯的存储空间的影响。降低整体的磁盘吞吐量便意味着大幅降低系统的成本。更大的内存空间可以帮助Oracle在内存中高速缓存更多的磁盘数据块。请看一个简单的例子:如果数据库系统正在使用内存来高速缓存其磁盘I/O,并且高速缓存命中率达到90%,这就意味着每10次访问操作,只有一次会导致物理I/O。如果每秒的访问次数为10,000,我们将会看到每秒1,000次I/O操作。如果增加内存将高速缓存命中率提高至99%,则可以将I/O的发生率降低到1%,从而使每秒的物理I/O数减至十分之一,即每秒仅100次I/O操作。通常,在客户操作系统所使用的内存中,有80%以上是由Oracle磁盘数据块高速缓存占用的。基本的经验原则是数据库高速缓存大小应该是数据库大小的5-10%,将内存容量增加一倍会使吞吐量大约提高20%。显然这还与工作负载的多少有很大关系,但是您可以看到较大的内存可以帮助提高系统中其他区域的资源效率,因而就整体而言,内存越大越好。综合上述原因,大容量内存对于数据库来说非常重要。VMwareESX3.0允许每个客户操作系统拥有16GBRAM,而VMwareESX3.5则将此限制提高到了每个客户操作系统64GB。由于通过工作负载整合可以从内部提高处理器利用率,因此我们可以将更多工作负载压缩到单个系统中。这意味着平均而言,每个物理处理器的平均内存要求将是传统未虚拟系统的两倍。为了适应这些不断增长的要求,我们在ESX3.5中大幅提高了内存扩展量,现在对于Sun、IBM和Unisys的最新高端系统,最高可以支持256GBRAM。4:ESX3.5虚拟化管理程序的大页面功能Oracle数据库在CPU的MMU中使用大页面来优化内存性能已经有一段时日了。这一功能与操作系统的大页面功能配合使用,通常用于容纳数据库磁盘数据块高速缓存的较大共享内存分段。Linux、Windows和Solaris客户操作系统均支持大页面。通过大页面,Oracle的性能一般会提高5-20%,具体取决于处理器的类型和所配置内存的大小。其他的x86虚拟化管理程序不提供虚拟的大页面功能,因此当数据库被虚拟化后无法使用该优化功能。ESX3.5虚拟化管理程序提供先进的大页面支持,允许数据库充分利用CPU的大页面功能。5:ESX针对不同内存体系结构系统进行的优化当今许多备受关注的新硬件系统都是使用不同的内存体系结构实现的。这意味着并不是所有的内存都具有相同的速度,对比拓扑结构与处理器相近的内存和拓扑结构与处理器差异较大的内存,访问前者要比访问后者更快。为确保最佳性能,VMwareESX虚拟化管理程序在为客户操作系统分配内存时,将从与运行客户操作系统的CPU拓扑结构接近的物理内存中进行分配。6:高性能的半虚拟化网络连接半虚拟化是一个专有名词,指的是客户操作系统具有虚拟化管理程序的一些知识,并且能够利用这些知识对虚拟化管理程序的执行进行优化。VMwareESX虚拟化管理程序在客户操作系统中使用半虚拟化网络连接驱动程序来提供高性能的网络连接。在客户操作系统首次启动时,这些驱动程序会通过VMware工具包被自动安装。不同于CPU半虚拟化,半虚拟化驱动程序不需要对客户操作系统进行任何更改,它们只是作为透明的新驱动程序进行安装。6-多NIC的扩展情况ESX能够以线速驱动千兆位以太网,如文章多个虚拟机中的网络连接性能中所述。通过集成新的无状态卸载功能,例如大分段卸载(large-segment-offload,LSO)和巨型框架,ESX3.5的网络连接性能得到了很大提升,现在在10千兆位以太网上已接近线速(9.9千兆位/秒)
本文标题:Oracle 数据库可以在VMware产品上完美运行的10大理由
链接地址:https://www.777doc.com/doc-8941 .html