数据库基准测试中应该避免的错误

基准测试可以说是唯一方便有效的、可以学习系统在给定工作负载下会发生什么的方法。可见基准测试的重要性,在设计基准测试前,我们要了解一下基准测试的常见错误,防止自己在测试中犯这些错误。

数据库基准测试中常见错误:

  • 使用真实数据的子集而不是全集:例如真实情况下,应用需要处理100G的数据,然而在测试时,只有1G数据;或者只使用当前数据进行测试,却希望模拟未来业务大幅增长后的情况。
  • 使用错误的数据分布:例如使用均匀分布的数据测试,而系统真实数据有很多热点区域(随机生成的测试数据通常无法模拟真实的数据分布)
  • 使用不真实的分布参数:例如假定所有用户的个人信息都会被平均地读取。
  • 在多用户场景下,只做单用户测试。
  • 在单服务器上测试分布式应用。
  • 与真实用户行为不匹配。例如Web页面中的“思考时间”。真实用户在请求到一个页面后,会阅读一段时间,而不是不停顿的一个接一个点击相关链接。
  • 反复执行同一个查询。真实的查询都是不尽相同的,这可能会导致缓存命中率降低。而反复执行同一个查询在某种程度上,会全部或者部分缓存结果。
  • 没有检查错误:如果测试的结果无法得到合理的解释,比如一个本应很慢的查询突然变快了,就应该检查是否有错误产生。否则可能只是测试了MySQL检测语法错误的速度了。基准测试完成后,一定要检查一下错误日志,这应该时基本要求。
  • 忽略了系统预热(warm up)的过程。例如系统重启后马上进行测试。有时候需要了解系统重启需要多长时间才能达到正常的性能容量,要特别留意预热的时长。反过来说,如果要想分析正常的性能,需要注意,若基准测试在重启后马上启动,则缓存时冷的,还没有数据,这时即使测试的压力相同,得到的结果也和缓存已经装满数据时时不同的。
  • 使用默认的服务器配置
  • 测试时间太短。基准测试需要持续一段时间。

原文地址:https://www.cnblogs.com/pengxiaozhi/p/8969149.html

时间: 2024-10-23 22:07:39

数据库基准测试中应该避免的错误的相关文章

Hibernate数据库配置文件中数据库名称错误问题

之前碰见一个项目部署在武汉,又部署在南京.由于是配合别人做的,数据库的搭建由别人完成,我们只是负责数据库中的几个表的数据处理.以前的数据库名称是projectwh,部署南京时,开始也是使用的projectwh的名称,后来对方重新创建了一个数据库projectnj(projectwh没有删除),我们对应的将Hibernate配置文件中的url中的数据库名称修改了成projectnj,但是发现存取操作的目标仍然会是projectwh中的表格. 一般想来Hibernate配置文件中应该只有url跟数据

SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 ||尝试在数据库 5 中提取逻辑页 (1:1640) 失败

use test go ALTER DATABASE test SET SINGLE_USER DBCC CHECKDB (test, repair_allow_data_loss) with NO_INFOMSGS go ALTER DATABASE test SET MULTI_USER go 对于单个数据库报错了,运行这个修复不行.后来我在tempdb运行才可以. dbcc checkdb('tempdb') 其实开始的时候还有另一个错误: 尝试在数据库 5 中提取逻辑页 (1:1640)

在从该备份集进行读取时,RESTORE 检测到在数据库 "CISDB" 中的页(0:0)上存在错误。系统断定检查已失败

[1]错误信息 [1.1]在测试机上还原 从主服务器上传输备份文件到测试机,发现还原报错,错误信息如下: (1)第一次还原,直接restore with stats=10 /* 已处理百分之 10. 已处理百分之 20. 已处理百分之 30. 消息 3183,级别 16,状态 2,第 1 行 在从该备份集进行读取时,RESTORE 检测到在数据库 "CISDB" 中的页(0:0)上存在错误. 消息 3013,级别 16,状态 1,第 1 行 RESTORE DATABASE 正在异常终

数据库设计中的Soft Delete模式

最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文章中,我们不仅仅会对该模式进行介绍,同时也会列出该模式可能导致的一系列问题,以帮助大家正确地决定是否使用该模式. Soft Delete简介 首先先来想一个需求,那就是对用户操作的回滚支持.例如我现在正在用Word编写这篇文章.当我执行了一个错误操作的时候,我仅仅需要键入Ctrl + Z就可以进行回

[SQL_Server_Question]Msg 1105无法为数据库 'tempdb' 中的对象分配空间,因为 'PRIMARY' 文件组已满

错误消息: Msg 1105, Level 17, State 2, Line 266Could not allocate space for object 'dbo.Large Object Storage System object: 422392492982272' in database 'tempdb' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropp

数据库设计中的一些原则

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体. 这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.   这就是"一张原始单证对应多个实体"的典型例子. 2.

试图从数据库 ‘UFData_001_2003' 中提取的逻辑页 (1:10720) 属于对象 '0',而非对象 'syscolumns'

数据库可以使用,可以备份,但对备份进行恢复时报错,使用sp_attach_db对两个物理文件进行连接时,报同样错误: 服务器: 消息 605,级别 21,状态 1,行 1 试图从数据库 ‘UFData_001_2003' 中提取的逻辑页 (1:10720) 属于对象 '0',而非对象 'syscolumns'. 连接中断 注:严重级别 21:数据库 (dbid) 进程中的 SQL Server 严重错误 这些消息表明遇到了影响当前数据库中所有进程的问题:但数据库本身损坏的可能性不大 错误分析 针

(zz)数据库设计中的14个技巧

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实 体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计 录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会 关系表.工作简历表.这就是“一张原始单证对应多个实体”的典型例子. 2. 主键与外键

[转]数据库设计中的常用技巧

本文介绍了数据库设计中的14个技巧,这是许多人在大量的数据库分析与设计实践中,逐步总结出来的-- 下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的.对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握.并逐步做到:在应用中发展,在发展中应用. 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个