1.2 工作负载类型
在了解了整体性能的目标后,我们简单介绍下常见的工作负载类型。对于数据库系统来说,不同的工作负载类型对响应时间及用户数量的要求都不一样。只有了解了响应时间的要求才能有针对性地调优。比如在一个OLAP系统中,一条SQL语句的执行时间为15分钟可能很正常,但是如果上述情况发生在一个OLTP系统中,可能远远背离客户的实际需求,给企业造成无法估计的损失。
1.2.1 联机事务处理(OLTP)
联机事务处理(OLTP)数据库是大多数重要任务和广泛部署的数据库类型。每天有数百万的事务围绕数十亿美元在全球的OLTP系统上运行。OLTP系统的主要特征是实时或联机事务处理,经常需要立即响应用户,常见的OLTP系统有:
● 银行的ATM(自动取款机);
● 团购网的交易系统;
● 在线订票系统;
● 自动贩卖机的销售终端。
从一个工作负载的角度来看,OLTP数据库的典型特征为:
● 处理大量并发用户会话;
● 处理大量使用简单SQL语言的事务;
● 一次处理单个数据库行;
● 希望以秒为单位而不是以分钟或小时为单位完成事务。
OLTP系统实时处理大量商务操作数据,因此具有严格的用户响应和可用性要求,同时也具有很多吞吐量的要求并且需要进行大量的数据库的插入和修改操作。OLTP系统服务于成百上千的并发用户,这会对性能产生很大影响。在设计一个OLTP系统时,在性能方面的特殊考虑如下:
● 用索引提高性能,但过多的索引可能降低插入或修改操作的性能;
● 尽可能地优化SQL语句;
● 数据页的尺寸应该保持在4KB~8KB左右。
1.2.2 联机分析处理(OLAP)
联机分析处理(OLAP)是基于数据库之父E.F.Code在1993年发表的论文“providing to User Analysts:An IT Mandate”中给出的12条规则,这篇论文给出了一种设计系统的方法,这种系统能够提供活动的特定数据访问和分析。
OLAP的基本定义特征是它们提供数据的多维或聚合视图。多维数据被很多数据库立方体调用,这个术语表示数据已经被转换成不同的维数,例如地区、销售图和乘积栈,也可以使用其他维度,但三维是最容易理解的。
对于一个OLAP系统,一个用户可以提出这样的问题:“哪些地区的销售最好呢?”然后选择一个特殊的地区,调整数据立方体查看下一个维度,并问:“这些地区哪些乘积线和销售最好?”然后重复调整数据立方体,并提问:“如何随时间而变化呢?”并最终通过OLAP得出想要的数据。
OLAP数据库使用的聚合视图是用于执行这些类型分析的汇总表。DB2数据库可以搜索整个数据库回答每个问题,但这会消耗大量的磁盘I/O和CPU时间,并减少了系统能够支持的响应时间和用户个数。在OLAP从数据库的其他系统中获取更多数据之后,该数据库建立了一系列包含从各个销售细目中产生的销售图的平均值和总计值,然后该应用使用这些很小的汇总表回答用户对应用的大多数提问。
OLAP数据库的工作负载特性不同于OLTP,通常只为更少的用户提供服务,能够支持使用复杂SQL语句的大型查询,并会同时处理多个数据库行。
OLAP系统具有以下特征:
● 需要5位数的磁盘空间来支持大型汇总表(临时空间);
● 数据库大部分是静态的,只有最后月份的数据发生改变。
1.2.3 决策支持系统(DSS)
决策支持系统(DSS)不同于典型的面向事务的系统,是为了支持终端用户而从多个源系统中提取的数据组成的:
● 使用预先定义查询的数据分析应用;
● 应用生成查询;
● 特定用户查询;
● 报告要求。
由于提供给用户大量的历史数据,DSS系统需要比OLTP系统处理更多的数据。而OLAP查询集中于特殊商务功能,DSS查询通常更复杂。处理大量数据的需求导致在很多CPU中集中进行数据排序和链接操作。这些查询类型的复杂性和可变性在设计一个DSS系统时在性能上要特别加以考虑。DSS系统分两类:数据仓库和数据中心,通常具有以下工作负载的特征:
● 复杂的SQL语句;
● 可以花费几分钟或几小时的长时间运行SQL查询;
● 回答复杂商务问题的各种查询类型;
● 应用经常模拟商务的逻辑结构并向终端用户隐藏数据库和SQL结构;
● 执行大多数完整的表扫描或使用由数据库管理员建立的汇总表。
1.2.4 企业资源规划(ERP)
ERP系统在最近数十年里由于把多个数据源合并成一个系统提供了紧密的集成应用而获得了巨大的成功,它是典型地以一个三层客户服务器结构实现的。从数据库工作负载的观点来看,ERP系统可以被看作一个综合体,显示了与OLTP、OLAP和DSS相同的工作负载特征。起初,ERP系统主要用于一个OLTP容量中,但随着发展,它们扩展并提供了更多的DSS功能或模型。
ERP系统具有以下6个特征。
(1)具有三层客户服务器解决方案,包括:
● 一个中心数据库服务器;
● 多个应用服务器,是主要的计算限定系统,运行几个完成用户工作的进程,并为了提高性能告诉缓冲数据库服务器的数据,一个典型的配置是一个数据库服务器带4~8个应用服务器。这些应用服务器还限制链接到数据库的用户个数;
● 用户工作站,向用户提供良好的基于GUI的应用和图形,数据库结构是复杂的,具有成百上千张表。
(2)应用是完全通用的。但需要满足一个公司的特殊商务要求,其设计大部分采用数据库的表,例如,各个区域、部门和报表结构及相应的开销和利润都集中储存在数据库表中。对这种数据库的查询比OLTP系统复杂得多,并且要链接多个表。
(3)为了提高响应时间和支持的用户个数,大多数ERP销售商不允许直接修改该数据库。修改被典型地分配到后台进程,并在以后进行修改。这样减少了数据库锁等待问题并加快了用户的响应时间。
(4)处理大量的使用简单或复杂的SQL语句的事务(OLTP和OLAP混合)。
(5)交互用户响应时间以秒为单位度量(与OLTP相同)。
(6)一次处理很多数据库行(与OLAP相同)。
以上是几种常见的工作负载类型,当我们面对一个数据库性能问题时,充分了解当前数据库的工作负载才可以有效地针对其特性进行调整及优化。