重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
查看MySQL執行的語句
創新互聯公司主營防城網站建設的網絡公司,主營網站建設方案,手機APP定制開發,防城h5小程序制作搭建,防城網站營銷推廣歡迎防城等地區企業咨詢
想實時查看MySQL所執行的sql語句,類似mssql里的事件探查器。對my.ini文件進行設置,打開文件進行修改:
basedir=E:/MySQL 4.0.12 #bind-address=192.168.15.196 datadir=E:/MySQL 4.0.12/data #language=E:/MySQL 4.0.12/share/your language directory #slow query log#=slowqueris.log #tmpdir#= #port=3306 #set-variable=key_buffer=16M
ong_query_time =1 --是指執行超過多久的sql會被log下來,這里是1秒
log-slow-queries=slowqueris.log --將查詢返回較慢的語句進行記錄
log-queries-not-using-indexes = nouseindex.log --就是字面意思,log下來沒有使用索引的query
log=mylog.log --對所有執行語句進行記錄
以上參數開啟后,可能會影響MySQL性能,在生產環境下建議關閉
如何使用新的更新日志
如果你只使用一個更新日志,你只須清空日志文件,然后移走舊的更新日志文件到一個備份中,然后啟用新的更新日志。
用下列方法可以強制服務器啟用新的更新日志:
mysqladmin flush-logs
你一般需要在命令行提供使用的`數據庫用戶:
mysqladmin –u root –p flush-logs mysqladmin refresh
你一般需要在命令行提供使用的數據庫用戶:
mysqladmin –u root –p refresh
如果你正在使用MySQL 3.21或更早的版本,你必須使用mysqladmin refresh。
SQL命令
FLUSH LOGS
重啟服務器
上述方法都具有這樣的功能:
關閉并且再打開標準和更新記錄文件。如果你指定了一個沒有擴展名的更新記錄文件,新的更新記錄文件的擴展數字將相對先前的文件加1。
mysqlFLUSH LOGS;
如何使用新的常規日志
用上面的方法同樣可以強制更新常規日志。
要準備備份常規日志,其步驟可能復雜一些:
$ cd mysql-data-directory$ mv mysql.log mysql.old$ mysqladmin flush-tables
然后做一個備份并刪除“mysql.old”。
1先通過status命令查看Mysql運行狀態
mysql status;
--------------
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
Connection id: 113752
Current database: information_schema
Current user: push_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.73 Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: utf8
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /tmp/mysql.sock
Uptime: 22 days 8 hours 31 min 23 sec
Threads: 38 Questions: 1037751897 Slow queries: 2356 Opens: 79836
Flush tables: 1 Open tables: 64 Queries per second avg: 537.282
--------------
在上面顯示列表的最后一條,我們來查看Slow queries這一項的值,如果多次查看的值大于0的話,說明有些查詢sql命令執行時間過長。
2)這時再通過show processlist命令來查看當前正在運行的SQL,從中找出運行慢的SQL語句,找到執行慢的語句后,再用explain命令查看這些語句的執行計劃。
mysql show processlist;
+--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+
| 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 | show processlist |
| 113753 | push_user | 14.118.132.20:28688 | DW | Sleep | 396 | | NULL |
+--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+
38 rows in set (0.00 sec)
或者通過如下命令查詢:
mysql use information_schema;
mysql select * from PROCESSLIST where info is not null;
+--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+
| ID | USER | HOST | DB | COMMAND |
TIME | STATE | INFO |
+--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+
| 113752 | push_user | localhost | information_schema | Query |
0 | executing | select * from PROCESSLIST where info is not null |
+--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+
1 row in set (0.00 sec)
開啟記錄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 什么時候執行了哪些程序了。
如果我的理解沒錯的話,你的意思是正在執行的sql語句吧,
命令:
mysqlshow full processlist;
示例:
mysqlselect sleep(20);
另一個session執行:
mysqlshow full processlist;
--- 可以看到正在執行的語句 ---
| 183 | root | localhost | NULL | Query | 6 | User sleep | select sleep(20) |
查看某個表的建表語句,可以使用phpmyadmin查看,首先選擇這個表所在的數據庫。
比如:ecshop庫,里面有個ecs_goods表,那么查看goods表的建表語句為:
show create table ecs_goods
把這條sql語句復制到
把顯示的結果復制到其它機器上運行,就建好一張goods表了。
MySQL 是一個關系型數據庫,由瑞典?MySQL AB 公司開發,目前屬于?Oracle?旗下公司。MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL 所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策(本詞條"授權政策"),它分為社區版和商業版,由于其體積小,速度快,總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。由于其社區版的性能卓越,搭配?PHP,Linux和?Apache?可組成良好的開發環境,經過多年的web技術發展,在業內被廣泛使用的一種web服務器解決方案之一,稱之為LAMP。