
如果我的措辭不完全正確,我深表歉意 - 我對這一切都很陌生。
目標:我正在嘗試提高從資料庫獲取資料的速度
設定:
我將資料庫託管在伺服器 A 上。 mydbweb 。 com(不是我的實際網站ofc)。伺服器端的這種存取是透過 Nginx 進行的,路由到類似localhost:1234
.
問題:如果我登入伺服器並透過網站(即www.mydbweb.com
)向資料庫發出請求,資料將透過網路取得(對嗎?),但是如果我直接發出請求localhost:1234
,這是否意味著沒有資料通過網路?
一般來說,有一種方法可以跳過透過網路取得的資料嗎?我覺得網路確實為大數據查詢引入了某種延遲或瓶頸。
答案1
它在一定程度上取決於作業系統和網路配置,但與伺服器的外部 IP 位址或本機主機/環回 IP 位址通訊時通常沒有顯著的速度差異,因為通常作業系統和網路堆疊都知道外部IP 位址也是“本機”,資料包不會通過線路發送出去,而是保留在記憶體中。
但是,與兩者直接通訊相比,應用程式和資料庫之間的路徑中額外的 nginx 抽象層會增加延遲。
將應用程式連接到資料庫(當它們都在同一主機上運行時)的最快方法是透過 Unix 套接字(對於在 Linux 或類似 Unix 作業系統上運行的資料庫)或類似的直接連接。這樣的連線無需將請求和回應封裝在網路封包中。