多路複用IO(IO multiplexing)mysql
多路複用就是調用select來統一管理多個鏈接web
強調:redis
1. 若是處理的鏈接數不是很高的話,使用select/epoll的web server不必定比使用multi-threading + blocking IO的web server性能更好,可能延遲還更大。select/epoll的優點並非對於單個鏈接能處理得更快,而是在於能處理更多的鏈接。sql
2. 在多路複用模型中,對於每個socket,通常都設置成爲non-blocking,可是,如上圖所示,整個用戶的process實際上是一直被block的。只不過process是被select這個函數block,而不是被socket IO給block。mongodb
結論:select的優點在於能夠處理多個鏈接,不適用於單個鏈接數據庫
異步IO(Asynchronous I/O)服務器
用戶進程發起read操做以後,馬上就能夠開始去作其它的事。而另外一方面,從kernel的角度,當它受到一個asynchronous read以後,首先它會馬上返回,因此不會對用戶進程產生任何block。而後,kernel會等待數據準備完成,而後將數據拷貝到用戶內存,當這一切都完成以後,kernel會給用戶進程發送一個signal,告訴它read操做完成了。oracle
數據庫異步
1.數據庫是什麼?socket
數據庫本質就是一個C/S的套接字軟件
常見的數據庫:
關係型:mysql(與mariadb類似)、oracle、db二、sqlserver
非關係型:存取數據都是以key:value形式
常見有mongodb、redis、memcache
2.數據庫相關概念:
數據庫服務器:運行有數據庫管理軟件的計算機
數據庫管理軟件(如mysql):一個套接字服務器
庫:就是一個文件夾
表:就是一個文件
記錄:文件中一行內容(抽取事物一系列典型的特徵拼到一塊兒)
數據:用於記錄現實世界中的某種狀態