碼農(nóng)求職小助手mysql高頻面試題_第1頁(yè)
碼農(nóng)求職小助手mysql高頻面試題_第2頁(yè)
碼農(nóng)求職小助手mysql高頻面試題_第3頁(yè)
碼農(nóng)求職小助手mysql高頻面試題_第4頁(yè)
碼農(nóng)求職小助手mysql高頻面試題_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2019/9/7 2019/9/72、MySQLB二查詢性能優(yōu)化1Explain如何做MySQL的性能優(yōu)化?三引四數(shù)據(jù)類型3、 策六MyISAM和InnoDB引擎使用的鎖InnoDB引擎的鎖的算法有三種1、SQL語(yǔ)句的執(zhí)行順序3、MySQLCPU500%十、SQL語(yǔ)句 1、BBTree指的是BalanceTree,也就是平衡樹。平衡樹是一顆查找樹,并且所有葉子節(jié)B+樹是基于B樹和葉子節(jié)點(diǎn)順序指針進(jìn)行實(shí)現(xiàn),它具有B樹的平衡性,并且通在B+樹中,一個(gè)節(jié)點(diǎn)中的key從左到右非遞減排列,如果某個(gè)指針的左右相鄰keykeyikeyi+1nullkeykeyi于等于keyi+1。進(jìn)行查找操作時(shí),首先在根節(jié)點(diǎn)進(jìn)行二分查找,找到一個(gè) 所在的指針,然后遞歸keydata、刪除操作會(huì)破壞平衡樹的平衡性,因此在刪除操作之后,需要對(duì)樹進(jìn)行一BhO(h)=O(logdNd樹的出度為2,而B+Tree的出度一般都非常大,所以樹的樹高h(yuǎn)很明顯B+Tree大非常多,查找的次數(shù)也就為了減少磁盤I/O操作,磁盤往往不是嚴(yán)格按需,而是每次都會(huì)預(yù)讀。預(yù)讀過程為單位交換數(shù)據(jù)。數(shù)據(jù)庫(kù)系統(tǒng)將索引的一個(gè)節(jié)點(diǎn)的大小設(shè)置為頁(yè)的大小,使得一次I/O就BInDB的+adataB+TreeKey其data域的值,然后以data域的值為地址相應(yīng)的數(shù)據(jù)記錄。這被稱為“非聚InnoDB:其數(shù)據(jù)文件本身就是索引文件。相比MyISAM的索引文件和數(shù)據(jù)文件是分離的,其表數(shù)據(jù)文件本身就是按B+Tree組織的一個(gè)索引結(jié)構(gòu),樹的葉節(jié)點(diǎn)data域保存了完整的數(shù)據(jù)記錄。這個(gè)索引的key是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文助索引,輔助索引的data域相應(yīng)記錄主鍵的值而不是地址,這也是和MyISAM不同的地方。在根據(jù)主索引搜索時(shí),直接找到key所在的節(jié)點(diǎn)即可取出數(shù)據(jù);在根InnoDB引擎有一個(gè)特殊的功能叫“自適應(yīng)哈希索引”,當(dāng)某個(gè)索引值被使用的BB+TreeMATCHAGAINSTWHEREInnoDB引擎在MySQL5.6.4版本中也開始支持全文索引2.4.MyISAM引擎支持空間數(shù)據(jù)索引(R-Tree),可以用于地理數(shù)據(jù)。空間數(shù)據(jù)必須使用GIS相關(guān)的函數(shù)來數(shù)據(jù)actor_idfilm_idWHEREactor_id=1ANDfilm_id=1;1,此時(shí)每個(gè)記錄FROMBLOB、TEXTVARCHAR—些引擎(例如 MyISAM)在內(nèi)存中只緩存索引,而數(shù)據(jù)依賴于操作系統(tǒng)來緩 2、幫助服務(wù)器避免進(jìn)行排序和分組,以及避免創(chuàng)建臨時(shí)表(BORDERBYGROUPBYSQLSELECTSELECT*FROM`houdunwang`WHERE`uname`LIKE走索SELECT*FROM`houdunwang`WHERE`uname`LIKE不走索EXPLAINSELECT*FROM`a`WHERE`a`="1"走索同樣也是使用了函數(shù)運(yùn) 7、MySQL優(yōu)化器會(huì)對(duì)SQL語(yǔ)句進(jìn)行優(yōu)化,如果優(yōu)化器估計(jì)使用全表掃描要比使用二查詢性能優(yōu)1ExplainMySQLSQL2、type:類型【 查詢優(yōu)化的一個(gè)重要指標(biāo)】結(jié)果值從好到壞依次是system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALLsystem:表只有一行記錄(等于系統(tǒng)表),這是const類型的特例,平時(shí)不會(huì)出constconstprimarykeyuniquewheremysql該查詢轉(zhuǎn)換為一個(gè)const;鍵或唯一索引掃描;range:只檢索給定范圍的行,使用一個(gè)索引來選擇行。key列顯示使用了那個(gè)索indexFullIndexScan,indexALLindexALL快,應(yīng)為索引文件通常比數(shù)據(jù)文件小。(index與ALL雖然都是讀全表,但index是從索引中,而ALL是從硬盤)ALL:FullTableScan3、key:使用的索引,如果為NULL,則沒有使用索引;4、 掃描的行數(shù)Explain命令詳解 1SELECT*do{LIMIT10000")以讓MySQL按照ID順序進(jìn)行查詢,這可能比隨機(jī)的連接要更高效。SELECTSELECT*FROMJOINpostONtag_post.post_id=post.idWHEREtag.tag='mysql';SELECTSELECT*FROMtagWHEREtag='mysql';MySQL問題排查都有哪些2explainSQLMySQL2select*三引實(shí)現(xiàn)了四個(gè)標(biāo)準(zhǔn)的級(jí)別,默認(rèn)級(jí)別是:可重復(fù)讀(REPEATABLEREAD)。在可(CONCURRENTINSERT)。2、并發(fā):MyISAMInnoDB5、恢復(fù):MyISAM后發(fā)生損壞的概率比InnoDB高很多,而且恢復(fù)的速度也更2selectcount*據(jù)類TINYINTSMALLINTMEDIUMINTINTBIGINT81624,32,64FLOATDOUBLEDECIMALCPU運(yùn)算,但是不支持DECIMAl類型的計(jì)算,因此DECIMAL的計(jì)算比浮點(diǎn)類型需要更高的FLOAT、DOUBLEDECIMALDECIMAL(18,918位,取9位小數(shù)部分,剩下9位整數(shù)部分CHARVARCHARVARRUPDATE 時(shí)可能會(huì)使行變得比原來長(zhǎng),當(dāng)超出一個(gè)頁(yè)所能容納的大小時(shí),就要執(zhí)行額外的操作。IAM會(huì)將行成不同片段,而InoDB需來行進(jìn)內(nèi)在進(jìn)行和檢索時(shí),會(huì)保留VARCHAR末尾的空格,而會(huì)刪除CHAR末尾的varchar(505050,varchar(50varchar(200)o所占空間一樣,但后者在排序時(shí)會(huì)消耗內(nèi)存,因?yàn)閛rderbycol采用fixed_length計(jì)算col長(zhǎng)度。MySQLDATETIMETIMESTAMP能夠保存從1001年到9999年的日期和時(shí)間,精度為秒,使用8字節(jié)的空間。默認(rèn)情況下,MySQLDATETIME如“2008-01-1622:37:08ANSI和UNIX時(shí)間戳相同,保存從1970年1月1日午夜(時(shí)間)以來的秒數(shù),使用4個(gè)字節(jié),只能表示從1970年到2038年。UNIX_TIMESTAMPUNIX水平切分又稱為Sharding,它是將同一個(gè)表中的記錄拆分到多個(gè)結(jié)構(gòu)相同的表中。 XAID使用全局唯—分布式ID( 的Snowflake算法六主要涉及三個(gè)線程:binlogI/OSQLSQL線程:負(fù)責(zé)重放日志并重放其中的SQL語(yǔ)句七、事

2、一致性 執(zhí)行事務(wù)前后,數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)轉(zhuǎn)換到另一個(gè)一致性狀態(tài)3、性: 并發(fā)數(shù)據(jù)庫(kù)時(shí),一個(gè)用戶的事物不被其他干擾,各并發(fā)事務(wù)之間4、持久性: 一個(gè)事務(wù)被提交之后。它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變是持久的,即使數(shù)據(jù)庫(kù) MITTED(未提交讀):最低的級(jí)別,允許尚未提交的數(shù)據(jù)變 MITTED(提交讀):允許并發(fā)事務(wù)已經(jīng)提交的數(shù)據(jù),可以臟據(jù)是被本身事務(wù)自己所修改,可以臟讀和不可重復(fù)讀,但幻讀仍有可能發(fā)生。入記錄A,此時(shí)該事務(wù)還未提交,然后另一個(gè)事務(wù)嘗試到了記錄A。不可重復(fù) :是指在一個(gè)事務(wù)內(nèi),多次讀同一數(shù)據(jù)幻讀:指同一個(gè)事務(wù)內(nèi)多次查詢返回的結(jié)果集不一樣。比如同一個(gè)事務(wù)Ann+1默認(rèn)采用的REPEATABLE_READ級(jí)別Oracle默認(rèn)采用 MITTED 所謂的MVCC(Multi-VersionConcurrencyControl,多版本并發(fā)控制)指的就是在使用READCOMMITTD、REPEATABLEREAD這兩種級(jí)別的事務(wù)在執(zhí)行普通的SEELCT操作時(shí)記錄的版本鏈的過程,這樣子可以使不同事務(wù)的讀-寫、寫-讀操作并發(fā)READCOMMITTD、REPEATABLEREAD這兩個(gè)級(jí)別的一個(gè)很大不同就是生成ReadViewREADCOMMITTDSELECT一個(gè)ReadView,而REPEATABLEREAD只在第一次進(jìn)行普通SELECT操作前生成一個(gè)ReadView,之后的查詢操作都重復(fù)這個(gè)ReadView就好了。八、鎖MyISAMtable-levellocking度最低,MyISAMInnoDB行級(jí)鎖:L的一種鎖,只針對(duì)當(dāng)前操作的行進(jìn)行加鎖。行級(jí)鎖能大大減少據(jù)庫(kù)操的其加鎖度最小并度高,但鎖的開也最大加鎖將使用表鎖2、在你增刪改查時(shí),匹配的條件字段不帶有索引時(shí),InnoDBselect命令時(shí)觸發(fā)讀鎖,什么時(shí)候觸發(fā)寫鎖,就是在你使用update、de

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論