JAVA新手入門06~MYSQL提高篇2
阿新 • • 發佈:2020-12-31
儘管上一篇的內容,對於初學者來說,已經算是稍微有點難度了,但是對於有一點工作經驗的開發人員來說,仍然算不上有難度,所以這一篇將從面試的角度,總結一下需要了解的知識點,這一篇將只列知識點,不給答案,或者給一個大致的方向。如果要面試的人,也可以試著回答以下問題。如果你現在不想深入研究MYSQL,畢竟人的精力都是有限的,也可以把以下內容,放入到你的TODO LIST中去,以後再慢慢研究,我的建議是,每個程式設計的人,都應該有一個自己程式設計的筆記本,例如微軟的ONE NOTE,印象筆記、蘋果的備忘錄(我正在用),然後有一個筆記,是專門存放要做的事情的,在任何時候,任何地點,遇到了不會的東西,立即放入TODO LIST中去。
1、索引篇
- mysql哪些索引會命中,哪些不會命中?
- 怎麼檢視mysql索引是否命中? explain檢視執行計劃
- 聯合索引哪些情況索引會命中? 哪些不會呢?
- mysql底層索引是什麼資料結構? B+樹
- 聚簇索引和覆蓋索引有什麼區別?
- mysql索引為什麼快?
- mysql索引為什麼用B+,而不是B樹?
- 建了索引一定就會快嗎? 不是
- 建了索引,且索引命中了,就一定會快嗎?不是
- varchar型別的列有100個長度,適合建索引嗎? 如果不適合,怎麼解決?
- 哪些列適合建索引? 區分度大的列適合,像ID
- 哪些列不適合建索引? SEX這種 text 長度大的varchar
- varchar和char有什麼區別?
- 索引有什麼壞處? 新增和更新、刪除慢了點,佔用磁碟空間大了點等等
- 什麼是慢SQL?怎麼檢視MYSQL的慢SQL?
- 做過哪些MYSQL的查詢優化?
2、事務篇
之前的內容沒有講解事務,但是高階開發人員是必須精通事物的,本篇不打算講解事務,只給出幾個問題,網上的資料也很多,可以自己去找一下
- 什麼是事務?
- 事務的4個特性是什麼? ACID
- 分別解釋ACID是什麼意思?
- 事務的隔離級別有幾種?MYSQL預設是什麼級別?
- 什麼是髒讀、不可重複讀、幻讀?
- MVCC和事務隔離級別的關係?
- 事務的傳播機制是什麼?
- @Transactional哪些情況會失效?
3、鎖篇
- 什麼是間隙鎖?
- 什麼是行鎖?
- 死鎖是怎麼產生的?
- 怎麼避免死鎖?
- 事務和鎖是什麼關係?
4、安全
- 什麼是SQL注入?
- 怎麼避免SQL注入?
- mybatis中#和$的區別
5、其它
- 電商的訂單號可以用自增ID嗎?
- (延伸)怎麼設計1個分散式的自增ID,要求不能重複,高效能,高可用。
- innerDB的自增ID,斷電重啟之後會怎麼樣?
- 資料庫欄位設計有哪些經驗?
- timestamp和datetime有什麼區別?
- MYSQL支援模糊查詢嗎?
- 看過MYSQL的慢日誌嗎?
- 資料庫連線池用的哪個?
- 為什麼要用連線池?
- 連線池各個引數設定的都是多少?
如果想更深入的學習MYSQL,可以看一下<高效能MYSQL>這本書,講的會更細,對於MYSQL的執行流程、索引、快取、調優等都有特別深入的講解,遠遠比這篇文章講的要多的多。
全文完。
關注我的部落格,獲取更多Java程式設計知識: