MySQL面經

 

面試中經常是由淺及深順着一條線問下去 , 下面僅列出我遇到過的面試問題:

1.基礎三連問

關係型數據庫與非關係型數據庫有什麼區別?

MySQL有哪些存儲引擎?有什麼區別?

  1. InnoDB支持事務,MyISAM不支持
  2. 對於InnoDB每一條SQL語言都默認封裝成事務,自動提交,這樣會影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個事務;
  3. InnoDB支持外鍵,而MyISAM不支持。對一個包含外鍵的InnoDB錶轉爲MYISAM會失敗;
  4. InnoDB是聚集索引,數據文件是和索引綁在一起的,必須要有主鍵,通過主鍵索引效率很高。
  5. 但是輔助索引需要兩次查詢,先查詢到主鍵,然後再通過主鍵查詢到數據。因此主鍵不應該過大,因爲主鍵太大,其他索引也都會很大。
  6. 而MyISAM是非聚集索引,數據文件是分離的,索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。
  7. InnoDB不保存表的具體行數,執行select count(*) from table時需要全表掃描。而MyISAM用一個變量保存了整個表的行數,執行上述語句時只需要讀出該變量即可,速度很快;
  8. Innodb不支持全文索引,而MyISAM支持全文索引,查詢效率上MyISAM要高

項目中數據庫表創建注意事項?

  • 合理的字段類型 定義  char varchar int 
  • 字段定義爲not null 
  • SQL優化鍵索引
  • .......

char varchar 區別?

索引的類型有哪些?

     主鍵索引 普通索引 唯一索引 組合索引 全文索引

你是如何判斷索引生效的? 

EXPLAIN 的查詢結果會告訴你你的索引主鍵被如何利用的,你的數據表是如何被搜索和排序的

Explain 結果中,一般來說,要看到儘量用 index(type 爲 const、 ref 等, key 列有值),避免使用全表掃描(type 顯式爲 ALL)。比如說有 where 條件且選擇性不錯的列,需要建立索引。

組合索引(聯合索引) 的索引生效原則?(重點)

     最左優先原則 

 

2. 進階連環問

索引爲什麼能加快查詢效率?

索引提高了查詢速度對增刪改有影響嗎?

索引常用的算法原理分析B樹和B+樹等

MySQL事物四大特徵?隔離級別?默認隔離級別?

     https://www.jianshu.com/p/081a3e208e32

項目中用到數據庫鎖簡單介紹?

     悲觀鎖 樂觀鎖 

mysql主從複製原理?

1. 主:binlog線程——記錄下所有改變了數據庫數據的語句,放進master上的binlog中;
2. 從:io線程——在使用start slave 之後,負責從master上拉取 binlog 內容,放進 自己的relay log中;
3. 從:sql執行線程——執行relay log中的語句

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章