所谓性能调优,首先要发现问题,才能知道怎么进行性能调优噻,所以我们先从发现问题开始
1、show status 查询数据库状态
其中监控服务器状态比较重要的几个参数是:
Queries | 进行多少次查询 |
Threads_connected | 进程 |
Threads_running | 线程查询 |
2、其次,我们应学会使用 awk 文本处理工具
例如,Linux下存在有score.txt文本如下
name age gold
ricy 50 12
Lct 23 23
LCX 18 89
用awk命令去查询的话
awk '{printf("%s\n",$0)}' 语句一
查询出来的结果是
ricy 50 12 查询语句一结果
Lct 23 23
LCX 18 89
awk '{printf("%s\n",$1)}' 语句二
ricy 50 12 查询语句二结果
awk '{printf("%s\n",$2)}' 语句三
Lct 23 23 查询语句三结果
(规律可想而知)awk '{printf("%s\n",$3)}'的查询结果便是: LCX 18 89
awk '/L/{printf("%s\n",$0)}' 语句四(以L开头的)
Lct 23 23
LCX 18 89
由此:可以用awk表达式去监控服务器状态
mysqladmin -uroot ext | awk '/Queries/{printf("%d",$4)}'/Threads_connected/{printf("%d",$4)}'/Threads_running/{printf("%d",$4)}'
mysqladmin -uroot ext|awk '/Queries/{q=$4}'/Threads_connected/{c=$4}'/Threads_running/{r=$4}END{printf("%d %d %d\n", q, c, r)}'
O(∩_∩)O哈哈~ 调用当然要先找问题了噻!上面中这样就可以监控服务器状态咯!
可以偷懒的是!在服务器中,你可以自己写一个命令 tjsStatus.sh 去统计监控服务器状态,并启动
# !/bin/bash
while true
do
mysqladmin -uroot ext|awk '/Queries/{q=$4}'/Threads_connected/{c=$4}'/Threads_running/{r=$4}END{printf("%d %d %d\n", q, c, r)}' >> status.txt
sleep 1
done
下面再补充几个知识点:
1、在mysql中建表中,有varchar和char的区别,加入用char(20)来存储‘abc’的话,其存储的字符将占20个字节,但有17个是空的;但是用varchar的话就只会有3个,20只是它的最大值
2、查询的时候union all的效率肯定比union快,因为前面的只是将结果集合并,所以会有重复的数据