15
1 透過網路使用 MySQL 會比較快 真的假的?!! Vincent CY Liao 2016-09-27

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

Embed Size (px)

Citation preview

1

透過網路使用 MySQL 會比較快

真的假的?!!

Vincent CY Liao2016-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

10GbE192.168.13.11:3306

TCP/IP vs. UNIX Domain Socket

/var/run/mysqld/mysqld.sockIPC

較高速

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-30

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

remoteloopbackunix-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-30

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-diffavg-latency-diff

13

所以呢

我想,他只是有些話沒講

14

我覺得是這樣子啦 ...

■ 這只是一個簡單的測試● 並不是說塞在一起或是拆開比較好

■ 還是要看個別應用而定■ 拆開有很多拆法

● 網路的延遲其實蠻小的■ 但還是比 IPC 稍微長一點點

■ 針對應用去測可能會比較有意義

■ 資料庫主機跟應用程式拆開● 可以針對資料庫與應用程式特性配置硬體

● 資料庫或應用程式需要大量資源的話不會互相排擠

● 不過你會多一臺機器要養

15

Thank you !

有任何建議或想法歡迎讓我知道,謝謝!

Please let me know if you have anycomments. Thank you !