mysql中的實例、數據庫關系簡介


 

  1. MySQL是單進程多線程(而Oracle等是多進程),也就是說MySQL實例在系 統上表現就是一個服務進程,即進程(通過多種方法可以創建多實例,再安裝一個端口號不同的mysql,或者通過workbench來新建一個端口號不同的 服務器實例等),該架構類似於SQL Server和Windows版本的Oracle
  2. MySQL實例是線程和內存組成,實例才是真正用於操作數據庫文件的(MySQL數據庫是由一些列物理文件組成,類似於frm、MYD、MYI、ibd結尾的文件)
  3. 一般情況下一個實例操作一個或多個數據庫(Oracle一個實例對應一個數據庫);集群情況下多個實例操作一個或多個數據庫
  4. mysql中建立一個會話,不是和具體的數據庫相連接,而是跟某個instance建立會話(每個會話可以使用不同的用戶身份),而一個實例可以操作多個數據庫,故一個會話(在操作系統概念里,會話即是線程)可以操作一個實例上的多個數據庫

connection和session的定義和區別:

1.連接(connection)是一個物理的概念,它指的是一個通過網絡建立的客戶端和專有服務器(Dedicated Server)或調度器(Shared Server)的一個網絡連接。
2.會話(session)是一個邏輯的概念,它是存在於實例中。

注:創建一個連接(connection)實際上是在某個實例(instance,或者說是進程)中創建一個或多個線程。

兩者關系:

1、一個連接可以擁有多個會話也可以沒有會話(實際上,一條連接上的各個會話可以使用不同的用戶身份),同一個連接上的不同會話之間不會相互影響。

2、 兩個會話之間的影響,體現在鎖和鎖存,即對相同資源的操作(對象定義或數據塊)或請求(CPU/內存),它們的處理一般是按隊列來處理的,前面的沒有處理好,后面的就要等待。如果以打電話來比喻:connect就好比你接通對方,這時,connect就建立了,有沒有通話,不管。雙方進行通話,則 session建立了,如果換人,則新的session建立,原session結束,類似的,可以在同一個connect上進行多個會話。最后掛機,connect結束。

1、會話可以創建多個事務
比如:使用客端連接數據庫,這樣你就可以執行很多個事務了

2、一個事務只能由一個會話產生
在數據庫里的事務,如果在執行的SQL都是由會話發起的,哪怕是自動執行的JOB也是由系統會話發起的

3、一個事務可能會產生一個或多個線程
比如RMAN備份,是可以創建多個線程可加快備份速度

4、一個線程在同一時間內只能執行一個事務
而一個線程,在沒結束當前事務是無法釋放資源來執行第二個事務

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM