io模型,mysql

多路複用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):一個套接字服務器

         庫:就是一個文件夾

         表:就是一個文件

         記錄:文件中一行內容(抽取事物一系列典型的特徵拼到一塊兒)

         數據:用於記錄現實世界中的某種狀態

相關文章
相關標籤/搜索