io模型,mysql

2022-08-05 13:54:16 字數 937 閱讀 4833

多路複用io(io multiplexing)

多路複用就是呼叫select來統一管理多個連線

強調:1. 如果處理的連線數不是很高的話,使用select/epoll的web server不一定比使用multi-threading + blocking io的web server效能更好,可能延遲還更大。select/epoll的優勢並不是對於單個連線能處理得更快,而是在於能處理更多的連線。

2. 在多路複用模型中,對於每一個socket,一般都設定成為non-blocking,但是,如上圖所示,整個使用者的process其實是一直被block的。只不過process是被select這個函式block,而不是被socket io給block。

結論:select的優勢在於可以處理多個連線,不適用於單個連線

非同步io(asynchronous i/o)

使用者程序發起read操作之後,立刻就可以開始去做其它的事。而另一方面,從kernel的角度,當它受到一個asynchronous read之後,首先它會立刻返回,所以不會對使用者程序產生任何block。然後,kernel會等待資料準備完成,然後將資料拷貝到使用者記憶體,當這一切都完成之後,kernel會給使用者程序傳送一個signal,告訴它read操作完成了。

資料庫1.資料庫是什麼?

資料庫本質就是一個c/s的套接字軟體

常見的資料庫:

關係型:mysql(與mariadb相似)、oracle、db2、sqlserver

非關係型:存取資料都是以key:value形式

常見有mongodb、redis、memcache

資料庫伺服器:執行有資料庫管理軟體的計算機

資料庫管理軟體(如mysql):一個套接字伺服器

庫:就是一個資料夾

表:就是一個檔案

記錄:檔案中一行內容(抽取事物一系列典型的特徵拼到一起)

資料:用於記錄現實世界中的某種狀態

Python IO模型

比如,你新買了一臺電腦,我們開機發現,連執行都執行不了,我們買的只是一堆硬體,要想讓電腦執行起來, 靠的就是作業系統,作業系統就是操作軟體的軟體,不僅能操作軟體,還能操控硬體。 核心態,就是留給作業系統專用,而使用者的程序是不可以在,核心裡執行的。 而使用者態就是,我們的程序了,比如360,qq,pyc...

Linux IO模型

io操作不外乎讀和寫,但是不同場景對讀寫有不同的需求,例如網路中同時監控多個檔案控制代碼,例如關鍵資料希望一路刷到儲存裝置而不是扔到cache就返回。 怎麼讀,怎麼寫,等不等結果返回,是否等獲取到資料才發返回,組成了不同的io模型,分別適用於不同的場景。 根據同步與非同步,阻塞與非阻塞,可以把io模型如下...

IO模型 IO多路複用

用socket 一定會用到accept recv recvfrom這些方法 正常情況下 accept recv recvfrom都是阻塞的...