MySql如何跟踪SQL脚本执行
来源:互联网 发布:2016年网络流行词汇 编辑:程序博客网 时间:2024/06/06 14:24
笔者管理的一个外包软件项目,在初期运行效率还行,当数据达到万级时,就感觉卡顿起来。
因为公司网络情况欠佳,所以考虑有两个方面问题: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 mysqlmysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz[root@localhost ~]# rpm -qa|grep -i mysqlMySQL-server-5.5.33-1.rhel5.x86_64MySQL-client-5.5.33-1.rhel5.x86_64终于找到了,按网上搜索的资料,应该是系统自带的MySql。
service mysql restartOK,系统重启成功。等一段时间查看日志,相应的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.sockTime Id Command Argument161231 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 = 'interactive_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
- MySql如何跟踪SQL脚本执行
- 如何跟踪mysql执行的sql语句
- 如何跟踪mysql执行的sql语句
- mysql如何跟踪执行的sql语句
- mysql如何跟踪执行的sql语句
- 如何跟踪mysql执行的sql语句
- mysql如何跟踪执行的sql语句
- 【转】mysql下如何执行sql脚本
- MySql下如何执行sql脚本文件
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- mysql下如何执行sql脚本
- monkeyrunner测试结果对比
- adb devices找不到设备求解。
- 在android studio,我这个方法写错了?为什么引用不了?
- android中bluedroid如何读取pcm数据,并将其写入文件中?
- 剑指offer-----矩阵中的路径(java版)
- MySql如何跟踪SQL脚本执行
- Android语音播放格式问题
- 【cocos优化】
- 急急急!!!请教一个关于ASP不报错的问题!浪费一下午的时间啊。。。。。。
- bzoj 3489: A simple rmq problem (KD-tree)
- 安卓模拟器配置了摄像头还是显示黑白棋盘
- bug宝典JAVA篇 BeanUtils.copyProperties 日期问题
- Leetcode Add Two Numbers II
- 如何使用ocilib进行oracle8的读取