mysql-數據庫,實例,進程,線程的概念


一些基本的概念

數據庫(DB):是磁盤上的一系列物理文件,這個“數據庫”,不是我們平時口語中所說的“數據庫”,后面我會提到

  mysql數據庫就是一堆frm、MYD、MYI、ibd文件

數據庫管理系統(DBMS):我們平時“口語中所說的數據庫",由數據庫+數據庫實例構成

數據庫實例(instance):操作系統中文件是死的,要使用文件(操作數據庫中的數據)就需要把文件讀到內存,實例就是干這個事的,

實例是由一系列進程(或線程)和內存區組成的,和數據庫打交道,都是通過實例來操作的

mysql,pg,oracle的進程和線程設計

mysql是單進程多線程設計的,oracle和postgres是多進程的,究其原因在這里:https://www.zhihu.com/question/20303558

大體就是后兩者出現的時間較早,那時候線程技術還不成熟

實例和進程:

一個mysql數據庫實例在系統表現上就是一個服務進程,對於實現mysql多實例,需再安裝一個端口號不同的mysql,例如InnoDB引擎的后台線程

  1. Master Thread負責將緩沖池中的數據異步刷新到磁盤
  2. IO Thread負責異步IO請求的回調處理。read thread線程數4個,write thread線程數4個
  3. Purge Thread負責事務被提交后,回收已經使用並分配的undo頁
  4. Page Cleaner Thread負責臟頁的刷新操作

pg中一個實例有多個進程,實例的總控進程是Postmaster,還有其他輔助進程,包括:SysLogger系統日志進程,BgWriter后台寫進程,WalWriter預寫式日志進程等

在同一台pg上創建一個實例,只需要指定一個不同的端口即可

實例和數據庫

一般的,對於mysql和pg來說,一個實例可以操作一個或多個數據庫

 


免責聲明!

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



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