
基准脚本是用Perl写的,它用Perl的DBI模块来连接数据库,因此必须安装DBI模块。并且还需要每个要做测试的服务器上都有特定的BDB驱动程序。例如,为了测试MySQL、PostgreSQL和DB2,就必须安装DBD::mysql,DBD::Pg及DBD::DB2模块。
运行基准测试并分析结果
一旦准备就绪 就可以着手基准测试 收集和分析数据了
通常来说 自动化基准测试是个好主意 这样做可以获得更精确的测试结果 因为自动化的过程可以防止测试人员偶尔遗漏某些步骤 或者误 *** 作 另外也有助于归档整个测试过程
自动化的方式有很多 可以是一个Makefile 文件或者一组脚本 脚本语言可以根据需要选择 shell PHP Perl 等都可以 要尽可能地使所有测试过程都自动化 包括装载数据 系统预热 执行测试 记录结果等
一旦设置了正确的自动化 *** 作 基准测试将成为一步式 *** 作 如果只是针对某些应用做一次性的快速验证测试 可能就没必要做自动化 但只要未来可能会引用到测试结果 建议都尽量地自动化 否则到时候可能就搞不清楚是如何获得这个结果的 也不记得采用了什么参数 这样就很难再通过测试重现结果了
基准测试通常需要运行多次 具体需要运行多少次要看对结果的记分方式 以及测试的重要程度 要提高测试的准确度 就需要多运行几次 一般在测试的实践中 可以取最好的结果值 或者所有结果的平均值 亦或从五个测试结果里取最好三个值的平均值 可以根据需要更进一步精确化测试结果 还可以对结果使用统计方法 确定置信区间(confidence interval)等 不过通常来说 不会用到这种程度的确定性结果注 只要测试的结果能满足目前的需求 简单地运行几轮测试 看看结果的变化就可以了 如果结果变化很大 可以再多运行几次 或者运行更长的时间 这样都可以获得更确定的结果
获得测试结果后 还需要对结果进行分析 也就是说 要把 数字 变成 知识 最终的目的是回答在设计测试时的问题 理想情况下 可以获得诸如 升级到 核CPU 可以在保持响应时间不变的情况下获得超过 % 的吞吐量增长 或者 增加索引可以使查询更快 的结论 如果需要更加科学化 建议在测试前读读null hypothesis 一书 但大部分情况下不会要求做这么严格的基准测试
如何从数据中抽象出有意义的结果 依赖于如何收集数据 通常需要写一些脚本来分析数据 这不仅能减轻分析的工作量 而且和自动化基准测试一样可以重复运行 并易于文档化 下面是一个非常简单的shell 脚本 演示了如何从前面的数据采集脚本采集到的数据中抽取时间维度信息 脚本的输入参数是采集到的数据文件的名字
假设该脚本名为 *** yze 当前面的脚本生成状态文件以后 就可以运行该脚本 可能会得到如下的结果
第一行是列的名字 第二行的数据应该忽略 因为这是测试实际启动前的数据 接下来的行包含Unix 时间戳 日期 时间(注意时间数据是每 秒更新一次 前面脚本说明时曾提过) 系统负载 数据库的QPS(每秒查询次数)五列 这应该是用于分析系统性能的最少数据需求了 接下来将演示如何根据这些数据快速地绘成图形 并分析基准测试过程中发生了什么
返回目录 高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
lishixinzhi/Article/program/MySQL/201311/29735有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] &&/pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)