Mysqldump 工具 导出数据到文件
Alter table mytable engine= innodb 修改表的存储引擎
Insert select导入数据到其他引擎 prercona toolkit 提供的pt-online-schema-change 工具
基准测试 先确定测试目标
指标:吞吐量 单位时间内的事务处理数 http://www.tpc.org 参考 主要针对在线事务处理的吞吐量,适用于多用户的交互式应用。常用 的测试单位是每秒事务数TPS
响应时间:用于测试任务所需的整体时间。最大响应时间每次都不同,可以使用百分比响应时间 percentile response time 来替代最大响应时间。
并发性:在任意时间有多少同时发生的并发请求。关注正在工作中的并发操作,测试应用在不同并发下的性能
mysql数据库的并发性可以通过 sysbench 指定 32 64 128个线程的测试。记录mysql数据库的 threads_running 状态值
可扩展性:
测试规划应该记录测试数据、系统配置的步骤、如何测试和分析结果、以及预热的方案等
应建立将参数和结果文档化的规范
Pt-diskstats 工具 捕获/proc/diskstats的数据为后续分析磁盘IO使用。
脚本语言:shell php perl 尽可能地使所有测试过程都自动化 包括 装载数据、系统预热、执行测试、记录结果
基准测试工具 ---集成式测试工具
1 Ab 是一个apache http 服务器基准测试工具 可以测试http服务器每秒可以处理多少请求。只能针对单个url 进行尽可以快的压力测试。
Http_load 对web服务器进行测试。可以通过一个输入文件提供多个url
Jmeter 是一个java 应用程序,可以加载其他应用并测试其性能。可以用于测试其他诸如FTP服务器,测试web应用,或者通过jDbc进行数据库查询测试
Mysql 的benchmark()函数,可以测试某些特定操作的执行速度,参数可以是执行的次数和表达式
Set @ input :='hello world'; Benchmark(100000,md5(@input)); benchmark(100000,sha1(@input));
mysql基准测试套件:在安装目录 下的sql-bench 子目录中
Sysbench 可以执行多种类型的基准测试,可以用于测试数据库的性能,数据库服务器的性能
mysql剖析服务器性能:
New relic 插入到应用程序中进行性能剖析,将收集到的数据发送到一个基于WEB的仪表盘。浏览器、应用代码、数据库及其他外部调用。
IFP工具
2 慢查询日志 是开销最低、精度最高的测量查询时间的工具。带来的开销可以忽略不计。生成剖析报告再分板查询日志 工具:pt-query-digest
通用日志:在查询请求到服务器时进行记录,不包含响应时间和执行计划
v/m :方差均值比也就是离差指数,离差指数商的查询对应的执行时间的变化较大,通常值得优化。
Show profile 查询剖析工具 默认是禁用的,在会话级别动态修改:set profiling=1;
Select * from tt1 ; show profiles; show profile for query 2; select state,duration from information_schema.profiling order by duration;
Show status; 返回一些计数器包含:全局计数器、会员级另计数器。Show global status; 从服务器启动时开始计算的查询次数统计。
慢查询日志中详细 记录的条目包含了show profile 和show status所有的输出。通过 pt-query-digest(用于分析mysql慢查询的一个工具) 发现 坏 查询后,在慢查询日志 中可以获得足够有用的信息
Explain 显示了mysql如何使用索引来处理select语句以及连接表,在select 语句前加上explain就可以:
Explain select * from a,b where a.id=b.id
dns是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库。能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串
开启慢查询日志,可以让mysql记录下查询超过指定时间的语句
Slow_query _log 慢查询开启状态
Slow_query_log_file 慢查询日志存放的位置,这个目录需要mysql的运行账号的可写权限,一般设置为mysql的数据存放目录
Long_query_time查询超过多少秒才记录
Show variables like 'slow_query%'; show variables like 'long_query_time';
将slow_query_log 全局变量设置为 on 状态:set global slow_query_log='ON';
设置慢查询日志存放的位置:set global slow_query_log_file='/usr/local/mysql/data/slow.log';
查询超过1秒就记录:set global long_query_time=1;
配置文件设置:my.cnf 在[mysqld]下加入 slow_query_log=ON slow_query_log_file=/slow.log long_query_time=1
重启mysql服务:
测试:select sleep(2);