MySql如何跟踪SQL脚本执行

笔者管理的一个外包软件项目,在初期运行效率还行,当数据达到万级时,就感觉卡顿起来。

因为公司网络情况欠佳,所以考虑有两个方面问题:1、是否建立了索引? 2、网络是否有问题?

对外包公司的能力毫无信心,所以先从索引查起。问过对方运维支撑人员,说肯定是所有表都建立了索引的......本着怀疑精神,连上系统数据库,一看,感觉有点怀疑自己的眼睛及专业能力,连主键都没有看到......

在这里不得不吐槽下这些强大的开发商们,除了添乱就是添堵,而做为甲方代表的我对他们竟然毫无办法,哎!!!


按基本需求对相关表建立了索引,性能有一定改善。为了进一步优化,决定对索引字段进行精确定位,此时就需要知道SQL脚本到底以什么作为条件关键字进行查询。

由于该系统采用Liunx+Tomcat+MYSQL+JAVA模式,所以需要在Liunx下跟踪Mysql脚本执行语句,根据语句来判断如何优化索引。在网上搜了下,可以通过输出SQL日志的方式来查看使用到的所有SQL语句。

配置/etc/my.cnf文件
找到[mysqld],在下面添加:
log=usr/tmp/my.log

修改完后,需要重启mysql服务
service mysqld restart

看起来还是挺简单的,但是问题来了,在MYSQL服务器上居然没找到my.cnf文件。在网上一番忙碌,似乎找到了答案。

Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,至于为什么没有这个文件而MySQL却也能正常启动和作用,网上流传两种说法:
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动;
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL。
解决方法,只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。

搞定配置文件,然后开始重启MySQL服务,但是问题又来了。

mysqld: unrecognized service
居然提示没有MySLQD这个服务。

查看是否安装MYSQL包

rpm -q mysql >package mysql is not installed
居然没有MySQL。。。彻底迷茫ing。
[root@localhost ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
[root@localhost ~]# rpm -qa|grep -i  mysql
MySQL-server-5.5.33-1.rhel5.x86_64
MySQL-client-5.5.33-1.rhel5.x86_64
终于找到了,按网上搜索的资料,应该是系统自带的MySql。

service mysql restart
OK,系统重启成功。等一段时间查看日志,相应的SQL已经输出存储到指定位置。

[root@localhost tmp]# cd /usr/tmp
[root@localhost tmp]# cat my.log | more
/usr/sbin/mysqld, Version: 5.5.33-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
161231  8:50:08     1 Connect   test@192.168.60.152 on dst
                    1 Query     /* mysql-connector-java-5.1.12 ( Revision: ${bzr.revision-id} ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'inte
ractive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_
server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name =
'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type
' OR Variable_name = 'query_cache_size' OR Variable_name = 'init_connect'






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值