日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Mysql join聯(lián)表及id自增實例解析

瀏覽:249日期:2023-10-11 16:23:39

join的寫法

如果用left join 左邊的表一定是驅(qū)動表嗎?兩個表的join包含多個條件的等值匹配,都要寫道on還是只把一個寫到on,其余寫道where部分?

createtablea(f1int,f2int,index(f1))engine=innodb; createtableb(f1int,f2int)engine=innodb; insertintoavalues(1,1),(2,2),(3,3),(4,4),(5,5),(6,6); insertintobvalues(3,3),(4,4),(5,5),(6,6),(7,7),(8,8);select*fromaleftjoinbon(a.f1=b.f1)and(a.f2=b.f2);/*Q1*/ select*fromaleftjoinbon(a.f1=b.f1)where(a.f2=b.f2);/*Q2*/

執(zhí)行結(jié)果:

Mysql join聯(lián)表及id自增實例解析

由于表b沒有索引,使用的是Block Nexted Loop Join(BNL)算法

把表a的內(nèi)容讀入join_buffer中,因為select * ,所以字段f1,f2都被放入 順序掃描b,對于每一行數(shù)據(jù),判斷join條件是否滿足,滿足條件的記錄,作為結(jié)果集的一行,如果有where子句,判斷where部分滿足條件后再返回。 表b掃描完成后,對于沒有匹配的表a的行,用null補上,放到結(jié)果集中。

Mysql join聯(lián)表及id自增實例解析

Q2語句中,explain結(jié)果:

Mysql join聯(lián)表及id自增實例解析

b為驅(qū)動表,如果一條語句EXTRA字段什么都沒有的話,就是Index Nested_Loop Join算法,因此流程是:

順序掃描b,每一行用b.f1到a中去查,匹配a.f2=b.f2是否滿足,作為結(jié)果集返回。

Q1與Q2執(zhí)行流程的差異是因為優(yōu)化器基于Q2這個查詢語義做了優(yōu)化:在mysql里,null跟任何值執(zhí)行等值判斷和不等值判斷的結(jié)果都是null,包括select null = null 也返回null。

在Q2中,where a.f2 = b.f2表示,查詢結(jié)果里不會包含b.f2是null的行,這樣left join語義就是找到兩個表里f1 f2對應(yīng)相同的行,如果a存在而b匹配不到,就放棄。因此優(yōu)化器把這條語句的left join改寫成了join,因為a的f1有索引,就把b作為驅(qū)動表,這樣可以用NLJ算法,所以在使用left join時,左邊的表不一定是驅(qū)動表。

如果需要left join的語義,就不能把被驅(qū)動表的字段放在where條件里做等值判斷或不等值判斷,必須寫在on里面。

Nested Loop Join的性能問題

BLN算法的執(zhí)行邏輯

將驅(qū)動表的數(shù)據(jù)全部讀入join_buffer中,里面是無序數(shù)組。 順序遍歷被驅(qū)動表的所有行,每一行都跟join_buffer做匹配,成功則作為結(jié)果集的一部分返回。

Simple Nested Loop Join算法邏輯是:順序去除驅(qū)動表的每一行數(shù)據(jù),到被驅(qū)動表做全表匹配。

兩者差異:

在對被驅(qū)動表做全表掃描時,如果數(shù)據(jù)沒有在buffer pool中,需要等待部分?jǐn)?shù)據(jù)從磁盤讀入。會影響正常業(yè)務(wù)的buffer pool命中率,而且會對被驅(qū)動表做多次訪問,更容易將這些數(shù)據(jù)頁放到buffer pool頭部。所以BNL算法性能會更好。自增id

mysql中自增id定義了初始值,不停的增長,但是有上限,2^32-1,自增的id用完了會怎么樣呢。

表定義的自增值達到上限后,再申請下一個id時,得到的值保持不變。再次插入時會報主鍵沖突錯誤。所以在建表時,如果有頻繁的增刪改時,就應(yīng)該創(chuàng)建8個字節(jié)的bigint unsigned。

innodb 系統(tǒng)自增row_id

如果創(chuàng)建了Innodb表沒有指定主鍵,那么innodb會創(chuàng)建一個不可見的,長度為6個字節(jié)的row_id,所有無主鍵的innodb表,每插入一行數(shù)據(jù),都將當(dāng)前的dict_sys.row_id值作為要插入數(shù)據(jù)的row_id,然后自增1。

實際上,代碼實現(xiàn)時,row_id是一個長度為8字節(jié)的無符號長整形,但是innodb在設(shè)計時,給row_id只是6個字節(jié)的長度,這樣寫道數(shù)據(jù)時只放了最后6個字節(jié)。所以:

row_id寫入表的范圍是0到2^48-1; 當(dāng)達到最大時,如果再有插入數(shù)據(jù)的行為來申請row_id,拿到以后再去最后6個字節(jié)就是0,然后繼續(xù)循環(huán)。 再innodb的邏輯里,達到最大后循環(huán),新數(shù)據(jù)會覆蓋已經(jīng)存在的數(shù)據(jù)。

從這個角度看,我們應(yīng)該主動創(chuàng)建自增主鍵,這樣達到上限后,插入數(shù)據(jù)會報錯。數(shù)據(jù)的可靠性會更加有保障。

XID

redo log 和 binlog相互配合的時候,它們有一個共同的字段就是xid,在mysql中對應(yīng)事務(wù)的。xid最大時2^64次方,用盡只存在理論。

thread_id

系統(tǒng)保存了全局變量thread_id_counter,每新建一個連接,就將thread_id_counter賦值給這個新連接的線程變量。thread_id_counter定義的大小是4個字節(jié),因此到2^32-1就會重置為0,然后繼續(xù)增加。但是show processlist里不會看到兩個相同的thread_id,這是因為mysql設(shè)計了一個唯一數(shù)組邏輯,給新線程分配thread_id的時候:

do{ new_id=thread_id_counter++; }while(!thread_ids.insert_unique(new_id).second);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一区二区三区四区在线看| 午夜欧美视频| 日韩精品乱码av一区二区| 亚洲一区二区三区高清| 国产偷自视频区视频一区二区| 欧美.日韩.国产.一区.二区| 久久中文字幕二区| 久久人人88| 制服诱惑一区二区| 免播放器亚洲| 蜜臀国产一区二区三区在线播放| 美女网站一区| 日韩另类视频| 久久精品亚洲人成影院 | 国产精品久久国产愉拍| 久久国产欧美日韩精品| 欧美成a人片免费观看久久五月天| 美女国产精品久久久| 日韩一区二区三区精品| 免费人成黄页网站在线一区二区| 亚洲一区免费| 欧美日韩视频免费观看| 美女少妇全过程你懂的久久| 免费在线观看精品| 欧美伊人影院| 久久久久伊人| 久久久精品网| 西西人体一区二区| 日韩高清不卡在线| 美女久久99| 丝袜诱惑一区二区| 亚洲h色精品| 亚洲欧美日韩国产一区| 日韩精品久久理论片| 久久久亚洲欧洲日产| 中文字幕在线视频久| 久久三级视频| 亚洲一二av| 国产福利一区二区精品秒拍| 亚洲精品在线影院| 精品在线播放| 日本亚州欧洲精品不卡| 精品精品99| 伊人精品视频| 国产精品99久久免费| 亚洲第一精品影视| 国产亚洲一区| 久久久久久久久丰满| 香蕉久久一区| 日韩一区三区| 少妇精品久久久一区二区| 国产精品99一区二区三| 免费看的黄色欧美网站 | 亚洲精品自拍| 国产精品网在线观看| 日韩精品免费一区二区三区| 蜜臀精品久久久久久蜜臀| 精品国产美女a久久9999| 美女尤物久久精品| 国产在线不卡一区二区三区| 日韩在线一二三区| 国产在线观看www| 日韩高清一区在线 | 黄色在线网站噜噜噜| 男人的天堂久久精品| 国产精品国产一区| 日韩一区二区三区免费视频| 国产精品99一区二区| 国产精品高清一区二区| 国产精品试看| 亚洲欧洲美洲av| 91成人在线| 老司机精品久久| 日韩中文字幕高清在线观看| 欧美一区在线观看视频| 亚洲精品国产偷自在线观看| 精品三级国产| 婷婷亚洲精品| 欧美日韩国产一区精品一区| 国产精品99一区二区三| 欧美亚洲三级| 亚洲影院天堂中文av色| 激情视频一区二区三区| 精品资源在线| 日韩成人av影视| 久久亚洲电影| 国产综合色产| 黑森林国产精品av| 六月丁香综合在线视频| 日韩精品第二页| 亚洲精华国产欧美| 日韩欧美少妇| 精品视频一区二区三区在线观看| 五月国产精品| 视频在线观看一区二区三区| 久久伦理在线| 精品日韩视频| 国产黄大片在线观看| 啪啪亚洲精品| 亚洲深深色噜噜狠狠爱网站 | 日韩精品一区二区三区免费观影 | 亚洲另类av| 九色精品91| 蜜桃精品在线| 国产成人精品福利| 国产欧美日韩免费观看| 亚洲狼人精品一区二区三区| 免费精品视频| 一区二区自拍| 午夜电影亚洲| 伊人久久大香线蕉av不卡| 日本久久成人网| 久久久夜夜夜| 久久婷婷亚洲| 一本大道色婷婷在线| 在线中文字幕播放| 国内在线观看一区二区三区 | 精品国产亚洲一区二区三区在线 | 噜噜噜躁狠狠躁狠狠精品视频| 欧美aa在线观看| 久久香蕉精品香蕉| 国产精品久久久久久久久久白浆 | 久久久久免费| 久久久国产精品网站| 国产日韩欧美中文在线| 亚洲精品高潮| 日韩精品一区二区三区中文字幕| 99视频在线精品国自产拍免费观看| 亚洲午夜精品久久久久久app| 免费看av不卡| 日本а中文在线天堂| 激情久久一区二区| 国产精一区二区| 国产精品.xx视频.xxtv| 国产亚洲字幕| 欧美激情网址| 成人污污视频| 日韩中文影院| 亚洲激情中文| 国产亚洲精品v| 一区二区高清| 日本国产欧美| 国产精品777777在线播放| 精品香蕉视频| 日韩在线视频精品| 亚洲无线一线二线三线区别av| 欧美国产91| 在线国产一区二区| 免费成人av在线播放| 日韩精品国产精品| 麻豆精品新av中文字幕| 国产91在线播放精品| 日本精品影院| 亚洲国产成人精品女人| 综合激情网...| 国产精品极品在线观看| 日本激情一区| 欧美日韩在线播放视频| 老色鬼久久亚洲一区二区| 欧美日韩精品一区二区三区视频 | 日韩精品首页| 性一交一乱一区二区洋洋av| 日韩一区二区三区精品视频第3页| 国产精品一区二区三区av麻| 国产一区二区三区不卡视频网站 | 在线精品视频一区| 欧美日本精品| 精品国产第一福利网站| 婷婷国产精品| 亚洲在线久久| 激情久久99| 欧美日韩四区| 国产三级一区| 免费在线小视频| 国产精品婷婷| 国产精品久久久久久模特| 日韩一区二区三区在线免费观看| 激情自拍一区| 国产精品一区三区在线观看| 成人精品中文字幕| 欧美资源在线| 麻豆久久一区| 国产主播一区| 日韩精品一区二区三区av| 日本激情一区| 三级亚洲高清视频| 美女精品一区二区| av亚洲免费| 久久精品 人人爱| 久久精品动漫| 欧美精品影院| 欧美精品一区二区久久| 中文字幕一区二区av| 国产精品高颜值在线观看| 亚洲精品麻豆| 日韩精品电影| 亚洲精选av| а√天堂8资源中文在线| 亚洲午夜久久| 日本精品影院|