一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

java面試題 --- MySQL①

 貪挽懶月 2022-06-20 發(fā)布于廣東

1. 對(duì) MySQL 的架構(gòu)了解嗎?
MySQL 主要分為連接層,服務(wù)層,引擎層和存儲(chǔ)層。

  • 連接層就是提供連接服務(wù)的,比如 JDBC 驅(qū)動(dòng);
  • 服務(wù)層包括連接池、SQL 接口、解析器、優(yōu)化器等;
  • 引擎層就是真正負(fù)責(zé)數(shù)據(jù)讀寫的,innoDB 就屬于引擎層;
  • 存儲(chǔ)層就負(fù)責(zé)將數(shù)據(jù)存儲(chǔ)到文件系統(tǒng)。

2. MySQL 有哪些存儲(chǔ)引擎?有什么區(qū)別?
常見的有 InnoDB 和 MyISAM。

  • InnoDB 支持行鎖,表鎖,事務(wù),使用聚簇索引,寫數(shù)據(jù)的效率比 MyISAM 更高。它有四個(gè)特性,插入緩沖,雙寫,自適應(yīng)哈希,預(yù)讀。插入緩沖就是插入數(shù)據(jù)之前會(huì)檢查緩沖中有沒有,沒有的話會(huì)先插入到緩沖中,有的話就會(huì)以一定的頻率將緩沖和索引頁(yè)合并;雙寫就是數(shù)據(jù)寫到磁盤前會(huì)先寫到緩存中,保證數(shù)據(jù)的可靠性;自適應(yīng)哈希就是存儲(chǔ)引擎會(huì)監(jiān)控索引頁(yè)的查詢,如果發(fā)現(xiàn)用 Hash 索引會(huì)提升性能,就會(huì)自動(dòng)建立 Hash 索引;預(yù)讀就是 InnoDB 會(huì)用算法預(yù)測(cè)用戶下次要讀取的數(shù)據(jù),提前加載到緩存池中,提升性能。
  • MyISAM 只支持表鎖,不支持事務(wù),使用非聚簇索引,查詢的效率比 InnoDB 更高。

3. SQL 分為哪幾類?

  • DDL:數(shù)據(jù)定義語(yǔ)言,比如 create、drop、alter、truncate;
  • DQL:數(shù)據(jù)查詢語(yǔ)言,比如 select;
  • DML:數(shù)據(jù)操縱語(yǔ)言,比如 insert、update、delete;
  • DCL:數(shù)據(jù)控制語(yǔ)言,比如 grant、revoke(刪除權(quán)限)、commit、rollback。

4. 刪除數(shù)據(jù)有哪幾種方式,有什么區(qū)別?
drop、truncate、delete 都可以刪除數(shù)據(jù)。

  • drop 會(huì)刪除表結(jié)構(gòu),不能回滾,效率最高;
  • truncate 刪除所有數(shù)據(jù),不會(huì)刪除表結(jié)構(gòu),不能回滾,效率次之;
  • delete 刪除部分或所有數(shù)據(jù),不會(huì)刪除表結(jié)構(gòu),可以回滾,效率最差。

5. 對(duì) MySQL 的三大范式了解嗎?

  • 第一范式就是每一列都不能再拆分;
  • 第二范式就是在第一范式的基礎(chǔ)上,非主鍵列都完全依賴主鍵;
  • 第三范式就是在第二范式的基礎(chǔ)上,任意兩個(gè)非主鍵列不能有依賴,確保非主鍵列都直接和主鍵列相關(guān),而不是間接相關(guān)。

6. 數(shù)據(jù)庫(kù)有哪些并發(fā)問題?

  • 臟讀:一個(gè)事務(wù)讀取到了別的事務(wù)未提交的數(shù)據(jù);
  • 寫丟失:事務(wù) A 和事務(wù) B 同時(shí)讀取到 age 為 18,然后事務(wù) A 將其改成 20,接著事務(wù) B 將其改成 16,最后數(shù)據(jù)庫(kù)中的是 16,事務(wù) A 的修改就丟失了;
  • 不可重復(fù)讀:一個(gè)事務(wù)對(duì)同一條數(shù)據(jù)多次讀取的結(jié)果不一樣,可能是在此期間別的事務(wù)修改過;
  • 幻讀:一個(gè)事務(wù)內(nèi),兩次查詢出來的記錄條數(shù)不一樣,就像發(fā)生了幻覺一樣。

7. 數(shù)據(jù)庫(kù)事務(wù)有什么特性?
數(shù)據(jù)庫(kù)事務(wù)有四大特性,ACID:

  • 原子性(A):一組操作不能再切分,要么全部成功,要么全部失敗。它的原理是在 undo log 中記錄相反的操作,如果事務(wù)回滾了,就根據(jù) undo log 執(zhí)行相反的操作;
  • 一致性(C):一個(gè)事務(wù)對(duì)數(shù)據(jù)修改的中間狀態(tài)對(duì)別的事務(wù)不可見。比如轉(zhuǎn)賬操作,A 賬戶減少 100 元,B 賬戶又還沒增加 100 元的這個(gè)中間狀態(tài)對(duì)外是不可見的;
  • 隔離性(I):事務(wù)之間相互隔離,一個(gè)事務(wù)不會(huì)被其他事務(wù)干擾;
  • 持久性(D):事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的操作是永久有效的。

8. 數(shù)據(jù)庫(kù)事務(wù)有哪些隔離級(jí)別?

  • 讀未提交:一個(gè)事務(wù)可以讀取到別的事務(wù)未提交的數(shù)據(jù);
  • 讀已提交:一個(gè)事務(wù)只能讀取別的事務(wù)已經(jīng)提交的數(shù)據(jù),可防止臟讀;
  • 可重復(fù)讀:一個(gè)事務(wù)內(nèi)對(duì)同一條記錄多次讀取的結(jié)果一致,InnoDB 默認(rèn)的隔離級(jí)別,可防止臟讀和不可重復(fù)讀;
  • 可串行化:事務(wù)串行執(zhí)行,可以防止臟讀、不可重復(fù)讀和幻讀。

9. MySQL 有哪幾種鎖?
MyISAM 只支持表鎖,InnoDB 支持表鎖和行鎖,BDB 支持表鎖和頁(yè)鎖。

  • 行鎖:鎖定被操作的行,其他行不受影響,并發(fā)性好,加鎖開銷大;
  • 表鎖:鎖定被操作的表,表中所有數(shù)據(jù)都受影響,并發(fā)性不好,加鎖開銷?。?/section>
  • 頁(yè)鎖:鎖定一個(gè)數(shù)據(jù)頁(yè),其他頁(yè)不受影響,并發(fā)性和加鎖開銷介于行鎖和表鎖之間。

10. InnoDB 的行鎖算法有哪幾種?

  • Record Lock:鎖定一條記錄;
  • Gap Lock:間隙鎖,鎖定一個(gè)范圍,但是不包含記錄本身,為了防止幻讀;
  • Next-key Lock:鎖定一個(gè)范圍,且包含記錄本身,也可防止幻讀。當(dāng)查詢索引含有唯一屬性時(shí),Next-key Lock 會(huì)變?yōu)?Record Lock。

掃描二維碼

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美一级内射一色桃子| 欧美日韩亚洲巨色人妻| 大香蕉伊人一区二区三区| 亚洲黑人精品一区二区欧美| av一区二区三区天堂| 91一区国产中文字幕| 日韩一区二区免费在线观看| 国内真实露脸偷拍视频| 精品国自产拍天天青青草原 | 欧美人妻少妇精品久久性色| 福利视频一区二区三区| 国产一区二区三区精品免费| 欧美日韩国产另类一区二区| 精品精品国产自在久久高清| 久久精品亚洲精品一区| 欧美午夜一级特黄大片| 精品精品国产自在久久高清| 亚洲免费视频中文字幕在线观看| 国产精品熟女乱色一区二区| 日本不卡片一区二区三区| 久久精品少妇内射毛片| 日系韩系还是欧美久久| 亚洲国产另类久久精品| 婷婷激情五月天丁香社区| 欧美成人一区二区三区在线 | 91亚洲国产日韩在线| 精品日韩av一区二区三区| 五月天丁香婷婷一区二区| 亚洲一区二区三区在线中文字幕| 国产又大又硬又粗又黄| 九九热国产这里只有精品| 粗暴蹂躏中文一区二区三区| 我的性感妹妹在线观看| 欧洲自拍偷拍一区二区| 亚洲国产精品久久综合网| 麻豆国产精品一区二区| 精品国产日韩一区三区| 黄片美女在线免费观看| 国产精品福利一级久久| 日韩中文字幕视频在线高清版| 日本中文字幕在线精品|