1. 程式人生 > >解決連線Docker mysql容器慢的問題

解決連線Docker mysql容器慢的問題

問題描述:

建立一個內部網路(docker network create ims_network),在這個內部網路跑了兩個容器(一個mysql容器,一個python容器),從python容器中向mysql容器中寫資料(insert,update)很慢,select很快。

時間:10個select用了2秒。

問題解決:

[mysqld]

skip-name-resolve
innodb_flush_log_at_trx_commit=0
sync_binlog=0

方法解析:

skip-name-resolve:跳過域名解析,對有些場景很管用,但對我遇到的不怎麼管用。

    設定這個以後,速度只有一點點提升(2秒  -> 1秒9)。

innodb_flush_log_at_trx_commit=0: 這個選項決定著什麼時候把日誌資訊寫入日誌檔案以及什麼時候把這些檔案物理地寫(術語稱為”同步”)到硬碟上。設定值0的意思是每隔一秒寫一次日誌並進行 同步,這可以減少硬碟寫操作次數,但可能造成資料丟失; 設定值1(設定設定)的意思是在每執行完一條COMMIT命令就寫一次日誌並進行同步,這可以防止資料丟失,但硬碟寫操作可能會很頻繁; 設定值2是一般折衷的辦法,即每執行完一條COMMIT命令寫一次日誌,每隔一秒進行一次同步。

    設定這個以後,速度有很大提升(1秒9  -> 1秒)。

sync_binlog=0:每經過n次日誌寫操作就把日誌檔案寫入硬碟一次(對日誌資訊進行一次同步)。設為1是最安全的做法,但效率最低。docker中預設設定是1,意思是由作業系統來負責二進位制日誌檔案的同步工作。

    設定這個以後,速度有顯著提升(1秒9  -> 30毫秒)。