数据库性能优化有哪些措施

数据库性能优化有哪些措施,第1张

调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用 *** 作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。

最大限度地挖掘存储系统的性能潜力是用户永远的追求,但是,面对众多性能优化技术,我们还必须考虑到底是性能重要还是空间利用率重要。在当前经济形势低迷的大背景下,挖掘现有存储系统的性能潜力成为用户的必然选择,不过追求性能只是一个方面。我们看到的现象是大多数存储系统的空间利用率还不到50%,而且存储控制器的处理能力也只用到一小部分,这些都是让用户不可接受的事实。在数据中心应用领域,通过服务器整合以及虚拟化技术,物理服务器的资源已经被最大化的利用起来,与此相反的是,存储效率低下的问题却成为用户的痛点。若要实现服务器虚拟化的高效率,存储系统就必须跟得上,这是一个必要的前提,因此服务器虚拟化应用推动着存储技术向更高效的方向发展。在虚拟化环境中,当前端服务器数量不断增加,后端存储阵列的不足便暴露出来,尤其表现在缺乏细粒度的分配和调动空间资源的能力方面。因此,如果用户希望对数据中心进行高度整合,那么服务器虚拟化技术和高效的存储技术二者缺一不可。存储效率是一个综合性的指标,实现最佳的存储效率意味着要在有效存储空间以及可用处理资源两方面都有出色表现,通常也是各产品之间相互竞争的重点。StorageIO高级分析师Greg Schulz说,“为了达到应用所需的IOPS能力,有些存储系统被设计得很大,通过大量磁盘的并发来提升IOPS,可是空间利用率却非常低,反之,追求空间利用率的最大化往往需要借助存储精简技术,比如压缩和重复数据删除等等,但是这些功能会对系统性能带来负面的影响“。因此,达成高效的存储就需要在容量和性能之间寻找一个平衡点,根据应用需求的不同,对容量、处理能力、性能以及成本进行控制和优化。保证存储效率有哪些基本条件优化存储系统的性能,本质上就是要尽可能地提高存储处理资源的利用率,同时尽量消除系统的瓶颈或阻塞。随着处理资源利用率的增加,剩余的处理资源以及响应额外处理请求的能力相应的就会降低。而且如果缓冲区太小的话,那么系统达到性能上限(瓶颈)的可能性就非常大。举个例子来说,一个平均处理资源利用率在 50%的磁盘阵列不太可能触及性能上限(瓶颈),而对于一个利用率达到80%的系统来说,这个可能性就要大得多。高效存储技术及其对性能、容量和成本的影响由存储厂商或第三方公司提供的内嵌在存储系统内部或在外部附加的运行报告、监控以及存储分析功能是十分重要的,它们可以帮助用户更好的了解系统的运行情况,避免系统过度(过高)配置,并减少很多后期维护工作。尤其是当用户需要优化性能或者按需增加处理资源时,这些组件的作用就会体现的非常明显。对此,StorageIO高级分析师Greg Schulz评价道:“无论是性能问题还是容量问题,好好利用存储厂商或第三方公司提供的工具都是十分重要的。”这些工具不仅能够帮助用户定位性能的问题,更重要的方面在于它们可以帮助用户选择出最恰当的解决方案。衡量一套存储系统的性能并不能依赖某个单一指标,而要考虑多种组合因素,它们每一项都对应用程序访问数据的速度有所影响。其中,IOPS、吞吐带宽和访问延迟这三项指标是最关键的。 不过,指标数据究竟是好是坏还要考虑应用环境的差异,包括工作负载的类型(随机请求或者顺序请求)、数据块的大小、交易类型(读或是写),以及其他相关的能够影响性能的因素都依赖于应用程序本身的特点。比方说,如果是流媒体视频应用,那么大文件快速顺序读性能和大数据块是最重要的;而如果是虚拟化应用环境,那么随机读性能通常是最主要的考察指标。下面的部分,我们将纵览那些可以优化性能并且提高存储资源利用率的技术,这里没有独门秘籍,因为每一种方法都有其优点和缺点。通过堆砌磁盘数量来提高性能磁盘驱动器是一种机械装置,读写磁头通过在高速旋转盘片的内道和外道之间往复移动来寻找并读写数据。即使是转速最快的15000转磁盘,其磁头机械臂的重定位时间延迟都会有数毫秒之多,因此每个磁盘的IOPS值最多只有几百个,吞吐带宽则局限在100MB/秒以内。通过将数据分布在多个磁盘上,然后对多个磁盘同步进行读写访问是一种常见的扩展性能的方法。通过增加磁盘的个数,系统整体的IOPS和带宽值也会等比例提升。加之,有些存储厂商还提供short stroking这样的可以缩短磁头机械臂移动距离的技术。此类技术可以将数据集中放置在磁盘盘片的外道区域,结果是磁头移动的距离大大缩短,对数据访问的性能具有十分明显的提升作用。可是,当我们通过利用大量的磁盘并发以及short-stroking磁头短距离移动技术达成既定的性能目标之后,我们会发现其代价是非常高昂的,此外,由于仅仅使用了盘片的外道空间,所以存储的空间利用率会非常差。早在SSD固态盘技术出现之前,利用大量的磁盘并发以及 short-stroking磁头短距离移动技术来满足应用的性能要求是最普遍的办法,即使在今天,这种方案依然被大量使用,原因是SSD固态盘的成本太高,所以用户依然青睐磁盘而不是SSD。NatApp技术和战略总监Mike Riley就说:“对于顺序访问大数据块和大文件这样的应用,使用磁盘通常性价比更高。”RAID 及wide-striping技术对效率的影响很多用户容易忽视一点,即RAID和RAID级别其实都会对性能和容量产生影响。通过改变RAID级别来提升存储性能或者空间的利用率是一种很现实的选择。校验盘的数量、条带的大小、RAID组的尺寸以及RAID组内数据块大小都会影响性能和容量。RAID技术对性能和容量的影响我们都熟悉那些常见的RAID级别及其特点,但还有一些不常见的技术趋势值得我们关注,这些都与我们讨论的存储效率有关。首先,RAID组的尺寸会影响性能、可用性以及容量。通常,大的RAID组包含的磁盘数量更多,速度也更快,但是,当出现磁盘故障后,大RAID组也需要更多的时间用来重建。每隔几年,磁盘的容量都会翻一番,其结果是RAID重建的时间也相应变的更长,在数据重建期间出现其他磁盘故障的风险也变得更大。即使是带有双校验机制,允许两块磁盘同时出现故障的RAID 6也存在风险增加的问题,况且,RAID 6对性能的影响还比较大。有一个更好的办法是完全打破传统RAID组和私有校验盘的概念,比如,NetApp的Dynamic Disk Pools (DDP)技术,该技术将数据、校验信息以及闲置空间块分散放置在一个磁盘池中,池中所有的磁盘会并发处理RAID重建工作。另一个有代表性的产品是HP的 3PAR存储系统,3PAR采用了一种叫做wide striping的技术,将数据条块化之后散布在一大堆磁盘上,同时磁盘自身的裸容量又细分成若干小的存储块(chunklet)。3PAR的卷管理器将这些小的chunklet组织起来形成若干个micro-RAID(微型RAID组),每个微型RAID组都有自己的校验块。对于每一个单独的微型 RAID组来说,其成员块(chunklet)都分布在不同的磁盘上,而且chunklet的尺寸也很小,因此数据重建时对性能的冲击和风险都是最小的。固态存储毫无疑问,SSD固态存储的出现是一件划时代的“大事儿“,对于存储厂商来说,在优化性能和容量这两个方面,SSD技术都是一种全新的选择。与传统的磁盘技术相比,SSD固态盘在延迟指标方面有数量级上的优势(微秒 对 毫秒),而在IOPS性能上,SSD的优势甚至达到了多个数量级(10000以上 对 数百)。Flash技术(更多的时候是磁盘与flash的结合)为存储管理员提供了一种更具性价比的解决方案,我们不必像过去那样,为了满足应用对性能的高要求而不得不部署大批量的磁盘,然后再将数据分散在磁盘上并发处理。SSD固态盘最佳的适用场景是大量数据的随机读 *** 作,比如虚拟化 hypervisor,但如果是大数据块和大文件的连续访问请求,SSD的优势就没有那么明显了。EMC统一存储部门负责产品管理与市场的高级副总裁Eric Herzog说:“Flash的价格仍然10倍于最高端的磁盘,因此,用户只能酌情使用,而且要用在刀刃上。”目前,固态存储有三种不同的使用方式:第一种方式,用SSD固态盘完全代替机械磁盘。用SSD替换传统的磁盘是最简单的提升存储系统性能的方法。如果选择这个方案,关键的一点是用户要协同存储厂商来验证SSD固态盘的效果,并且遵循厂商提供的建议。如果存储系统自身的处理能力无法承载固态存储的高性能,那么SSD有可能会将整个系统拖垮。因为,如果SSD的速度超出了存储控制器的承受范围,那么很容易出现性能(I/O阻塞)问题,而且会越来越糟。另一个问题涉及到数据移动的机制,即我们的数据在什么时候、以何种方式迁移到固态存储上,或从固态存储上移走。最简单但也最不可取的方法是人工指定,比如我们通过手动设定将数据库的日志文件固定存放在SSD固态存储空间,对于比较老的存储系统来说,这也许是唯一的方式。在这里我们推荐用户使用那些自动化的数据分层移动技术,比如EMC的 FAST(Fully Automated Storage Tiering)。第二种方式,用Flash(固态存储芯片)作为存储系统的缓存。传统意义上的DRAM 高速缓存容量太小,因此我们可以用Flash作为DRAM的外围扩展,而这种利用Flash的方式较之第一种可能更容易实现一些。Flash缓存本身是系统架构的一个组成部分,即使容量再大,也是由存储控制器直接管理。而用Flash作缓存的设计也很容易解决数据分层的难题,根据一般的定义,最活跃的数据会一直放置在高速缓存里,而过期的数据则驻留在机械磁盘上。与第一种方式比较,存储系统里所有的数据都有可能借助Flash高速缓存来提升访问性能,而第一种方式下,只有存放在SSD固态盘中的数据才能获得高性能。初看起来,用Flash做高速缓存的方案几乎没有缺陷,可问题是只有新型的存储系统才支持这种特性,而且是选件,因此这种模式的发展受到一定的制约。与此相反,我们看到用Flash做大容量磁盘的高速缓存(而不是系统的高速缓存)反而成为更普遍的存储架构设计选择,因为它可以将高容量和高性能更好的融合。IBM存储软件业务经理Ron Riffe说:“在一套磁盘阵列中,只需要增加2-3%的固态存储空间,几乎就可以让吞吐带宽提高一倍。”在服务器中使用Flash存储卡。数据的位置离CPU和内存越近,存储性能也就越好。在服务器中插入PCIe Flash存储卡,比如Fusion-IO,就可以获得最佳的存储性能。不太有利的一面是,内置的Flash存储卡无法在多台服务器之间共享,只有单台服务器上的应用程序才能享受这一好处,而且价格非常昂贵。尽管如此,仍然有两个厂商对此比较热衷,他们都希望将自己的存储系统功能向服务器内部扩展。一个是 NetApp,正在使其核心软件Data Ontap能够在虚拟机hypervisor上运行;另一个是EMC,推出的功能叫做VFCache(原名叫Project Lightning)。显而易见,这两家公司的目标是通过提供服务器端的Flash存储分级获得高性能,而这种方式又能让用户的服务器与他们提供的外部存储系统无缝集成。存储加速装置存储加速装置一般部署在服务器和存储系统之间,既可以提高存储访问性能,又可以提供附加的存储功能服务,比如存储虚拟化等等。多数情况下,存储加速装置后端连接的都是用户已有的异构存储系统,包括各种各样的型号和品牌。异构环境的问题是当面临存储效率低下或者性能不佳的困扰时,分析与评估的过程就比较复杂。然而,存储加速装置能够帮助已有磁盘阵列改善性能,并将各种异构的存储系统纳入一个统一的存储池,这不但可以提升整个存储环境的整体性能、降低存储成本,而且还可以延长已有存储的服役时间。最近由IBM发布的 SmartCloud Virtual Storage Center是此类产品的代表,它将IBM的存储虚拟化软件SVC(SAN Volume Controller)以及存储分析和管理工具集成在一个单独的产品中。SmartCloud Virtual Storage Center可以将各种异构的物理存储阵列纳入到一个虚拟存储池中,在这个池之上创建的卷还支持自动精简配置。该装置不但可以管理连接在其后的存储阵列中的Flash固态存储空间,而且SmartCloud Virtual Storage Center自身内部也可以安装Flash固态存储组件。通过实时存储分析功能,SmartCloud Virtual Storage Center能够识别出I/O访问频繁的数据以及热点区域,并能够自动地将数据从磁盘迁移到Flash固态存储上,反向亦然。用户可以借助 SmartCloud Virtual Storage Center的这些功能大幅度的提高现有的异构混合存储系统环境的性能和空间利用率。与IBM SmartCloud Virtual Storage Center类似的产品还有Alacritech和Avere,它们都是基于块或基于文件的存储加速设备。日益增加的存储空间利用率利用存储精简技术,我们可以最大化的利用起可用的磁盘空间,存储精简技术包括自动精简配置、瘦克隆、压缩以及重复数据删除等等。这些技术都有一个共同的目标,即最大程度的引用已经存在的数据块,消除或避免存储重复的数据。然而存储精简技术对系统的性能稍有影响,所以对于用户来说,只有在明确了性能影响程度并且能够接受这种影响的前提下,才应该启动重复数据删除或数据压缩的功能。性能和容量:密不可分存储系统的性能和空间利用率是紧密相关的一对参数,提升或改进其中的一个,往往会给另一个带来负面的影响。因此,只有好好的利用存储分析和报表工具,我们才能了解存储的真实性能表现,进而发现系统瓶颈并采取适当的补救措施,这是必要的前提。总之,提高存储效率的工作其实就是在性能需求和存储成本之间不断的寻找平衡。

开源世界中的那几个免费数据库

发布时间:2011-11-22 09:34:30 来源:CSDN 评论:0 点击:1476 次 【字号:大 中 小】

QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 百度空间 百度搜藏 开心网 复制 更多 0

开源数据库MySQLMySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源...

开源数据库MySQL

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

盘点:开源社区那些免费的数据库软件

MySQL为多种编程语言提供了API,包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。而其自身是采用C和C++编写的,使用了多种编译器进行测试,所以,MySQL能够保证源代码具有很强的可移植性。这样的一款数据库,自然能够支持几乎所有的 *** 作系统,从Unix、Linux到Windows,具体包括AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种 *** 作系统。最重要的是,它是一个可以处理拥有上千万条记录的大型数据库。

与此同时,MySQL也产生了很多分支版本的数据库也非常值得推荐。

首先是MariaDB,它是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者 Michael Widenius创办的公司所开发的免费开源的数据库服务器。与MySQL相比较,MariaDB更强的地方在于它拥有更多的引擎,包括Maria存储引擎、PBXT存储引擎、XtraDB存储引擎、FederatedX存储引擎,它能够更快的复制查询处理、运行的速度更快、更好的功能测试以及支持对Unicode的排序等。

其次是rcona,它为MySQL数据库服务器进行了改进,在功能和性能上较MySQL有着很显著的提升。该版本提升了在高负载情况下的InnoDB的性能,同时,它还为DBA提供一些非常有用的性能诊断工具,并且提供很多参数和命令来控制服务器行为。

第三是Percona Server,它使用了诸如google-mysql-tools、Proven Scaling和 Open Query对MySQL进行改造。并且,它只包含MySQL的服务器版,并没有提供相应对 MySQL的Connector和GUI工具进行改进。

非关系型数据库NoSQL

从NoSQL的字面上理解,NoSQL就是Not Only SQL,被业界认为是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

盘点:开源社区那些免费的数据库软件

当然,NoSQL也是随着互联网Web2.0网站的兴起才能取得长足的进步。关键的需求在于,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

首先推荐的是Oracle NoSQL Database,这是一个社区版。Oracle的这个NoSQL Database, 是在10月4号的甲骨文全球大全上发布的Big Data Appliance的其中一个组件,Big Data Appliance是一个集成了Hadoop、NoSQL Database、Oracle数据库Hadoop适配器、Oracle数据库Hadoop装载器及R语言的系统。

其次推荐的是Membase。Membase是NoSQL家族的一个新的重量级的成员。Membase是开源项目,源代码采用了Apache2.0的使用许可。该项目托管在GitHub.Source tarballs上,目前可以下载beta版本的Linux二进制包。该产品主要是由North Scale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。

并且,Membase容易安装、 *** 作,可以从单节点方便的扩展到集群,而且为memcached(有线协议的兼容性)实现了即插即用功能,在应用方面为开 发者和经营者提供了一个比较低的门槛。做为缓存解决方案,Memcached已经在不同类型的领域(特别是大容量的Web应用)有了广泛的使用,其中 Memcached的部分基础代码被直接应用到了Membase服务器的前端。通过兼容多种编程语言和框架,Membase具备了很好的复用性。在安装和配置方面,Membase提供了有效的图形化界面和编程接口,包括可配置 的告警信息。

Membase的目标是提供对外的线性扩展能力,包括为了增加集群容量,可以针对统一的节点进行复制。 另外,对存储的数据进行再分配仍然是必要的。

第三推荐的是Hibari。Hibari在日语中意思为“云雀”,它是一个专为高可靠性和大数据存储的数据库引擎,可用于云计算环境中,例如 webmail、SNS和其他要求T/P级数据存储的环境中。同时,Hibari也支持Java,C/C++,Python,Ruby和Erlang语言的客户端。

第四推荐的是memcachedb。这是一个由新浪网的开发人员开放出来的开源项目,给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制,让memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合于需要超高性能读写速度,但是 不需要严格事务约束,能够被持久化保存的应用场景,例如memcachedb被应用在新浪博客上面。

第五推荐的是Leveldb。这是一个Google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计,特别是LSM算法。LevelDB是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。

XML数据库的优势

XML数据库是一种支持对XML格式文档进行存储和查询等 *** 作的数据管理系统。在系统中,开发人员可以对数据库中的XML文档进行查询、导出和指定格式的序列化。目前XML数据库有三种类型:XMLEnabledDatabase(XEDB),即能处理XML的数据库NativeXMLDatabase(NXD),即纯XML数据库HybridXMLDatabase(HXD),即混合XML数据库。

关系数据库中的第一代XML支持是切分(或分解)文档,以适应关系表格或将文档原封不动地存储为字符或二进制大对象(CLOB 或 BLOB)。这两个方法中的任一种都尝试将XML模型强制转换成关系模型。然而,这两种方法在功能和性能上都有很大的局限性。混合型模型将XML存储在类似于DOM的模型中。XML数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制。

在这里,首要要推荐的XML数据库是Sedna。它号称是一款原生态的XML数据库,提供了全功能的核心数据库服务,包括持久化存储、ACID事务、索引、安全、热备、UTF8等。实现了 W3C XQuery 规范,支持全文搜索以及节点级别的更新 *** 作。

第二款XML数据库是BaseX。这款数据库用来存储紧缩的XML数据,提供了高效的 XPath和XQuery的实现,同时,它还提供一个前端 *** 作界面。

盘点:开源社区那些免费的数据库软件

第三款推荐的是XMLDB。这款数据库使用了关系型数据库来存储任意的XML文档,因为所采用的存储机制,所以文档的搜索速度特别快,同时执行XSL转换也相当快。XMLDB同时还提供了一个PHP的模块,可以应用在Web应用中。

第四块推荐的是X-Hive/DB。它是一个为需要高级XML数据处理和存储功能的软件开发者设计的强大的专属XML数据库。X-Hive/DB Java API包含存储、查询、检索、转换和发表XML数据的方法。

与传统关系型数据库相比,XML数据库具有以下优势:第一,XML数据库能够对半结构化数据进行有效的存取和管理。如网页内容就是一种半结构化数据,而传统的关系数据库对于类似网页内容这类半结构化数据无法进行有效的管理。第二,提供对标签和路径的 *** 作。传统数据库语言允许对数据元素的值进行 *** 作,不能对元素名称 *** 作,半结构化数据库提供了对标签名称的 *** 作,还包括了对路径的 *** 作。第三,当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行 *** 作。XML数据库适合管理复杂数据结构的数据集,如果己经以XML格式存储信息,则XML数据库利于文档存储和检索可以用方便实用的方式检索文档,并能够提供高质量的全文搜索引擎。另外XML数据库能够存储和查询异种的文档结构,提供对异种信息存取的支持。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9576146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存