⑴ 怎樣查看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腳本形式導入。