當有好多個線程(我測試時是300個線程)去對數據庫進行操做時,用以下命令查看數據庫
List-1bash
show processlist;
獲得的結果以下圖1,會發現有大量的"select @@session.tx_read_only",佔了很大一部分,咱們是否能夠消除它呢?MySQL具體在作什麼。session
圖1 show processlist的結果性能
通過google,找到了緣由:測試
JDBC driver每次都要去檢查target database是不是isReadOnly,因此發送"select @@session.tx_read_only"給MySQL,因此咱們在show processlist時纔看到大量的"select @@session.tx_read_only"。建議自行閱讀原文。google
最簡單的方法是在JDBC url上面加上:url
List-2spa
&useLocalSessionState=true
加上List-2以後,再去show processlist;查看下,會發現以前出現的大量的"select @@session.tx_read_only"消失不見了。線程
Reference:code