您的位置:首页 > 数据库

数据库优化-基准测试(一)

2015-06-22 18:26 274 查看

基准测试的目的

基准测试是为了找出系统的瓶颈,包括:

硬件

磁盘、内存、网络等。

操作系统

文件系统、内存管理、驱动、调度等。

RDBMS

SQL层、存储引擎层。

Schema设计

索引、表结构、数据类型。

Query

Query写的不好、逻辑错误。

应用程序问题

系统各部分之间的交互

磁盘IO、RAM、RDBMS等。

测量值

如何测量?哪里最花时间?哪个组件最忙?

找出造成瓶颈的原因

系统测试计划的需求

选择正确的硬件和软件 ;

理解系统的行为 ;

理解系统的性能 ;

对系统做正确调优和配置 ;

识别系统的优缺点 ;

定位系统的薄弱点 ;

计划未来的增长量 ;

计划可能发生的特殊事件 ;

理解系统的伸缩性;

哪些要做基准测试?

完整测试

对所有的基础设施做测试,Web服务器、应用程序、缓存层、数据库、网络、外部资源等;

这种方法提供了一个完整的全貌,但非常难以实现;

结果复杂难以理解,有可能会误导。

单个组件

只基准测试基础设施的单个组件;

容易实现,但可能会忽略真正的瓶颈;

结果容易理解。

单个组件的基准测试的比较需要考虑OS配置、硬件、DB系统、参数、Schema、查询及工作负载。

基准测试计划指南

定义基准前的目标;

了解可重复生成的工作负载;

记录所有的信息,甚至看起来可能没有用的,包括硬件信息、配置、版本、表大小等;

创建基线,每一个基准,都是未来的基线;

定义基准测试后的目标;

仅在同一时间修改一个配置,并返回基准结果。

基准测试的类型

性能测试类型

压力测试

负载测试

耐久性测试

峰值测试

压力测试

测试系统的极限,包括

使用极限负载

定义上限

定义容量

负载测试

测试系统可承受的负载,包括:

用户数量

事务数量

数据库大小

耐久性测试

和负载测试类似,仿真可持续的时间,在较长的时间段内测试系统的稳定性。

峰值测试

测试工作负载的突然变化;

定义在当前环境下的系统行为。例如:

不影响系统的情况下处理峰值;

性能将会降低;

系统将停止/失败/崩溃。

性能测试的目的

在基准测试前必须规划;

验证系统是否满足规定的标准;

比较两个系统;

隔离系统中性能差的组件;

高吞吐量;

低延迟;

面对伸缩时的稳定性;

面对并发时的稳定性。

吞吐量

是广泛使用的测量值,指的是单位时间(秒或分钟)内成功的事务数量;

通常仅仅关注平均值;

广泛用于市场上的比较;

对压力测试很重要。

延迟

完成一个事务所需的总时间;

最小/平均/最大响应时间;

对负载测试很重要。

面对伸缩时的稳定性

测量系统伸缩时的表现;

在成为严重问题前发现薄弱点;

对容量规划很有用;

常用于耐久性测试。

面对并发时的稳定性

测量线程数或连接数改变时系统的表现;

用于找出线程数量的上限,并引入队列;

常用于峰值测试。

参考:《Understanding Performance through Measurement, Benchmarking and Profiling》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: