数据库优化-基准测试(一)
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》
相关文章推荐
- oracle多表查询
- Redis String命令
- mysql 导出 导入测试
- 《mysql 必知必会》 笔记(六)
- Memcached的CAS协议
- 配置SQL Server的身份验证方式
- OSPF(五):链路状态数据库
- LRM-00109: could not open parameter file '/u01/app/oracle/product/12.1.0/db_1/dbs/initepps.ora'
- mysql 触发器学习
- Memcached 集群架构方面的问题
- sqlserver 存储过程
- mysql常用函数
- Mysql命令大全
- sql server两种分页方法
- MySql基础知识、存储引擎与常用数据类型
- CentOS7安装Oracle 12C
- 探索MySQL高可用架构之MHA(3)
- 笔记:MySQL初次使用安全设置
- Mysql my.ini 配置文件详解
- (ADO.NET)SqlCommand参数化查询