2019-07-10 epoll, 單進(jìn)程---單線程的非阻塞,MySQL----主鍵約束


單進(jìn)程服務(wù)器-----epoll

IO多路復(fù)用

基本原理就是select,poll,epoll這個(gè)function會(huì)不斷地輪詢所負(fù)責(zé)的所有socket,當(dāng)某個(gè)socket有數(shù)據(jù)到達(dá)了就通知用戶進(jìn)程

采用epoll模型時(shí)創(chuàng)建了一個(gè)共享的內(nèi)存空間,操作系統(tǒng)采用事件通知的方式,使一個(gè)進(jìn)程能同時(shí)等待多個(gè)文件描述符

select/epoll的好處就在于單個(gè)process就可以同時(shí)處理多個(gè)網(wǎng)絡(luò)連接的IO

select、poll、epoll 模型的區(qū)別:

select就是輪詢,在Linux上限制個(gè)數(shù)一般為1024個(gè)

pool解決了select的個(gè)數(shù)限制,但是依然是輪詢

epoll解決了個(gè)數(shù)的限制

epoll解決了輪詢的方式

單進(jìn)程---單線程的非阻塞

設(shè)置套接字為非阻塞的方式:tcp_server_socket.setblocking(Flase)

也要把new_socket設(shè)置為非阻塞方式:new_socket.setblocking(Flase)

accept()是判斷是否有新客戶端到來(lái),recv是判斷是否有新數(shù)據(jù)到來(lái)

單進(jìn)程單線程不能同一時(shí)刻為別人服務(wù),一定是并發(fā)不是并行,因?yàn)橐遣⑿械脑捲诹斜砝锩娴目蛻舳藭r(shí)要同時(shí)為別人服務(wù)的

先進(jìn)入while:True循環(huán),然后判斷是否有新客戶到來(lái),要是沒有就不會(huì)走else其中的列表是空的所以就不會(huì)進(jìn)入for循環(huán);當(dāng)有新的客戶端連接時(shí)就會(huì)走else其中列表就不為空就會(huì)走for循環(huán),就會(huì)調(diào)用已有的連接rece()來(lái)進(jìn)行數(shù)據(jù)的獲取,其中要是數(shù)據(jù)沒有來(lái)就會(huì)進(jìn)行下一輪循環(huán),當(dāng)有新的數(shù)據(jù)獲取會(huì)產(chǎn)生兩種狀況:(1)對(duì)方已發(fā)送過來(lái)數(shù)據(jù)(2)對(duì)方調(diào)用close()導(dǎo)致了recv()返回


MySQL----主鍵約束


主鍵:

primary key,主要的鍵,一張表只能有一個(gè)字段可以使用對(duì)應(yīng)的鍵,用來(lái)唯一的約束該字段里面的數(shù)據(jù),不能重復(fù),這種稱之為主鍵

增加主鍵:

方案一:在創(chuàng)建表的時(shí)候,直接在字段之后,跟primary key關(guān)鍵字(主鍵本身不允許為空)

方案二:在創(chuàng)建表的時(shí)候,在所有的字段之后,使用primary key(主鍵字段列表)來(lái)創(chuàng)建主鍵,如果有多個(gè)字段作為主鍵,可以是復(fù)合主鍵

方案三:當(dāng)表已經(jīng)創(chuàng)建好之后,額外追加主鍵,可以通過修改表字段屬性,也可以直接追加

alter table 表名 add primary key(字段列表);

主鍵約束:

主鍵對(duì)應(yīng)的字段中的數(shù)據(jù)不允許重復(fù),一旦重復(fù),數(shù)據(jù)操作(增和改)失敗

更新主鍵 & 刪除主鍵:

alter table 表名 drop primary key;

主鍵分類:

業(yè)務(wù)主鍵

邏輯主鍵:自增長(zhǎng):

auto_increment,當(dāng)對(duì)應(yīng)的字段,不給值,或給默認(rèn)值、或給NULL值,會(huì)自動(dòng)的被系統(tǒng)觸發(fā),系統(tǒng)會(huì)從當(dāng)前字段中已有的最大值基礎(chǔ)上,再進(jìn)行+1操作,得到一個(gè)新的不同的數(shù)據(jù)

特點(diǎn):

任何一個(gè)字段要做自增長(zhǎng),前提必須本身就是一個(gè)索引

自增長(zhǎng)字段必須是數(shù)字,而且是整型

一張表最多只能有一個(gè)自增長(zhǎng)

修改自增長(zhǎng):alter table 表名 auto_increment=值;

查看自增長(zhǎng)對(duì)應(yīng)的變量:show variables like 'auto_increment%';

刪除自增長(zhǎng):alter table 表名 modify 字段 類型;

唯一鍵(unique key):

默認(rèn)允許自動(dòng)為空,而且可以多個(gè)為空

增加唯一鍵:

方案一:在創(chuàng)建表的時(shí)候,字段之后直接跟unique / unique key

方案二:在所有的字段之后增加unique key(字段列表);

方案三:在創(chuàng)建表之后增加唯一鍵

更新唯一鍵:

alter table 表名 drop index 索引名字;

MySQL中提供了多種索引:

主鍵索引:primary key

唯一索引:unique key

全文索引:fulltext index

普通索引:index

創(chuàng)建:

create [unique] index 索引名 on 表名(字段名(長(zhǎng)度));

alter 表名 add [unique] index [索引名] on (字段名(長(zhǎng)度));

刪除:

drop index [索引名] on 表名;

查看:

show index from 表名\G

使用alter命令添加數(shù)據(jù)表的索引:

alter table 表名 add primary key (字段列表):添加一個(gè)主鍵,意味著索引值必須是唯一且不為空

alter table 表名 add unique 索引名 (字段列表):創(chuàng)建索引的值必須是唯一的,允許NULL,且NULL可能會(huì)出現(xiàn)多次

alter table 表名 add fulltext 索引名 (字段列表):添加全文索引

alter table 表名 add index 索引名 (字段列表):添加普通索引,索引值可出現(xiàn)多次

主鍵沖突(Duplicate key):

更新操作:insert into 表名 [(字段列表)] values(值列表) on duplicate key update 字段=新值;

替換:replace insert into 表名 [(字段列表)] values(值列表);

蠕蟲復(fù)制:

insert into 表名[(字段列表)] select 字段列表/* from 數(shù)據(jù)表名;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,944評(píng)論 0 9
  • 一、MySQL優(yōu)化 MySQL優(yōu)化從哪些方面入手: (1)存儲(chǔ)層(數(shù)據(jù)) 構(gòu)建良好的數(shù)據(jù)結(jié)構(gòu)??梢源蟠蟮奶嵘覀僑...
    寵辱不驚丶?xì)q月靜好閱讀 2,651評(píng)論 1 8
  • 手動(dòng)不易,轉(zhuǎn)發(fā)請(qǐng)注明出處 --Trance 數(shù)據(jù)庫(kù)系統(tǒng)命令: (1).查看存儲(chǔ)過程狀態(tài):show pro...
    Trance_b54c閱讀 1,827評(píng)論 0 8
  • 主鍵: primary key,主要的鍵,一張表只能有一個(gè)字段可以使用對(duì)應(yīng)的鍵,用來(lái)唯一的約束該字段里面的數(shù)據(jù),不...
    彝_e37e閱讀 1,524評(píng)論 0 1
  • 今日飲食 點(diǎn)心:宜芝多香濃吐司1片半 水果:1個(gè)蘋果+4個(gè)金錢桔 今日運(yùn)動(dòng) 步行:13萬(wàn)步+ 騎行:69分鐘,約9...
    小葡萄mm閱讀 154評(píng)論 2 1

友情鏈接更多精彩內(nèi)容