我有一個長期存在的C++程序,它針對MySQL數據庫執行各種SQL語句。我目前在每個需要SELECT/INSERT/UPDATE的函數中使用一堆靜態sql :: PreparedStatement *創建(一次),然後重新綁定並重復執行。這種運作良好,但我想了解一下服務器和程序的資源使用情況:MySQL PreparedStatement警告
- 哪裏PreparedStatement的每一個存儲其信息(客戶端/服務器/兩?)
- 難道我擔心一個PreparedStatement的會壞,但其餘的都可以嗎?
- 我應該偶爾刷新/重新創建PreparedStatements嗎?
- 是否打開但閒置PreparedStatements在兩次使用之間佔用重要的DB資源?
- 有沒有更好的方式來處理需要執行20-30個不同類型的查詢的程序中的數據庫活動,當查詢偶爾發生而不是以任何特定順序發生時?
謝謝!
謝謝,這是非常有用的信息。您是否有(或知道在哪裏可以找到)內存使用量的近似數字或每個會話的最大準備語句數?如果我遠低於極限,我不會爲此設計一些複雜的框架,但如果我接近,我現在可能會咬緊牙關。 (所有的語句都非常簡單 - INSERT或UPDATE或單表SELECT,除了有時會返回很多行以外,沒有什麼能夠使DB工作得很辛苦。) –
請參閱我的編輯。我希望你覺得這對你有幫助。 – DNT
max_prepared_statement_count配置項非常令人放心(尤其是因爲它是一個服務器範圍的值)。我知道我的服務器應該看到什麼樣的利用率,我預期的PreparedStatements數量遠低於16k。我會討論內存工具,但實際上,除非PreparedStatement分配了很多兆字節(這似乎不太可能),我不會在那裏遇到任何問題。再次感謝! –