1
透過網路使用 MySQL 會比較快
真的假的?!!
Vincent CY Liao
2016-09-27
2
先講結論
( 前陣子好像很流行這樣 )
3
我才不要先講結論 wwwwww
有需要的話請自行翻到後面的投影片 :
https://goo.gl/94L8TI
4
Outline
■ 起因
■ 測試結果
■ 討論
5
起因是這樣的 ...
前幾天
客戶找了一個
從知名網路公司轉職到他們那邊任職的
資深工程師
來討論我們所發展軟體的
MySQL 資料庫效能問題
6
「
應該要把資料庫跟應用程式的主機分開
讓資料庫用一臺獨立的主機
這樣子資料庫操作的效能會比較好
你們現在的規劃跟觀念都是錯的
」
這位工程師這麼說
7
多過個網路還會比較快?
https://goo.gl/4P4LVW
8
也就是說
Database (MySQL) Client
Application
Query Transport
Database (MySQL) Server
Database Engine
Storage Backend (Plug-ins)
Storage Device
10GbE
192.168.13.11:3306
TCP/IP vs. UNIX Domain Socket
/var/run/mysqld/mysqld.sock
IPC
較高速
9
那就來測試看看吧!
■ 前提
● 資料庫主機軟硬體的條件一樣
● 應用程式占用的資源不會排擠資料庫
■ 處理器時間
■ 記憶體使用量
■ 檔案系統或儲存設備的使用
■ 網路頻寬的使用
■ 疑問
● 網路存取與本機端存取是否有效能差異
10
測試方法
■ 多次執行取得主機時間的查詢
● SELECT NOW();
● 目的是排除儲存設備的影響
■ 使用不同連線方式測試執行時間
● 透過遠端主機 IP 連線
● 透過 127.0.0.1 連線本機資料庫
● 透過 UNIX Domain Socket 連線本機資料庫
MySQL AP MySQL AP MySQL AP
192.168.13.11:3306 127.0.0.1:3306 /var/run/mysqld/mysqld.sock
Source Code:
https://goo.gl/n72bDR
11
測試結果
t-0250-1 t-0250-2 t-0250-3 t-0500-1 t-0500-2 t-0500-3 t-1000-1 t-1000-2 t-1000-3
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
remote
loopback
unix-domain
累計查詢使用時間 ( 秒;連續查詢 250, 500, 1000 次,各三次 )
12
測試結果 (cont.)
將使用 TCP/IP 遠端連線的查詢時間減去使用 UNIX Domain Socket 的查詢時間 ( 秒 )
t-0250-1 t-0250-2 t-0250-3 t-0500-1 t-0500-2 t-0500-3 t-1000-1 t-1000-2 t-1000-3
0
0.05
0.1
0.15
0.2
0.25
0.00000
0.00005
0.00010
0.00015
0.00020
0.00025
0.00030
latency-diff
avg-latency-diff
13
所以呢
我想,
他只是有些話沒講
14
我覺得是這樣子啦 ...
■ 這只是一個簡單的測試
● 並不是說塞在一起或是拆開比較好
■ 還是要看個別應用而定
■ 拆開有很多拆法
● 網路的延遲其實蠻小的
■ 但還是比 IPC 稍微長一點點
■ 針對應用去測可能會比較有意義
■ 資料庫主機跟應用程式拆開
● 可以針對資料庫與應用程式特性配置硬體
● 資料庫或應用程式需要大量資源的話不會互相排擠
● 不過你會多一臺機器要養
15
Thank you !
有任何建議或想法歡迎讓我知道,謝謝!
Please let me know if you have any
comments. Thank you !

透過網路連線 MySQL 進行查詢會比較快嗎?