⑴ 怎样查看mysql的sql执行sql语句
1先通过status命令查看Mysql运行状态mysql>status;--------------mysqlVer14.14Distrib5.1.73,forredhat-linux-gnu(x86_64)usingreadline5.1Connectionid:113752Currentdatabase:information_schemaCurrentuser:push_user@localhostSSL:NotinuseCurrentpager:stdoutUsingoutfile:''Usingdelimiter:;Serverversion:5.1.:10Connection::latin1Dbcharacterset:utf8Clientcharacterset:latin1Conn.characterset:latin1UNIXsocket:/tmp/mysql.sockUptime:22days8hours31min23secThreads:38Questions:1037751897Slowqueries:2356Opens:79836Flushtables:1Opentables:64Queriespersecondavg:537.282--------------在上面显示列表的最后一条,我们来查看Slowqueries这一项的值,如果多次查看的值大于0的话,说明有些查询sql命令执行时间过长。2)这时再通过showprocesslist命令来查看当前正在运行的SQL,从中找出运行慢的SQL语句,找到执行慢的语句后,再用explain命令查看这些语句的执行计划。mysql>showprocesslist;+--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+|Id|User|Host|db|Command|Time|State|Info|+--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+|50270|ambari|DataBase-01:41512|ambari|Sleep|23||NULL||50271|ambari|DataBase-01:41511|ambari|Sleep|6||NULL||50272|ambari|DataBase-01:41514|ambari|Sleep|23||NULL||62452|oozie|DataBase-02:42987|oozie|Sleep|25||NULL||63660|ambari|DataBase-01:56052|ambari|Sleep|0||NULL||110404|push_user|localhost:33817|quartz|Sleep|12||NULL||112835|push_user|localhost:46571|hibernate|Sleep|1||NULL||113163|push_user|localhost:56585|hibernate|Sleep|1||NULL||113289|push_user|14.118.132.20:47333|DW|Sleep|628||NULL||113320|push_user|localhost:47428|hibernate|Sleep|3||NULL||113321|push_user|localhost:47429|hibernate|Sleep|3||NULL||113322|push_user|localhost:47430|hibernate|Sleep|3||NULL||113357|push_user|localhost:52337|hibernate|Sleep|3||NULL||113364|push_user|localhost:57206|hibernate|Sleep|3||NULL||113366|push_user|localhost:34813|hibernate|Sleep|1||NULL||113398|push_user|localhost:37382|hibernate|Sleep|1||NULL||113498|push_user|localhost:47626|quartz|Sleep|12717||NULL||113709|push_user|localhost:59382|hibernate|Sleep|1||NULL||113710|push_user|localhost:33627|hibernate|Sleep|1||NULL||113715|hive|DataBase-02:54968|hive|Sleep|2390||NULL||113716|hive|DataBase-02:54969|hive|Sleep|2390||NULL||113717|hive|DataBase-02:54974|hive|Sleep|2336||NULL||113718|hive|DataBase-02:54975|hive|Sleep|2336||NULL||113719|push_user|localhost:48243|hibernate|Sleep|1||NULL||113720|push_user|localhost:48245|hibernate|Sleep|1||NULL||113721|push_user|localhost:48244|hibernate|Sleep|1||NULL||113722|push_user|localhost:48247|hibernate|Sleep|1||NULL||113723|push_user|localhost:48249|hibernate|Sleep|1||NULL||113724|push_user|localhost:48248|hibernate|Sleep|1||NULL||113745|push_user|localhost:50684|hibernate|Sleep|1||NULL||113746|push_user|localhost:50685|hibernate|Sleep|1||NULL||113747|push_user|localhost:50695|hibernate|Sleep|1||NULL||113748|push_user|localhost:50696|hibernate|Sleep|1||NULL||113749|push_user|localhost:50697|hibernate|Sleep|1||NULL||113750|push_user|localhost:50699|hibernate|Sleep|1||NULL||113751|push_user|localhost:50700|hibernate|Sleep|1||NULL||113752|push_user|localhost|information_schema|Query|0|NULL|showprocesslist||113753|push_user|14.118.132.20:28688|DW|Sleep|396||NULL|+--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+38rowsinset(0.00sec)或者通过如下命令查询:mysql>useinformation_schema;mysql>select*;+--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+|ID|USER|HOST|DB|COMMAND|TIME|STATE|INFO|+--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+|113752|push_user|localhost|information_schema|Query|0|executing|select*|+--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+1rowinset(0.00sec)
⑵ MySQL 如何追踪sql语句的执行
不知你是不是指这个:
用惯了微软的ms sql的事件探查器,一直也想在mysql中找到相应的这么一种工具:
修改my.cnf,在mysqld下添加log一行,
[mysqld]
log = /tmp/mysqld.sql
然后,重新启动mysql,tail -f /tmp/mysqld.sql,就可以实时看到myql服务器当前正在执行的语句了。
文章出处:http://www.diybl.com/course/6_system/linux/Linuxjs/20071129/89017.html
⑶ 如何监听mysql执行的sql语句呢
比如我想监听mysql的这样的操作,delete from acrelation where *** 如果是这样的话,你可以看看关于mysql的触发器的东西。 Rainbow702 写道引用最好可以日志或其它方式记录下来数据库本身应该就有操作日志的啊问题补充:我用的hibernate的PostDeleteEvent,还是有些问题 hibernate自带的监听 jkxydp 写道用spring的aop啊,在删除记录的方法上加一个记录日志的切入点去记录啊,层一般增、删、改、查的方法都是单独出来的吧,在所有删除记录的方法上写切入点。 或者使用loger,其它的都不写,就在删除的方法里面写上日志应该就没问题。 用hibernate就肯定有用到log4j吧,不想全写,就只在删除方法上写就完了。
⑷ 如何记录MySQL执行过的SQL语句
您好,很高兴为您解答。 开启记录MySQL执行过SQL语句的方法很简单:编辑/etc/my.cnf文件,在[mysqld]节下面添加:log=/var/lib/mysql/sql_row.log行(日志的路径自己根据需要定义)。 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 log=/var/lib/mysql/sql_row.log # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 修改完毕后,记得重启 MySQL: service mysql restart # 或者 /etc/init.d/mysqld stop /etc/init.d/mysqld start 现在去 /var/lib/mysql/ 路径下的 sql_row.log 文件应该是能够看到 MySQL 什么时候执行了哪些程序了
⑸ mysql可以实时监控sql语句执行情况吗
好像没看到.
你在好好找找看
⑹ 监控mysql 执行过哪些sql语句
如果你想知道mysql在干吗,需要配置log my.ini文件中 log=log路径 比如D:/MySQL/datalog.log 配置后重启mysql服务,然后就可以查看mysql执行的sql语句了, 如果你没开启日志的话,那就没办法
⑺ 在Mysql中,如何在触发器中捕获当前执行的SQL语句
目测语法是 Oracle 数据库的语法。
那么, 如果这个where aptitude.companyid=com_base.id;条件获得上面执行的com_base.id怎么获取啊?
可以通过 :old.id 或者 :new.id 来获取。
例如:
SQL> CREATE OR REPLACE TRIGGER BeforeUpdateTest
2 BEFORE UPDATE ON test_trigger_table
3 FOR EACH ROW
4 BEGIN
5 dbms_output.put_line('BEFORE UPDATE');
6 dbms_output.put_line('Old Name = ' || :old.name);
7 dbms_output.put_line('New Name = ' || :new.name);
8 END;
9 /
Trigger created.
SQL>
SQL> UPDATE test_trigger_table SET name = 'XYZ' WHERE id = 1;
BEFORE UPDATE
Old Name = ABC
New Name = XYZ
⑻ 如何实时监控mysql中的SQL语句的执行情况
MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入; 2) 直接拷贝数据库目录和文件。 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。 所以一般推荐用SQL脚本形式导入。