mysql怎么查找兩個(gè)表格數(shù)據(jù)差異 mysql索引底層原理?
mysql索引底層原理?一、定義索引定義:索引(Index)是幫MySQL高效穩(wěn)定某些數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。本質(zhì):索引是數(shù)據(jù)結(jié)構(gòu)。二、B-Treem階B-Tree滿足100元以內(nèi)條件:1、各個(gè)節(jié)點(diǎn)至少可以不
mysql索引底層原理?
一、定義
索引定義:索引(Index)是幫MySQL高效穩(wěn)定某些數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。本質(zhì):索引是數(shù)據(jù)結(jié)構(gòu)。
二、B-Tree
m階B-Tree滿足100元以內(nèi)條件:1、各個(gè)節(jié)點(diǎn)至少可以不強(qiáng)大m棵子樹。2、根節(jié)點(diǎn),只有一大概有2個(gè)節(jié)點(diǎn)(要么暴戾情況,應(yīng)該是一棵樹就一個(gè)根節(jié)點(diǎn),單細(xì)胞生物,即是根,確實(shí)是葉,也是樹)。3、非根非葉的節(jié)點(diǎn)至一等一的Ceil(m/2)個(gè)子樹(Ceil來(lái)表示向上取整,如5階B樹,每個(gè)節(jié)點(diǎn)最起碼有3個(gè)子樹,也就是大概有3個(gè)叉)。4、非葉節(jié)點(diǎn)中的信息除了[n,A0,K1,A1,K2,A2,…,Kn,An],,其中n可以表示該節(jié)點(diǎn)中存放的關(guān)鍵字個(gè)數(shù),K為關(guān)鍵字且KiltKi1,A為正指向子樹根節(jié)點(diǎn)的指針。5、從根到葉子的每一條路徑應(yīng)該有不同的長(zhǎng)度(葉子節(jié)點(diǎn)在完全相同的層)
B-Tree特性:
mysql如何對(duì)比主從復(fù)制?
mysql差不多主從復(fù)制的辦法是:
主庫(kù)自動(dòng)打開binlog功能并直接授權(quán)從庫(kù)連接上主庫(kù),從庫(kù)通過(guò)changemaster得到主庫(kù)的查找不同步的信息,后再連接上主庫(kù)通過(guò)驗(yàn)正,主庫(kù)IO線程參照從庫(kù)slave線程的請(qǐng)求,從結(jié)束記錄的位置點(diǎn)往上正在取信息,而把取到的位置點(diǎn)和2011版的位置與binlog信息親自發(fā)我從庫(kù)IO線程,從庫(kù)將相關(guān)的sql語(yǔ)句貯放在relay-log里面,最終從庫(kù)的sql線程將relay-log里的sql語(yǔ)句應(yīng)用方法到從庫(kù)上,至此整個(gè)離線過(guò)程結(jié)束,之后將是無(wú)限反復(fù)重復(fù)上述過(guò)程。
mysql和postgresql的區(qū)別?
1架構(gòu)對(duì)比
MySQL:多線程
PostgreSQL:多進(jìn)程
多線程架構(gòu)和多進(jìn)程架構(gòu)之間沒(méi)有絕對(duì)的好壞,的或oracle在unix上是多進(jìn)程架構(gòu),在windows上是多線程架構(gòu)。
PG的有多種集群架構(gòu)也可以選擇類型,plproxy可以不允許語(yǔ)句級(jí)的鏡像或分片,slony這個(gè)可以接受字段級(jí)的離線設(shè)置,standby這個(gè)可以最終形成WAL文件級(jí)或流式的讀寫分離集群,同步頻率和集群策略決定方便啊,操作更加簡(jiǎn)單。
pgsql對(duì)于numa架構(gòu)的支持比mysql強(qiáng)那些,比MYSQL是對(duì)讀的性能更好一些,pgsql重新提交可以全部異步,而mysql的內(nèi)存表太差實(shí)用點(diǎn)(因?yàn)楸礞i的原因)
2對(duì)存儲(chǔ)過(guò)程及事務(wù)的支持能力
1)MySQL是對(duì)無(wú)事務(wù)的MyISAM表,區(qū)分表鎖定住,一個(gè)長(zhǎng)時(shí)間運(yùn)行的查詢很很有可能會(huì)長(zhǎng)時(shí)間地阻擋對(duì)表的更新,而PostgreSQL不存在地這樣的問(wèn)題。
2)PostgreSQL意見(jiàn)存儲(chǔ)過(guò)程,要比MySQL好,必須具備本地緩存先執(zhí)行計(jì)劃的能力;
3)MySQL4.0.2-alpha又開始支持事務(wù)的概念,剩余無(wú)事務(wù)的表類型,為用戶能提供了更多的選擇。
3穩(wěn)定性及性能
1)高并發(fā)讀寫,負(fù)載靠近了極限下,PG的性能指標(biāo)仍可以依靠雙曲線甚至連對(duì)數(shù)曲線,到頂峰之后并沒(méi)有迅速下降,而MySQL很明顯再次出現(xiàn)一個(gè)波峰后下降狀態(tài)(5.5版本之后,在企業(yè)級(jí)版本中有個(gè)插件也可以會(huì)改善很多,但需要需要付費(fèi))
2)PostgreSQL的穩(wěn)定性極強(qiáng),Innodb等引擎在崩潰、斷電之類的災(zāi)難場(chǎng)景下抗打擊能力有了極大的進(jìn)步,然而很多MySQL用戶都遇到了過(guò)Serve的數(shù)據(jù)庫(kù)弄丟的場(chǎng)景——mysql系統(tǒng)庫(kù)是MyISAM的,相比之下,PG數(shù)據(jù)庫(kù)這方面要好一點(diǎn)。
3)mysql的innodb引擎,這個(gè)可以相當(dāng)充分系統(tǒng)優(yōu)化憑借系統(tǒng)所有內(nèi)存,超大內(nèi)存下PG對(duì)內(nèi)存在用的不那么利用(必須據(jù)內(nèi)存情況合理配置)。從測(cè)試結(jié)果上看,mysql5.5的性能提升很小,單機(jī)性能強(qiáng)于pgsql,5.6應(yīng)該要會(huì)強(qiáng)更大。