2016-01-24 42 views
1

我試圖計算由PHP腳本進行頁面生成的MySQL查詢的數量。我使用以下查詢:什麼是MySQL中的SESSION?

SHOW SESSION STATUS WHERE Variable_name LIKE 'Questions'; 

但它給了我一些巨大的數字(百萬)。我搜索了MySQL文檔和手冊頁,但還沒有找到什麼定義「會話」的含義。

看來會話與當前連接不一樣。

如果有人解釋會話是什麼,什麼時候開始以及何時結束,我將非常感激。

+0

這是你的答案: - http://dba.stackexchange.com/questions/54337/difference-between-show-status-and-show-global-status-in-mysql 檢查正確的答案,只是閱讀它仔細 –

+0

我找到了一種方法來確定查詢的數量。我在腳本的開頭和結尾處運行上述查詢並計算值之間的平衡。但是,我的主要問題仍未得到解答。我真的很想了解MySQL中的會話是什麼。 –

+0

我給你的鏈接中給出的定義和理解 –

回答

0

MySQL manual

隨着SESSION修改,該聲明顯示當前連接狀態的變量值。如果變量沒有會話值,則顯示全局值。

我認爲這個問題是,如果你運行SHOW SESSION STATUS LIKE 'Questions';當你第一次創建一個數據庫連接,沒有問題至今尚未執行,因此GLOBAL數據顯示。當您通過命令行mysql客戶端連接時,客戶端在啓動時執行一些查詢,因此會話具有此變量集。嘗試在SHOW SESSION STATUS LIKE 'Questions'之前運行查詢。

+0

不,這絕對不是GLOBAL數據,因爲當我重新加載目標網頁時,當我計算腳本開始和結尾處的「問題」之間的差異時,它仍保持不變。我試圖運行「SHOW GLOBAL STATUS」查詢,並且每次更改差異(因爲其他用戶同時查看網站)。我認爲最正確的答案是PHP保持連接活着。然而,接下來會出現另一個問題:PHP是否爲每個php會話打開並保留mysql會話?看來,是的。 –

+0

這可能取決於連接池和持久性等內容。你可以在你的問題中發佈你的PHP代碼,並顯示你如何連接到MySQL? – Will

+0

我注意到不同版本的PHP的行爲不同,所以我不認爲它看到我的代碼,因爲它是PHP的版本依賴。 –

相關問題