谈各类数据库对服务器的要求
数据库实际上是每一个电子交易、金融和企业资源规划系统的基础,随着数据库技术在商业应用中的不断发展,现在的数据库应用规模已经越来越大型化,具体体现在两个方面:一方面是数据记录的数量级开始跃升到十万、百万级别,这直接造成数据库体积的快速膨胀,例如一个人气论坛,日发贴量在1000左右,若运营一年,其数据记录就达到近40万条,而数据库占用空间将增加上百MB,如此庞大的一个数据库,在进行查询时对硬件系统要求是相当高的;另外,随着运营时间的增加,大部分数据库用户的访问量也会上升,例如一个WEB站点,日访问量假如是5000 IP,而假设每个IP点击动态页面4次,每个动态页面查询数据库5次,那么每日数据库将需要响应10万次查询。
因此,对那些以数据库作为主要支撑的应用来说(例如ERP系统、论坛系统),在具备一定的规模之后,对服务器硬件设备的要求将非常苛刻,而一旦服务器设备无法承受数据库的工作压力,将直接造成系统和各种业务的瘫痪,其损失将是无法估量的。
所以,我们今天就来探讨一下数据库应用和服务器之间的关系。
我们先来看一个很有意思的表格,它可以告诉你什么样的应用选择什么类型的数据库软件:
商业应用类型 | 服务器性能描述 |
数据库类型 | |
大型数据库 (ERP,OLAP,data mart) |
服务器仅用于运行数据库,或仅运行单一的应用。数据库的容量在10OGB以上,需要有较高的CPU处理能力,大容量内存为数据缓存服务,并需要很好的IO性能,使用这类应用时,通常需要有较高的CPU主频 |
中型数据库 (ERP,OLTP,etc) |
服务器仅用于运行数据库,或仅运行单一的应用。数据库的容量在100GB以下,需要有较高的CPU处理能力,大容量内存为数据缓存服务,并需要很好的IO性能,使用这类应用时,通常需要有较高的CPU主频。 |
数据仓库 OLAP/Data mining |
大型商业数据存储,编目、索引、数据分析等。例如:OLAP(联机事务处 理),高速商业计算,需要有良好的IO性能。 |
基本应用与web服务 | |
电子商务E commerce |
功能与典型的应用服务器相同,性能视商业应用和用户数量而定,可能会 需要一定的数据安全传输与存储,或作为存储数据的主机。需要一定的CPU 和内存处理能力,通常,带有四路Pentium Ill Xeon处理器以及大容量数据存储的服务器可以基本满足要求。(可以满足每秒几千条请求). |
文件及打印服务器 | 仅用来将数据从一处传递到另一处,对CPU的处理能力要求较低。 |
常规服务器域/代理/防火墙服务器 | 为了能够使域服务器和防火墙服务器有快速的响应能力,因此它们需要具 备较高的CPU处理能力,代理服务器需要有较大的内存用来存储和作为高 速缓存存储Web地址,代理服务器还需要有较大的存贮容量。建议选择机 柜式服务器可以节省占地空间 |
互联网服务应用 Linux/Windows NT/Novell |
当互联网服务商针对专用的服务器比如邮件服务器、浏览服务器需要扩充 时,服务器应当具有价格低廉、小巧、高性能、通常一个或两个CPU基本 可以满足要求,而四路处理器的服务器则有些浪费。建议选择机柜式服务 器以节省占地空间。 |
通讯服务器 Messaging/E-mail |
快速的IO是这类应用的关键,磁盘的IO(编目、存储信息)是主要瓶颈。 许多用户为了保证所存储的信息的可用性,采用 RAID 5阵列方式,但在 一定程度上会影响IO的性能,通常1个或2个CPU基本可以满足用户的 需求。这种服务器用户对于实时响应要求不高,用户所占用资源一般不超 过10%,所以最需要考虑的是数据信息的备份,以及如何在2~6小时能 将信息恢复正常。建议选择机柜式服务器以节省占地空间。 |
浏览服务器(动态) | 通过存储在服务器中的网页可以构建网络空间,例如使用微软公司的技术 ASP。与静态网页相比,这种应用需要更高的CPU处理能力,建议选择机 柜式服务器以节省占地空间。高速的网络通讯能力也是必不可少的。 |
浏览服务器(静态) | 静态网页通常是指有文本和图片共同组合存储的服务器中。通常变化不 大。使用两个CPU和 100MB/S的网卡可以非常轻松的满足极高的点击 率。当使用双路处理器的服务器时,可以完全满足每秒钟千次的点击。IGB 内存作为网页的高速缓存。也可以使用四路处理器并额外添加内存与网 卡。 |
应用服务器 | |
应用服务器 (client/server,ERP) |
任何一种客户机/服务器的网络系统比如 ERP,最典型的商业应用,客户 机在一端,而数据库服务器在另一端,它们通过网络系统通讯。系统具有 良好的扩展和调整能力,可以将不同应用安装到不同的服务器上,也可以 将在每个服务器上安装多个应用。ERP系统需要两个或更多的CPU以及 512MB以上的内存。具体数量视用户数量而定。 |
工作流服务器 Collaboration/Groopare |
使用类似于 Lotus Notes, groupware, calendaring等等。对网络服务器的CPU和内存处理能力要求属于中等。不需要额外投资大量的硬件资 源。 |
多应用服务器 | 多种应用程序以及它们使用的数据库共同运行在同一台服务器上,可以替 代多台小型的服务器。建议使用多个CPU可以获得较好的使用效果。通常 使用多个速度稍低的CPU的效果好于使用一个高速的CPU。 |
小型/专用服务器 | 特定的应用系统,医疗、零售、经销商等特定的应用。使用带有两个CPU 的级别的服务器可以支持数百的用户终端。通常塔式服务器是首 选。 |
终端服务器/基于运算服务 | 在多用户环境下,所有的硬件及软件资源都可以通过终端服务器共享给网络上的所有的用户,应用程序运行在服务器上,用户可以通过用户终 端使用所有的应用程序。使用多处理器将可以有效改善系统的性能。内存的配置非常关键,通常需要有16MB内存分配给 Windows NT,有 32MB内 存分配给终端服务器,每个用户需要有4-8MB内存。软件的使用与硬件的资源有很大的关系,通常使用带有两路处理器和IGB内存的服务器可以 支持大约50个用户,带有四路处理器和4GB内存的服务器可以支持100个用户,带有8路处理器及4GB内存的服务器可以支持大约200个用户。 |
当然,就国内的实际情况来看,使用最广泛的无疑还是这四种数据库:Oracle,MS SQL Server,My SQL和Access,下面我们就逐个分析一下这几种数据库对于服务器的要求。
甲骨文 Oracle
提到ORACLE,不得不详细介绍一下,因为它是目前业内公认最牛X的数据库系统,广泛用于大型商业、高等院校和科学研究领域:
ORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE 的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。ORACLE 数据库提供了基于角色(ROLE)分工的安全保密管理,在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。ORACLE 数据库提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。另外,ORACLE 数据库提供了新的分布式数据库能力,可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。
OK,下面分析一下ORACLE 数据库:根据实际使用测试的经验,不少程序员都已经确认ORACLE 数据库在运行时效率是非常高的,大家发现这其实是因为它非常巧妙而合理的使用了系统内存,当然,它同时也是大量的使用了系统内存,至于其目的究竟是为了缓解硬盘缓存压力还是基于其他因素,我们就不深入探讨,我们可以明确的一点就是,ORACLE 数据库要有足够容量的系统内存进行支持才能较好的发挥其性能优势,尤其是那些数据库写入工作(例如 UPDATE、INSERT/ADDNEW等动作)比较频繁的应用,使用大容量内存非常有必要。
因此,如果您是使用ORACLE 数据库,可以在系统内存容量方面进行提升,现在的Nocona、Opteron处理器已经突破传统4GB内存直接寻址的限制了,但服务器主板的设计对于大容量内存系统的限制还是存在,大家还得注意这个问题;在内存控制方面表现比较出色的是IBM和HP,这两家公司的内存自主研发技术比较多也比较强大,尤其是IBM,不仅可以有效实现内存的大容量扩展,还能提供多种纠错和备份保护,对于企业级应用是非常适合的。另外,数据库对内存系统要求高并不是说一味提升内存容量就OK了,整体性能的提高无论任何时候都是真理;对于一些中高端的应用,我们推荐大家使用8路或更8路以上的服务器,特别是AMD的Opteron 8XX系列,性能确实非常强悍,而且其独到的HyperTransport技术可以为多路系统提供足够的总线,加上内存控制器内嵌于核心之上,使得它的前端系统性能要比Intel的MP更为抢眼,如果是Unix系统,还可以使用IBM的Power 5系统,Power 5处理器是IBM自家的RISC(精简指令集)架构处理器,采用双核设计,性能也非常强悍。至于磁盘系统,基本上是取决于使用什么样的RAID控制卡和使用什么RAID工作模式,关于这方面的问题大家可以参看我们的磁盘阵列技术文章,相信会找到一个满意的答案,这里就不进行详述了。
MS SQL Server
这是微软的商业数据库系统,有多个版本,最强大的是Enterprise Edition,需要在Windows 2000 Advanced Server或Windows 2003 Server Enterprise Edition上面才能安装。微软之前的数据库一直被指性能不佳,不登大雅之堂,于是比尔高薪挖来很多牛人开发出这套MicroSoft SQL Server,目前常用的版本还是MS SQL Server 2000,尽管新版本已经问世。这套数据库系统性能表现也是可圈可点,彻底改变了微软没有高性能大型数据库的局面,由于有自家 #p#page_title#e#操作系统做后盾,加上Visual Studio开发软件的强力支持,该数据库系统在国内应用也非常普及,各种中小型商业和院校应用都看得到它的身影,大部分以IIS+ASP/.NET模式运行的中等以上规模WEB站点都是使用这套数据库。
MS SQL Server对服务器设备的要求并不像ORACLE那么高,但是根据大多数程序员使用的感受,要提高MS SQL Server的性能在处理器和磁盘系统上做文章效果比较明显。鉴于MS SQL Server的主流应用环境一般都是双路XEON(这东西还不能移植到Unix系统,而且性能不如ORACLE,因此一般不用于高端领域),因此我们针对这类数据库提出的建议是:使用高频的Xeon处理器,建议使用双路,另外,Opteron表现确实非常优秀,也可以适当考虑;磁盘系统采用RAID 0或者RAID 1用户可以自己决定,如果有配阵列卡,组个RAID 5也可以;特别说明一下,Windows 2003 Server Enterprise Edition执行效率确实比Windows 2000 Advanced Server高,对于使用MS SQL Server的用户来说可以考虑使用2003作为操作系统。
My SQL
这是一个开放而且免费的数据库。虽然功能不是非常强大,性能也只能算是一般,但在各种中小型应用中还是非常普及的,毕竟它比起针对小型办公应用而设计的ACCESS来说还是非常有优势的--不仅免费,而且性能、安全性比ACCESS好很多。My SQL可以在Windows环境下使用,不过其最经典的组合是Linux+Apache+PHP/JSP+MySQL。现在以这种组合出现的小型网站非常多,这类网站对服务器配置要求非常低,当然,由于数据库本身的限制,MySQL也不大适合大访问量的商业应用。
在我们的测试中经常使用MYSQL作为数据库平台,一般是使用一个拥有5万注册用户的论坛数据库作为测试对象,测试结果也显示出一个问题,磁盘性能对MYSQL数据库查询的效率影响特别明显,要远远高出CPU、内存等配件的影响,一台配置一般的服务器只要拥有高性能的磁盘系统,一样可以获得很好的成绩;当然,如果在数据库查询中包含很多复杂的查询比较条件,那么CPU主频的作用也是非常明显的。这里,我们推荐这类数据库的用户使用高性价比的SATA阵列,用主板自带的软RAID就行,性能同样可以令人满意,而且成本非常低,当然,适当提升CPU的主频也是有价值的。
Access
Access是微软面向办公用户推出的一种数据库系统,在Office光盘中带有它的管理软件。既然是面向办公用户推出的一种数据库系统,那么其性能自然是比较差的,不过这种“业余”级别的数据库无需安装,而且使用管理非常简单,因此深受初级程序员的欢迎,绝大部分的ASP小型站点几乎都是使用这种数据库;当然,其性能非常有限,不大适合于安全性要求较高和数据量较大的环境。
Access数据库非常带有微软软件的特点--简单易用、占资源、效率低,因此要提升这种数据库的性能,从硬件方面只能是全面升级,如果要大幅度提升性能,建议升级服务器配置的同时将数据库系统升级到MS SQL Server。Access数据库和P4服务器是绝配,当然,如果使用P4服务器,那么升级的空间就不会太大了,所以还是以经济实用为主导。
总结:
数据库其实是非常博大精深的,很难用短短一篇文章把数据库和服务器之间错综复杂的关系说清楚,只是希望以上肤浅的经验和看法,能够为初级用户提供一些参考。