session(會話)和connection(連接)的定義:
connection:是一個物理的概念,它指的是一個通過網絡建立的客戶端和專有服務器(Dedicated Server)或共享服務器(Shared Server)的一個網絡連接,既是一條物理路勁。
session:是一個邏輯的概念,它是存在於實例中,一個連接可以擁有多個會話也可以沒有會話,同一個連接上的不同會話之間不會相互影響。
session和connection的區別與聯系:
1. 一個用戶對應一個session,但不一定對應一個connection ,因為幾個session可以共享一個connection。
2. 在dedicated sever(專用服務器)連接模式下,session和connection一一對應,且個數上session = connection。
3. 在shared server(共享服務器)連接模式下, 個數上session >= connection。
4. 在shared server的multiplexing session模式下,session >= connection,且並不一一對應。
有一位專家的比喻更形象:
有A/B兩個城市,需要從A運送白菜到B城
我們先建設一條公路
然后運送白菜過去,包括准備白菜和運送白菜以及返回等一系列的動作。
一條公路,可以運送0-n次的白菜
當然從A到B的公路也可能不只一條。
某一次運送白菜,可以在真正上路時才開通某一條道路
一次運送不會影響別的運送的狀態
對應數據庫
A代表客戶端進程
B代表服務器端進程
公路代表連接,
運送一次白菜代表一個會話
一個連接可以進行多次的會話
一個會話可以不依賴於某個連接,甚至沒有連接(當我准備好了,真正開始運送時再建立連接)
一個會話不會影響別的會話