數據庫知識學習以及面試集錦-MySQL

面試

三萬字、91道MySQL面試題和答案(2020收藏版)

知識及概念

  1. 數據庫事務及事務的四大特徵簡述
    答:ACID,原子性,一致性,隔離性,持久性,參考
  2. Mysql是框架架構簡述
    答:包括客戶端連接管理,使用線程池,查詢緩存,解析查詢器,優化器,存儲引擎
    在這裏插入圖片描述
    MySQL邏輯架構整體分爲三層,最上層爲客戶端層,並非MySQL所獨有,諸如:連接處理、授權認證、安全等功能均在這一層處理。MySQL大多數核心服務均在中間這一層,包括查詢解析、分析、優化、緩存、內置函數(比如:時間、數學、加密等函數)。所有的跨存儲引擎的功能也在這一層實現:存儲過程、觸發器、視圖等。最下層爲存儲引擎,是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,常見有InnoDB, MyISAM和MEMORY三種存儲引擎。
  3. 簡述MySQL整個查詢執行過程
    答:總的來說分爲5個步驟:

客戶端向MySQL服務器發送一條查詢請求
服務器首先檢查查詢緩存,如果命中緩存,則立刻返回存儲在緩存中的結果。否則進入下一階段
服務器進行SQL解析、預處理、再由優化器生成對應的執行計劃
MySQL根據執行計劃,調用存儲引擎的API來執行查詢
將結果返回給客戶端,同時緩存查詢結果

  1. 簡述常見的數據庫存儲引擎

InnoDB的應用場景:需要事務支持(具有較好的事務特性),支持行級鎖定,支持高併發,但需要確保查詢是通過索引完成,數據更新較爲頻繁的場景,數據一致性要求較高,硬件設備內存較大,可以利用InnoDB較好的緩存能力來提高內存利用率,儘可能減少磁盤 IO

MyISAM的應用場景:不需要事務支持(不支持),併發相對較低(鎖定機制問題),數據修改相對較少(阻塞問題), 以讀爲主,數據一致性要求不是非常高

Memory的應用場景: 主要存儲一些需要快速訪且非關鍵數據,所有數據均保存在內存中

InnoDB MyISAM MEMORY
支持事務操作 不支持事務操作 數據存放在內存中
支持行級鎖 支持表鎖
併發量更大 併發性低很多
支持外鍵 不支持外鍵 不支持外鍵
  1. 簡述主鍵、外鍵的區別
    關係型數據庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成爲一個主鍵。外鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持數據的一致性。定義主鍵和外鍵主要是爲了維護關係數據庫的完整性。參考
    在這裏插入圖片描述
  2. 簡述數據庫範式
    數據庫總共三範式;
    第一範式(1NF),數據表的每個字段(屬性/列)必須是唯一的、不可分割的。
    第二範式(2NF),數據表的每條記錄必須是唯一的(主鍵約束),且非主鍵字段只依賴於主鍵。
    第三範式(3NF),數據表中不應該存在多餘的字段,也就是說每個字段都不能由其他字段推理得到。
  3. 基本的mySql語句
    詳見mysql必知必會,W3school教程
  4. 數據庫存儲過程簡述
    數據庫存儲過程是一個預編譯的代碼塊,執行效率比較高(由於數據庫執行動作時,是先編譯後執行的。然而存儲過程是一個編譯過的代碼塊,所以執行效率要比T-SQL語句高。)
  5. 數據庫索引及優缺點
    在數據之外,數據庫系統還維護着滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找算法。這種數據結構,就是索引。
    爲表設置索引要付出代價的:一是增加了數據庫的存儲空間(因爲存放索引要佔據物理空間),二是在插入和修改數據時要花費較多的時間(因爲索引也要隨之變動)。參考
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章