預計閱讀時間: 4分鐘mysql
做爲一位JAVA工程師,不論你是初級程序員,仍是中級程序員,高級程序員,MYSQL面試題是必定會問的,這個是考驗你對數據庫瞭解的知識有多少。程序員
回顧一下MYSQL系列文章:面試
1.如何使用explain關鍵字優化SQLspring
2.MYSQL表鎖和行鎖sql
在咱們平時面試過程當中,那些mysql面試題是常常被問到的呢?你有哪些問題是不會的呢?趁熱打鐵趕忙鞏固一下mysql的知識吧。數據庫
1.mysql事務的基本特徵和事務隔離級別後端
四大特性:原子性,一致性,隔離性,持久性;隔離級別:讀未提交,不能夠重複讀,可重複讀,串行化。
複製代碼
2.說一說mysql髒讀、不可重複讀、幻讀緩存
髒讀:事務A讀取了事務B更新的數據,而後B回滾操做,那麼A讀取到的數據是髒數據;不可重複讀:事務 A 屢次讀取同一數據,事務 B 在事務A屢次讀取的過程當中,對數據做了更新並提交,致使事務A屢次讀取同一數據時,結果所以本事務前後兩次讀到的數據結果會不一致;幻讀:幻讀解決了不重複讀,保證了同一個事務裏,查詢的結果都是事務開始時的狀態。
複製代碼
3.mysql數據表類型有哪些?springboot
MyIASM、InnoDB、HEAP、ISAM、MERGE、DBD(能回覆前2個便可)
複製代碼
4.mysql的MyIASM和InnoDB引擎,各有什麼特色?函數
MyIASM:不支持事務,表鎖,讀寫互相阻塞,只會緩存索引;
InnoDB:支持事務,行鎖,讀寫阻塞與事務隔離級別相關,不只緩存索引還緩存數據
複製代碼
5.數據庫三大範式
第一範式:數據庫表中的字段都是單一屬性的,不可再分(保持數據的原子性);第二範式:第二範式必須符合第一範式,非主屬性必須徹底依賴於主鍵。第三範式:在知足第二範式的基礎上,在實體中不存在其餘實體中的非主鍵屬性,傳遞函數依賴於主鍵屬性,確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關(表中字段[非主鍵]不存在對主鍵的傳遞依賴)
複製代碼
6.你對sql的優化了解有多少,舉例說明一下,至少5個
查詢不要使用select *;使用鏈接(join)查詢代替子查詢;用 exists 代替 in ;儘可能避免在 where 子句中使用 or 來鏈接條件;ORDER BY + LIMIT組合的索引優化;模糊查詢 "%name%"改爲」name%「。避免全表掃。還有不少。。。。
複製代碼
7.除了CRUD的關鍵字,你還會使用哪些MYSQL關鍵字?
show,explain,distinct,between and ,limit,order by
複製代碼
8.你對索引瞭解多少,它有什麼做用,而且優缺點有哪些?
索引就一種特殊的查詢表,數據庫的搜索引擎能夠利用它加速對數據的檢索;索引對於查詢比較快,索引對於增刪改會比較慢
複製代碼
9.你是怎麼樣設計索引的?使用索引有哪些注意的事項?
索引應該建在選擇性高的字段上(鍵值惟一的記錄數/總記錄條數),選擇性越高索引的效果越好、價值越大,惟一索引的選擇性最高;
組合索引中字段的順序,選擇性越高的字段排在最前面;
where條件中包含兩個選擇性高的字段時,能夠考慮分別建立索引,引擎會同時使用兩個索引(在OR條件下,應該說必須分開建索引);
不要重複建立彼此有包含關係的索引,如index1(a,b,c) 、index2(a,b)、index3(a);
組合索引的字段不要過多,若是超過4個字段,通常須要考慮拆分紅多個單列索引或更爲簡單的組合索引
設計因此的字段的值不能是NULL,不然索引失效
複製代碼
10.你有對mysql表分區有了解多少?有多少種分區類型,說一下他們的特色
Range分區,基於一個給定連續區間範圍,把數據分配不一樣的分區
List分區,相似Range分區,區別是List分區是基於枚舉出的值列表分區,Range分區是基於給定的連續區間範圍分區
Hash分區,基於給定的區間個數,把數據分配到不一樣的分區
Key分區,相似Hash分區
複製代碼
精選文章推薦