Mysql

Profile

profile 用于查看在服务器上执行所有语句的耗时和其他一些查询执行状态变更的数据.

mysql> set profiling = 1;  #设置变量
mysql> select * from mytable;
mysql> show profiles;   # 查看结果
mysql> show profile for query 1;  #查看指定ID的sql执行详细信息
mysql> SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=26; #查看指定ID的sql执行详细信息

每秒刷新当前连接数和sql数

$ mysqladmin ext -i1 -uroot -proot | awk '
/Queries/{q=$4-qp;qp=$4}
/Threads_connected/{tc=$4}
/Threads_running/{printf "%5d %5d %5d\n", q, tc, $4}'

Mysql 操作技巧

$ mysql -e "sql"  命令行执行sql
mysql> show processlist; 查看当前的连接客户端

Mac开始漫查询

$sudo vim /private/etc/my.cnf

[mysqld]
long_query_time = 0  #查询时间大于设置的,0表示所有
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log

$mysql sudo mkdir /var/log/mysql                                                                                                                                                                                                                                                                                                                    $mysql sudo touch /var/log/mysql/slow-query.log
$mysql sudo chown -R _mysql /var/log/mysql/
$awk '/^# Time:/{print $3, $4, c;c=0}/^# User/{c++}' /var/log/mysql/slow-query.log #查看每秒查询数
$tail -f /var/log/mysql/slow-query.log #时时打印sql

web集成测试工具:
1. ab
2. http_load
3. Jmeter

Mysql 测试工具:
1. Mysqlslap
2. mysql benchmark suite (sql-bench) 内置, mysql 基准测试套件
3. super smack
4. database test suite
5. percona’s TPCC-MySQL tool
6. sysbench 测试IO
7. Mysql benchmar可以某些特定操作的执行速度: SELECT BENCHMARK(100001100, MD5(@input));

Mysql 工具包 percona-toolkit

Install percona-toolkit on Mac OSX


pt-mysql-summary 和 pt-summary 打印状态和配置信息. 以及操作系统硬件信息
pt-sift 导航样本数据

服务器性能测试

sysbench
1. 测试CPU: $ sysbench –test=cpu –cpu-max-prime=20000 run
2. 测试文件IO
一. 创建测试文件: $ sysbench –test=fileio –file-total-size=150G prepare
二. 测试创建的测试文件: $sysbench –test=fileio –file-total-size=120G –file-test-mode=rndrw –init-rng=on –max-time=300 –max-requests=0 run
mode分为, seqwr(顺序写入), seqrewr(顺序重写), seqrd(顺序读取), rndrd(随机读取), rndwr(随机写入), rdnrw(混合随机读书/写)
三. 清除测试文件: $ sysbench –test=fileio –file-total-size=150G cleanup

http_load

-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-r :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间

http_load 类似于ab命令,但是比AB灵活得多,可以根据一个url列表随机抽取来进行测试.
http_load -parallel 1 -seconds 10 urls.txt

Workbench
https://dev.mysql.com/doc/workbench/en/wb-installing-mac.html

Mysql 开启漫查询,记录sql

在mysql配置文件my.cnf中增加

log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
long_query_time=2 (记录超过的时间,默认为10s)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)