免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
java面試題 --- MySQL④

1. 一張表的數(shù)據(jù)量是百萬(wàn)級(jí)的,要做分頁(yè)查詢你怎么優(yōu)化?

  • 查詢字段少的話可以考慮查詢的字段都加索引,使用索引覆蓋來(lái)提升性能;
  • 子查詢優(yōu)化,比如 select * from students where id in ( select id from students where age > 20 limit 100000, 10)。

2. 連接查詢要注意什么問(wèn)題嗎?

  • 左連接索引加在右表,右連接索引加在左表;
  • 永遠(yuǎn)要用小表驅(qū)動(dòng)大表,比如 A 表數(shù)據(jù)量小,B 表數(shù)據(jù)量大,應(yīng)該用 A join B。

3. count(1),count(*),count(字段) 有什么區(qū)別?

  • count(*) 會(huì)統(tǒng)計(jì)所有的行,包括為 null 的行,會(huì)對(duì)所有字段進(jìn)行掃描;
  • count(1) 也是會(huì)統(tǒng)計(jì)所有的行,包括為 null 的行,但是它只會(huì)對(duì)表中的一個(gè)字段進(jìn)行掃描,可以理解為表中有個(gè)字段的值全部 1;
  • count(字段名) 只會(huì)統(tǒng)計(jì)指定字段列,不包括為 null 的行。

表中只有一個(gè)字段時(shí) count(*) 效率最高,count(列名) 當(dāng)列名是主鍵時(shí),它的效率高于 count(1),其他情況 count(1) 效率更高。


4. 線上系統(tǒng)越跑越慢,你怎么排查?

  • 開(kāi)啟慢查日志,用日志分析工具分析慢 SQL,查看執(zhí)行計(jì)劃;
  • 用 show profile 分析 SQL 執(zhí)行情況。

5. 什么是慢查日志?

  • MySQL 會(huì)記錄執(zhí)行時(shí)間超過(guò)閾值的 SQL,默認(rèn)閾值是 15s,可以在 MySQL 配置文件配置是否開(kāi)啟、時(shí)間閾值以及日志文件位置;
  • MySQL 自帶的工具 mysqldumpslow 可以用來(lái)分析慢查日志,比如要得到訪問(wèn)次數(shù)最多的 10 個(gè) SQL,執(zhí)行 mysqldumpslow -s c -t 10 日志文件位置 即可。

6. show profile 又是什么?

  • MySQL 提供的用來(lái)分析 SQL 執(zhí)行時(shí)資源消耗情況的工具,會(huì)保存最近 15 次 SQL 運(yùn)行情況,通過(guò)show variables like 'profiling'查看是否開(kāi)啟,通過(guò)set profiling = 'on'開(kāi)啟。執(zhí)行show profiles可以列出 SQL、執(zhí)行時(shí)間以及它的 id,執(zhí)行show profile cpu, block io for query sqlId就可以查看該 SQL 執(zhí)行時(shí)的資源消耗情況。

7. 說(shuō)一說(shuō)主從復(fù)制和讀寫分離?

  • 主從復(fù)制可以保證高可用,降低單個(gè)服務(wù)器的壓力,也可以用從庫(kù)做升級(jí)測(cè)試。主庫(kù)負(fù)責(zé)寫數(shù)據(jù),從庫(kù)負(fù)責(zé)讀數(shù)據(jù),主庫(kù)的 bin log 線程會(huì)把更新數(shù)據(jù)的 SQL 記錄到自己的 bin log中,IO 線程在從庫(kù)啟動(dòng)后,會(huì)負(fù)責(zé)從主庫(kù)拉取 bin log,放到自己的 relay log 中,從庫(kù)的 SQL 執(zhí)行線程再執(zhí)行 relay log 中的 SQL。
  • 讀寫分離依賴于主從復(fù)制,主庫(kù)寫,從庫(kù)讀,可以用代理實(shí)現(xiàn),比如 sharding-jdbc、mycat等,也可以用 MySQL 提供的 jdbc 驅(qū)動(dòng)包,在配置 datasourceUrl 的時(shí)候就配置好從庫(kù)。

8. 你用過(guò)存儲(chǔ)過(guò)程嗎?

  • 用過(guò),一些 SQL 很多地方都要用到,就可以考慮寫成一個(gè)存儲(chǔ)過(guò)程。

9. 存儲(chǔ)過(guò)程和函數(shù)有什么異同?

  • 存儲(chǔ)過(guò)程可以有一個(gè)或者多個(gè)返回值,必須單獨(dú)調(diào)用;函數(shù)只能有一個(gè)返回值,可以在查詢語(yǔ)句中直接調(diào)用。

10. 存儲(chǔ)過(guò)程和函數(shù)有什么優(yōu)缺點(diǎn)呢?

  • 執(zhí)行效率高,因?yàn)樗鼈兪穷A(yù)編譯過(guò)的;
  • 存儲(chǔ)過(guò)程代碼存放在數(shù)據(jù)庫(kù),可以直接調(diào)用,減少網(wǎng)絡(luò)通訊;
  • 安全性高,它們都需要一定的權(quán)限才能調(diào)用;
  • 可以重復(fù)使用,減少開(kāi)發(fā)人員的工作量;
  • 可移植性差,維護(hù)也比較麻煩。

11. 什么是視圖?

  • 視圖是一個(gè)虛擬表,但是可以像操作真實(shí)表一樣操作它。比如你需要查詢的字段分布在兩張表,除了連接查詢,還可以建立視圖。視圖可以保護(hù)數(shù)據(jù),只提供需要的列的權(quán)限,也可以簡(jiǎn)化 SQL,提高復(fù)用性。視圖的列可以來(lái)自同一張表,也可以來(lái)自不同的表,視圖的建立和刪除不影響基本表,對(duì)視圖內(nèi)容的修改直接影響基本表,視圖來(lái)自多個(gè)基本表時(shí),不允許添加和刪除數(shù)據(jù)。對(duì)視圖的操作包括增刪改查,視圖的建立方法是create view <視圖名> as <select語(yǔ)句>,查看用describle <視圖名>,修改視圖用alter <視圖名>,刪除視圖用drop <視圖名>。

12. 什么是觸發(fā)器?

  • 特殊的存儲(chǔ)過(guò)程,觸發(fā)了特定條件會(huì)自動(dòng)執(zhí)行,總共有六種觸發(fā)器,before insert,after insert,before update,after update,before delete,after delete。

掃描二維碼

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL補(bǔ)充
MySQL數(shù)據(jù)庫(kù)實(shí)戰(zhàn)課程
這38個(gè)小技巧告訴你如何快速學(xué)習(xí)MySQL數(shù)據(jù)庫(kù)
學(xué)習(xí) MySQL 需要知道的 28 個(gè)小技巧
理解什么是數(shù)據(jù)字典
SQL優(yōu)化指南
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服