MySQL資料庫中,如何記錄SQL執行語句

來源:互聯網
上載者:User

今天有個同事讓我幫忙看一張報表, 這張報表是一個開源的系統產生出來的,後台資料庫用的是MySQL.問題是一張報表的資料是錯誤的,當時另外一張報表是對的,所以希望能夠找出後台邏輯,這樣可以對報表進行修改。

 

這是我第一次接觸MySQL,所以說需要時間研究一下。當時的想法是像SQL Server或者Oracle抓Trace看到啟動並執行SQL語句。

 

開始串連到MySQL,看了一下Help然後用Root超級使用者登入,一直提示錯誤無法串連到Localhost,再查看到有個參數是P指定連接埠,然後把連接埠加進去就可以串連上了。

 

登入以後運行SHOW PROCESSLIST,但是只能看到存在的一些SPID,沒有詳細的SQL語句。

之後就想著找一個GUI的工具抓Trace,看到其實MySQL提供了一些Log是可以記錄執行的SQL以及允許緩慢的SQL。命令如下:

-- 開啟sql執行記錄功能
set global log_output='TABLE';                             -- 輸出到表
set global log=ON;                                                -- 開啟所有命令執行記錄功能general_log, 所有語句: 成功和未成功的.
set global log_slow_queries=ON;                        -- 開啟慢查詢sql記錄slow_log, 執行成功的: 慢查詢語句和未使用索引的語句
set global long_query_time=0.1;                          -- 慢查詢時間限制(秒)
set global log_queries_not_using_indexes=ON;  -- 記錄未使用索引的sql語句

-- 查詢sql執行記錄
select * from mysql.slow_log order by 1;           -- 執行成功的:慢查詢語句,和未使用索引的語句
select * from mysql.general_log order by 1;      -- 所有語句:  成功和未成功的.

-- 關閉sql執行記錄
set global log=OFF;
set global log_slow_queries=OFF;

 

但是我啟動並執行時候直接報錯,說“unknown system variable logoutput”。

 

用show variables查看當前可配置選項,沒有看到global log_output對應的配置項。 而且在伺服器上夜找不到MYSQL的配置文檔。

 

再看Help文檔是5.1版本的,是不是因為版本問題?帶著這個疑問,查詢了一下@@Version,我們的是4.1的版本,再查4.1的協助檔案,就沒有上面的那些配置項了。

 

雖然沒有抓到Trace,但是由於知道需要查詢的列,所以還是找到了對應的資訊,然後將錯誤資料做了更改Report就正確了。看來有時間也要稍微瞭解一下MYSQL了,畢竟很多開源的軟體都是用這個資料庫作為背景。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.