做爲DBA,從此可能都會遇到誤刪數據、服務器宕機,以及各類疑難故障問題,這些情況就跟屢見不鮮同樣。面試
這個時節,你們都在忙着找工做,咱們就來總結一下MySQL DBA相關的技術面試題。數據庫
問題1:你以前處理過MySQL的哪些案例?服務器
解答思路:說到案例,逃離不了MySQL的五大知識模塊:體系結構、數據的備份恢復、複製、高可用集羣架構和優化。咱們能夠從這五個方向着手考慮,好比:session
①MySQL版本的升級;②處理集羣架構中的各類「坑」和問題(你遇到過的就能夠);③根據公司業務類型,合理設計MySQL庫、表和後期架構;④按期進行災備恢復演練;⑤恢復誤刪除的數據信息。數據結構
問題2:什麼是死鎖?鎖等待?如何優化這類問題?經過數據庫哪些表能夠監控?架構
解答思路:死鎖是指兩個或多個事務在同一資源上互相佔用,並請求加鎖時,而致使的惡性循環現象。當多個事務以不一樣順序試圖加鎖同一資源時,就會產生死鎖。學習
鎖等待:MySQL數據庫中,不一樣session在更新同行數據時,會出現鎖等待的現象。重要的三張鎖的監控表:innodb_trx、innodb_locks和innodb_lock_waits。測試
問題3:MySQL主從複製的具體原理是什麼?優化
解答思路:直接闡述原理便可,表達必定要清楚。操作系統
主服務器把數據更新記錄到二進制日誌中,從服務器經過I/O thread向主庫發起binlog請求,主服務器經過I/O dump thread把二進制日誌傳遞給從庫,從庫經過I/O thread記錄到本身的中繼日誌中。而後再經過SQL thread應用中繼日誌中SQL的內容。
問題4:MySQL有哪些索引類型?
解答思路:能夠從三個角度去談。
首先從數據結構角度上能夠分爲B+tree索引、hash索引、fulltext索引(InnoDB、MyISAM都支持)。其次從存儲角度上能夠分爲彙集索引和非彙集索引。最後邏輯角度上能夠分爲primary key、normal key、單列、複合和覆蓋索引。
問題5:服務器負載太高或者網頁打開緩慢,簡單說說你的優化思路?
解答思路:咱們能夠經過前面講過的優化思路中的四維度模型去闡述。
首先要發現問題的過程,經過操做系統、數據庫、程序設計、硬件角度四個維度找到問題所在。先找到瓶頸點的位置,制定好優化方案,造成處理問題的體系模型。體系制定好以後,在測試環境進行優化方案的測試。測試環境下若是優化效果很好,再實施到生產環境上。最後作好處理問題的記錄。好記性不如爛筆頭,多作總結,方可大步前進。
問題6:如何優化一條慢SQL語句?
解答思路:針對SQL語句的優化,咱們不要一上來就回答添加索引,這樣顯得太不專業。咱們能夠從以下幾個角度去分析:
①迴歸到表的設計層面,數據類型選擇是否合理。
②大表碎片的整理是否完善。
③表的統計信息是否是準確的。
④審查表的執行計劃,判斷字段上面有沒有合適的索引。
⑤針對索引的選擇性,創建合適的索引(就又涉及大表DDL的操做問題。因此說,咱們要有能力把各個知識點聯繫起來)
問題7:爲何要爲InnoDB表設置自增列作主鍵?
解答思路:使用自增列作主鍵,寫入順序是自增的,和B+數葉子節點分裂順序一致。InnoDB表的數據寫入順序能和B+樹索引的葉子節點順序一致時,存取效率是最高的。