前言

在本章之前的所有部分都是介绍的整个系统中的软件环境对系统性能的影响,这一节我们将从系统硬件环境来分析对数据库系统的影响,并从数据库服务器主机的角度来做一些针对性的优化建议。

任何一个系统的硬件环境都会对起性能起到非常关键的作用,这一点我想每一位读者朋友都是非常清楚的。而数据库应用系统环境中,由于数据库自身的特点和在系统中的角色决定了他在整个系统中是最难以扩展的部分。所以在大多数环境下,数据库服务器主机(或者主机集群)的性能在很大程度上决定了整个应用系统的性能。

既然我们的数据库主机资源如此重要,肯定很多读者朋友会希望知道,数据库服务器主机的各部分硬件到底谁最重要,各部分对整体性能的影响各自所占的比例是多少,以便能够根据这些比例选取合适的主机机型作为数据库主机。但是我只能很遗憾的告诉大家,没有任何一个定律或者法则可以很准确的给出这个答案。

当然,大家也不必太沮丧。虽然没有哪个法则可以准确的知道我们到底该如何选配一个主机的各部分硬件,但是根据应用类型的不同,总体上还是有一个可以大致遵循的原则可以参考的。

首先,数据库主机是存取数据的地方,那么其IO操作自然不会少,所以数据库主机的IO性能肯定是需要最优先考虑的一个因素,这一点不管是什么类型的数据库应用都是适用的。不过,这里的IO性能并不仅仅只是指物理的磁盘IO,而是主机的整体IO性能,是主机整个IO系统的总体IO性能。而IO性能本身又可以分为两类,一类是每秒可提供的IO访问次数,也就是我们常说的IOPS数量,还有一种就是每秒的IO总流量,也就是我们常说的IO吞吐量。在主机中决定IO性能部件主要由磁盘和内存所决定,当然也包括各种与IO相关的板卡。

其次,由于数据库主机和普通的应用程序服务器相比,资源要相对集中很多,单台主机上所需要进行的计算量自然也就比较多,所以数据库主机的CPU处理能力也不能忽视。

最后,由于数据库负责数据的存储,与各应用程序的交互中传递的数据量比其他各类服务器都要多,所以数据库主机的网络设备的性能也可能会成为系统的瓶颈。

由于上面这三类部件是影响数据库主机性能的最主要因素,其他部件成为性能瓶颈的几率要小很多,所以后面我们通过对各种类型的应用做一个简单的分析,再针对性的给出这三类部件的基本选型建议。

典型OLTP应用系统

对于各种数据库系统环境中大家最常见的OLTP系统,其特点是并发量大,整体数据量比较多,但每次访问的数据比较少,且访问的数据比较离散,活跃数据占总体数据的比例不是太大。对于这类系统的数据库实际上是最难维护,最难以优化的,对主机整体性能要求也是最高的。因为他不仅访问量很高,数据量也不小。

针对上面的这些特点和分析,我们可以对OLTP的得出一个大致的方向。

虽然系统总体数据量较大,但是系统活跃数据在数据总量中所占的比例不大,那么我们可以通过扩大内存容量来尽可能多的将活跃数据cache到内存中;

虽然IO访问非常频繁,但是每次访问的数据量较少且很离散,那么我们对磁盘存储的要求是IOPS表现要很好,吞吐量是次要因素;

并发量很高,CPU每秒所要处理的请求自然也就很多,所以CPU处理能力需要比较强劲;

虽然与客户端的每次交互的数据量并不是特别大,但是网络交互非常频繁,所以主机与客户端交互的网络设备对流量能力也要求不能太弱。

典型OLAP应用系统

用于数据分析的OLAP系统的主要特点就是数据量非常大,并发访问不多,但每次访问所需要检索的数据量都比较多,而且数据访问相对较为集中,没有太明显的活跃数据概念。

基于OLAP系统的各种特点和相应的分析,针对OLAP系统硬件优化的大致策略如下:

数据量非常大,所以磁盘存储系统的单位容量需要尽量大一些;

单次访问数据量较大,而且访问数据比较集中,那么对IO系统的性能要求是需要有尽可能大的每秒IO吞吐量,所以应该选用每秒吞吐量尽可能大的磁盘;

虽然IO性能要求也比较高,但是并发请求较少,所以CPU处理能力较难成为性能瓶颈,所以CPU处理能力没有太苛刻的要求;

虽然每次请求的访问量很大,但是执行过程中的数据大都不会返回给客户端,最终返回给客户端的数据量都较小,所以和客户端交互的网络设备要求并不是太高;

此外,由于OLAP系统由于其每次运算过程较长,可以很好的并行化,所以一般的OLAP系统都是由多台主机构成的一个集群,而集群中主机与主机之间的数据交互量一般来说都是非常大的,所以在集群中主机之间的网络设备要求很高。

特殊的应用系统

除了以上两个典型应用之外,还有一类比较特殊的应用系统,他们的数据量不是特别大,但是访问请求及其频繁,而且大部分是读请求。可能每秒需要提供上万甚至几万次请求,每次请求都非常简单,可能大部分都只有一条或者几条比较小的记录返回,就比如基于数据库的DNS服务就是这样类型的服务。

虽然数据量小,但是访问极其频繁,所以可以通过较大的内存来cache住大部分的数据,这能够保证非常高的命中率,磁盘IO量比较小,所以磁盘也不需要特别高性能的;

并发请求非常频繁,比需要较强的CPU处理能力才能处理;

虽然应用与数据库交互量非常大,但是每次交互数据较少,总体流量虽然也会较大,但是一般来说普通的千兆网卡已经足够了。

在很多人看来,性能的根本决定因素是硬件性能的好坏。但实际上,硬件性能只能在某些阶段对系统性能产生根本性影响。当我们的CPU处理能力足够的多,IO系统的处理能力足够强的时候,如果我们的应用架构和业务实现不够优化,一个本来很简单的实现非得绕很多个弯子来回交互多次,那再强的硬件也没有用,因为来回的交互总是需要消耗时间。尤其是有些业务逻辑设计不是特别合理的应用,数据库Schema设计的不够合理,一个任务在系统中又被分拆成很多个步骤,每个步骤都使用了非常复杂的Query语句。

笔者曾经就遇到过这样一个系统,该系统是购买的某知名厂商的一个项目管理软件。该系统最初运行在一台Dell2950的PCServer上面,使用者一直抱怨系统响应很慢,但我从服务器上面的状态来看系统并繁忙(系统并发不是太大)。后来使用者强烈要求通过更换硬件设施来提升系统性能,虽然我一直反对,但最后在管理层的要求下,更换成了一台Sun的S880小型机,主机CPU的处理能力至少是原来机器的3倍以上,存储系统也从原来使用本地磁盘换成使用EMC的中断存储CX300。可在试用阶段,发现系统整体性能没有任何的提升,最终还是取消了更换硬件的计划。

所以,在应用系统的硬件配置方面,我们应该要以一个理性的眼光来看待,只有合适的才是最好的。并不是说硬件资源越好,系统性能就一定会越好。而且,硬件系统本身总是有一个扩展极限的,如果我们一味的希望通过升级硬件性能来解决系统的性能问题,那么总有一天将会遇到无法逾越的瓶颈。到那时候,就算有再多的钱去砸也无济于事了。

转自 《MySQL性能调优与架构设计》

硬件环境对系统性能的影响相关推荐

  1. I O对计算机系统性能的影响,DASD操作对计算机系统性能的影响

    DASD操作对计算机系统性能的影响 在对其过程模型化的基础上,本文分析了DASD I/O操作对计算机系统性能产生的影响及其形 (本文共8页) 阅读全文>> BIOS设置对系统性能的影响非常 ...

  2. mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...

    简介 通过sysbench的oltp_read_write测试来模拟业务压力.以此来给指定的硬件环境配置一份比较合理的MySQL配置文件. 环境介绍 硬件配置 软件环境 优化层级与指导思想 优化层级 ...

  3. 第二章 操作系统的硬件环境

    第二章 操作系统的硬件环境 操作系统运行的硬件环境组成 中央处理器 存储系统 中断系统 I/O系统 时钟以及时钟序列 //- Linux中断处理 操作系统的运行环境主要包括系统的硬件环境和由其他的系统 ...

  4. 问题分析报告--在压力场景下OS在某种硬件环境下的性能可能会下降90%的问题

    1.问题描述 1.1 基本信息[Basic Information] 集群规模:37+3台物理机,每台128G内存:CPU:2*16C:SATA磁盘,2T*12 hadoop社区版本:** 商业版本: ...

  5. mysql是逻辑库吗_mycat是一种比较简单的中间件产品,可以帮助mysql进行分库,同时统一在一个逻辑库。硬件环境:系统:centos 7.6数据库版本:5.7.19mycat:...

    mycat是一种比较简单的中间件产品,可以帮助mysql进行分库,同时统一在一个逻辑库. 硬件环境: 系统:centos 7.6 数据库版本:5.7.19 mycat:1.6..6.1 github上 ...

  6. 孟母三迁:学习中环境对人的影响特别的重要

    孟母三迁 故事原文:西汉·刘向<列女传·卷一·母仪>:"孟子生有淑质,幼被慈母三迁之教." 昔孟子少时,父早丧,母仉[zhǎng]氏守节.居住之所近于墓,孟子学为丧葬, ...

  7. 软件环境、硬件环境、开发工具

    软件环境:一般包括数据库(mysql,sqlserver,oracle,db2),运行的中间件,即应用服务器,如tomcat,jetty,jboss,weblogic,webphere,以及运行的操作 ...

  8. 认知环境,环境对产品的影响无孔不入

    本文由菩提创作,本文仅菩提个人观点. 一. 开  篇 朋友问:"在互联网公司这么久,怎么撑下来的?" Hmm,糟心事真不少.成年人的世界,没有人轻轻松松. 菩提那老夫聊发少年狂的豪 ...

  9. oracle 11g 硬件需求,ORACLE 11g R2数据库装配硬件环境要求

    ORACLE 11g R2数据库安装硬件环境要求 物理内存要求:最小1G,在windows7,windows8,windows8.1上最小2G. 虚拟内存(或分页空间)容量要求: Available ...

最新文章

  1. 二值化图像去除小黑点_python与图像工程(2020.10.11)
  2. 如何让一个对话框全屏对话框
  3. image vb6 图片自适应_请问如何实现图片在窗体上的大小自适应?
  4. Java 设计模式-【单例模式】
  5. 顺序图中页面、窗口等为什么当做类处理?
  6. 使用FileReader对象的readAsDataURL方法来读取图像文件
  7. 你足够了解Context吗?
  8. 高斯光束matlab 仿真,高斯光束的matlab仿真
  9. 【FPGA】精品FPGA书籍推荐
  10. java课设超市收银系统_超市收银系统java课程设计.doc
  11. Segger Embedded Studio使用有什么技巧?
  12. 研究生师兄谈SCI论文写作心得
  13. Conversion of feet/inches to meters-英尺、英里装换为米
  14. 笔记本计算机的功率一般多少,笔记本电脑功率是多少 怎么看笔记本功率多大...
  15. 关于实施《政府会计制度》的衔接
  16. C/C++ tip: How to detect the operating system type using compiler predefined macros
  17. 乌镇时间到,创宇云端安全治理体系即将亮相世界互联网大会
  18. Androi--内容提供器
  19. Linux新世纪五笔
  20. 基于 PCA 的人脸识别系统及人脸姿态分析

热门文章

  1. Ubuntu系统博通网卡不能联网解决
  2. SLO 落地方案:VALET
  3. Java多线程上——基本概念及操作
  4. 第二届中国“高分杯”美丽乡村大赛baseline
  5. 初识列表及循环练习题
  6. u盘ios刻录_无需越狱易操作 iPhone/iPad也能当U盘
  7. 英语语法检查工具C++
  8. 计算机学院运动会解说词,运动会各学院解说词
  9. 【Java二十周年】爱上Java无法自拔
  10. 索尼录音笔怎么导出录音内容_商务、学生、记者:有能把录音文件转成文字文档的软件吗?...