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

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

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

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

join的寫(xiě)法

如果用left join 左邊的表一定是驅(qū)動(dòng)表嗎??jī)蓚€(gè)表的join包含多個(gè)條件的等值匹配,都要寫(xiě)道on還是只把一個(gè)寫(xiě)到on,其余寫(xiě)道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自增實(shí)例解析

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

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

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

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

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

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

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

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

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

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

Nested Loop Join的性能問(wèn)題

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

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

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

兩者差異:

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

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

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

innodb 系統(tǒng)自增row_id

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

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

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

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

XID

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

thread_id

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

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

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

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99成人超碰| 欧美一级一区| 国产欧美自拍一区| 亚洲欧美在线专区| 丝袜美腿亚洲一区二区图片| 婷婷色综合网| 蜜桃视频欧美| 99国产精品久久久久久久成人热| 蜜桃tv一区二区三区| 久久美女精品| 亚洲精品97| 欧美1级日本1级| 亚洲精品va| 免费在线欧美视频| 免费人成在线不卡| 巨乳诱惑日韩免费av| 亚洲一区二区免费看| 男人的天堂久久精品| 亚洲精品高潮| 久久精品超碰| 久久精品理论片| 午夜精品成人av| 国产在线日韩| 免费成人在线视频观看| 麻豆亚洲精品| 日韩成人一级| 国产精品一区二区三区av | 国产成人精品一区二区免费看京 | 国精品一区二区三区| 国产高清久久| 亚洲我射av| 国产精品视频一区二区三区 | 欧美在线影院| 中文不卡在线| 国产欧美久久一区二区三区| 久久精品国产福利| 91精品久久久久久久久久不卡| 欧美大黑bbbbbbbbb在线| 亚洲精品在线国产| 你懂的国产精品永久在线| 日韩精品中文字幕第1页| 免费国产自久久久久三四区久久| 巨乳诱惑日韩免费av| 欧美日韩一区自拍| 97精品视频在线看| 夜久久久久久| 亚洲精品乱码久久久久久蜜桃麻豆| 久久国产生活片100| 日韩电影二区| 日韩精品一区第一页| 久久99性xxx老妇胖精品| 国产91久久精品一区二区| 亚洲一区导航| 黄色网一区二区| 激情欧美日韩一区| 欧美有码在线| 99久精品视频在线观看视频| 亚洲综合小说| 激情国产在线| 亚洲人成网77777色在线播放| 国产精品日本一区二区不卡视频| 日韩欧美精品| 亚洲精选久久| 久久久精品五月天| 91综合久久爱com| 91精品婷婷色在线观看| 日韩精品a在线观看91| 日韩一区电影| 青草综合视频| 亚洲女同一区| 久久中文精品| 美美哒免费高清在线观看视频一区二区| 国产福利亚洲| 99国内精品| 国产aⅴ精品一区二区三区久久| 亚洲综合电影一区二区三区| 国产精品欧美大片| 日韩午夜免费| 国产一区二区三区探花| 亚洲免费在线| 四虎8848精品成人免费网站| 在线精品亚洲| 999久久久精品国产| 国产精品成人自拍| 伊人成人网在线看| 国产精品99在线观看| 日韩激情网站| 91精品1区| 免费看av不卡| 国产精品.xx视频.xxtv| 免费久久精品视频| 日韩欧美一区免费| 国产精品1区| 日韩欧美中文字幕一区二区三区| 美女网站视频一区| 麻豆国产欧美日韩综合精品二区| 久久国产精品久久w女人spa| 日韩在线观看不卡| 久久精品国产亚洲一区二区三区| 日韩激情av在线| 亚洲伊人精品酒店| 亚洲在线一区| 一区免费在线| 黑丝美女一区二区| 日韩免费视频| 国产一区二区三区亚洲综合| 天堂va欧美ⅴa亚洲va一国产| 91九色精品国产一区二区| 91亚洲成人| 久久精品免费看| 国产麻豆一区二区三区| 中文一区一区三区免费在线观 | 蜜桃视频在线观看一区| 欧美91视频| 啪啪国产精品| 日韩精品1区| 欧美亚洲日本精品| 成人在线免费观看网站| 欧美精品第一区| 国产精品一级| 日韩精品导航| 日韩av一二三| 日韩国产在线观看一区| 久久不射网站| 性色一区二区| 免费的成人av| 亚洲久草在线| 日韩欧美中文在线观看| 日韩专区一卡二卡| 日韩在线一区二区| 男女男精品网站| 日韩**一区毛片| 国产亚洲欧美日韩精品一区二区三区 | 久久精品毛片| 精品视频一区二区三区四区五区| 精品国产不卡| 国产白浆在线免费观看| 黄色在线观看www| 99精品在线| 在线一区视频| 亚洲欧洲美洲国产香蕉| 欧美日韩一区自拍| 欧美aa在线视频| 日韩a一区二区| 久久a爱视频| 麻豆精品在线| 91亚洲一区| 不卡福利视频| 日本综合字幕| 久久国产欧美| 久久精品导航| 亚洲特色特黄| 亚洲精品中文字幕乱码| 欧美精品一二| 在线亚洲成人| 综合一区二区三区| 青青草91久久久久久久久| 免费成人在线视频观看| 国产亚洲一区| 久久国产免费看| 麻豆91精品91久久久的内涵| 免费在线欧美黄色| 久久只有精品| 日韩一区欧美| 99热精品久久| 影音先锋国产精品| 国产亚洲永久域名| 日韩二区在线观看| 国产精区一区二区| 国产成人精品一区二区免费看京 | 亚洲精品看片| 日本不卡视频一二三区| 欧美日韩一视频区二区| 久久伊人国产| 亚洲精品小说| 在线一区二区三区视频| 亚洲精品中文字幕99999| 青青国产精品| 国产精品久久久免费| 色88888久久久久久影院| 亚洲特级毛片| 亚洲色图国产| 国产精品羞羞答答在线观看| 免费污视频在线一区| 亚洲一区观看| 国产精品一国产精品k频道56| 色欧美自拍视频| 国产精品免费看| 激情不卡一区二区三区视频在线| 亚洲小说欧美另类婷婷| 亚洲欧洲日韩精品在线| 国产乱码精品| 在线一区免费| 97精品资源在线观看| 国产在线一区不卡| 欧美一级精品| 先锋影音国产一区| 麻豆视频久久| 欧美亚洲激情| 日本欧美在线|