1返顺、阻塞 I/O 只能阻塞一個 I/O 操作禀苦,而 I/O 復用模型能夠阻塞多個 I/O 操作,所以才叫做多路復用
2遂鹊、采用epoll模型時創(chuàng)建了一個共享的內存空間振乏,操作系統(tǒng)采用事件通知的方式,使一個進程能同時等待多個文件描述符
3稿辙、這樣就可以同時監(jiān)聽多個網絡連接 IO, 相對于多進程气忠、多線程切換的開銷問題邻储,IO 多路復用可以極大的提升系統(tǒng)效率。
數據庫(Database):存儲數據的倉庫
高效地存儲和處理數據的介質(介質主要是兩種:磁盤和內存)
數據庫的分類
基于存儲介質的不同:分為關系型數據庫(SQL)和非關系型數據庫(NoSQL:Not Only SQL)
關系型數據庫
大型:Oracle旧噪、DB2
中型:SQL Server吨娜、MySQL
小型:Access等
非關系型數據庫:Memcached、MongoDB淘钟、Redis
兩種數據庫陣營的區(qū)別
關系型數據庫:安全(保存磁盤宦赠,基本不可能丟失),容易理解米母,比較浪費空間(二維表)
非關系型數據庫:效率高勾扭,不安全(斷電丟失)
是一種建立在關系模型(數學模型)上的數據庫
關系模型:一種所謂建立在關系上的模型
關系模型包含三個方面:
數據結構:用于解決數據存儲的問題,二維表(有行和列)
操作指令集合:所有SQL語句
完整性約束:表內數據約束(字段與字段)铁瞒、表與表之間約束(外鍵)
從需要存儲的數據需求中分析妙色,如果是一類數據(實體)應該設計成一張二維表:表是由表頭和數據部分組成
表頭:即字段名,用來規(guī)定數據的名字
數據部分:實際存儲的數據單元
關系型數據庫慧耍,需要維護實體內部身辨、實體與實體之間的聯(lián)系
如果表中對應的某個字段沒有值(數據)丐谋,但是系統(tǒng)依然要分配空間,所以說關系型數據庫比較浪費空間
SQL:(Structured Query Language煌珊,結構化查詢語言)
SQL分為三個部分:
DDL:(Data Definition Language号俐,數據定義語言)用來維護存儲數據的結構(數據庫、表)定庵,代表指令:create吏饿、drop、alter等
DML:(Data Manipulation Language洗贰,數據操作語言)用來對數據進行操作(數據表中的內容)找岖,代表指令:insert、delete敛滋、update等许布。其中DML內部又單獨進行了一個分類:DQL(Data Query Language,數據查詢語言)如select
DCL:(Data Control Language绎晃,數據控制語言)主要是負責權限管理(用戶)蜜唾,代表指令:grant、revoke等
1庶艾、客戶端連接認證:連接服務器袁余、認證身份(mysql.exe -hPup)
2、客戶端發(fā)送SQL指令
3咱揍、服務器接收SQL指令颖榜,并處理SQL指令,返回操作結果
4煤裙、客戶端接收結果掩完,并顯示結果
5、斷開連接
系統(tǒng)(DBMS)數據庫(DB)數據表(Table)字段(Field)庫操作表操作(包含字段操作)數據操作
create database 數據庫名字 [庫選項];
庫選項:用來約束數據庫硼砰,分為兩個選項
字符集設定:charset/character set 具體字符集(數據存儲的編碼格式且蓬,常用的有:GBK和UTF8)
校對集設定:collate 具體校對集(數據比較的規(guī)則)
數據庫名字不能用關鍵字(已經被系統(tǒng)使用的字符)或者保留字(將來系統(tǒng)可能會用到的字符)
創(chuàng)建結果:
在數據庫系統(tǒng)中,增加了對應的數據庫信息
會在保存數據的文件夾下(Data目錄)题翰,創(chuàng)建一個對應數據庫名字的文件夾
每個數據庫下都有一個opt文件恶阴,保存了庫選項
查看所有數據庫:show databases;
查看指定部分的數據庫(模糊查詢):show databases like 'pattern';
pattern是匹配模式
%表示匹配多個字符
_表示匹配單個字符
查看數據庫的創(chuàng)建語句:show create database 數據庫名字