MySQL之如何消除大量的@@session.tx_read_only

1.發現大量的"select @@session.tx_read_only"

    當有好多個線程(我測試時是300個線程)去對數據庫進行操做時,用以下命令查看數據庫

    List-1bash

show processlist;

    獲得的結果以下圖1,會發現有大量的"select @@session.tx_read_only",佔了很大一部分,咱們是否能夠消除它呢?MySQL具體在作什麼。session

                                                       圖1 show processlist的結果性能

2.這個表示什麼

    通過google,找到了緣由:測試

    JDBC driver每次都要去檢查target database是不是isReadOnly,因此發送"select @@session.tx_read_only"給MySQL,因此咱們在show processlist時纔看到大量的"select @@session.tx_read_only"。建議自行閱讀原文google

3.出於提高性能的考慮,怎麼消除這麼多的"select @@session.tx_read_only"呢

    最簡單的方法是在JDBC url上面加上:url

    List-2spa

&useLocalSessionState=true

    加上List-2以後,再去show processlist;查看下,會發現以前出現的大量的"select @@session.tx_read_only"消失不見了。線程

  

Reference:code

  1. https://stackoverflow.com/questions/32394729/i-get-many-select-session-tx-read-only-would-one-do-the-same
  2. https://stackoverflow.com/questions/26053654/what-is-uselocalsessionstate-used-for
相關文章
相關標籤/搜索