最近分析数据库问题总结(linux+mysql)
2010-02-06 01:32
381 查看
1、show processlist非常有用,正常状态下,非Sleep状态的进程应该只有几个,偶尔出现十几个、几十个,但是成百上线的就不正常了。Sleep状态的不用管,一般使用了连接池就会有大量的Sleep进程(连接)。
2、如何分析各种状态的连接数?首先执行mysql –uroot –p123456 –e “show processlist” | grep –v Sleep > tmp.txt将非Sleep状态的连接(进程)的情况输出到tmp.txt文件。然后就使用grep和wc -l来统计。比如我想知道有多少个Blocked,那么执行cat tmp.txt | grep Blocked | wc –l。
3、出现大量Blocked状态的连接,可以设置以下两个参数:low_priority_updates和concurrent_insert两个参数,具体数值网上查。前者的意思是让update/insert操作的优先级低于select操作。
4、不能忽略的一个事实是:select语句是会上锁的,是read锁,上了read锁之后,任何insert、update都会被Block住。而如果low_priority_updates=OFF的话,一旦有一个insert/update被Block住,此后来的select也会被Blocked。(以上都是指myisam同一个表)。因此一个大查询是有可能导致大量被Block的进程出现的。
5、MyIsam真的不适合频繁更新的系统。但InnoDB也有它的麻烦:备份麻烦、一个数据库写在一个文件不便于管理维护等,系统工程部的人不推荐使用。再只有MySQL可使用的情况下,使用好缓存,不去实时操作数据库是唯一的药方。
6、group by等类似操作时毒药,能不用尽量不用,尤其在高并发的系统中,尤其如此。
7、写了一个脚本放到了crontab,每段时间取一次show processlist的情况,对数据库情况分析非常有用:
#!/bin/bash
dd=`date +%Y-%m-%d%t%r`
echo $dd >>/usr/local/2.txt
/usr/local/mysql/bin/mysql -psd-9898w -h10.1.1.161 -e "show processlist" >/usr/local/1.txt
zs=`cat /usr/local/1.txt | wc -l`
sl=`cat /usr/local/1.txt | grep -v Sleep | wc -l`
echo -n 1.161 ${zs}//${sl} >>/usr/local/2.txt
echo "">>/usr/local/2.txt
2、如何分析各种状态的连接数?首先执行mysql –uroot –p123456 –e “show processlist” | grep –v Sleep > tmp.txt将非Sleep状态的连接(进程)的情况输出到tmp.txt文件。然后就使用grep和wc -l来统计。比如我想知道有多少个Blocked,那么执行cat tmp.txt | grep Blocked | wc –l。
3、出现大量Blocked状态的连接,可以设置以下两个参数:low_priority_updates和concurrent_insert两个参数,具体数值网上查。前者的意思是让update/insert操作的优先级低于select操作。
4、不能忽略的一个事实是:select语句是会上锁的,是read锁,上了read锁之后,任何insert、update都会被Block住。而如果low_priority_updates=OFF的话,一旦有一个insert/update被Block住,此后来的select也会被Blocked。(以上都是指myisam同一个表)。因此一个大查询是有可能导致大量被Block的进程出现的。
5、MyIsam真的不适合频繁更新的系统。但InnoDB也有它的麻烦:备份麻烦、一个数据库写在一个文件不便于管理维护等,系统工程部的人不推荐使用。再只有MySQL可使用的情况下,使用好缓存,不去实时操作数据库是唯一的药方。
6、group by等类似操作时毒药,能不用尽量不用,尤其在高并发的系统中,尤其如此。
7、写了一个脚本放到了crontab,每段时间取一次show processlist的情况,对数据库情况分析非常有用:
#!/bin/bash
dd=`date +%Y-%m-%d%t%r`
echo $dd >>/usr/local/2.txt
/usr/local/mysql/bin/mysql -psd-9898w -h10.1.1.161 -e "show processlist" >/usr/local/1.txt
zs=`cat /usr/local/1.txt | wc -l`
sl=`cat /usr/local/1.txt | grep -v Sleep | wc -l`
echo -n 1.161 ${zs}//${sl} >>/usr/local/2.txt
echo "">>/usr/local/2.txt
相关文章推荐
- Linux下访问MySQL的数据库权限不够的问题
- [学习linux]Ubuntu kylin 16.04下安装mysql 问题及总结
- linux下mysql的安装编译问题总结
- linux(centOS6) 安装Mysql 5.6.19数据库步骤、 问题以及相应的解决办法
- mysql 数据库问题 linux centos 6.5
- mysql 创建数据库之添加外建出错问题总结
- MySQL5.5数据库innodb_change_buffering怪异问题分析
- windows 连接 linux 下的mysql 数据库问题
- MySQL 5.6 create table like 同步异常问题分析与总结
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- [待总结]各种中文乱码分析与处理:数据库、eclipse、linux to windows、web应用
- mySQL 数据库工具问题总结
- linux安装mysql客户端问题总结
- linux环境下的mysql,httpd以及与宿主机的调试问题总结
- Linux定时任务没有执行问题分析与总结
- 最近在配mysql和web分离的服务器时所出现的phpmyadmin无法连接远程数据库问题
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- linux下安装cmake和mysql遇到的问题总结
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- 阿里云服务器实战(二): Linux MySql5.6数据库乱码问题