PHPer面試指南-MySQL 篇

angkee發表於2018-01-24

本書的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide

  • 什麼是索引,作用是什麼?常見索引型別有那些?Mysql 建立索引的原則?

索引是一種特殊的檔案,它們包含著對資料表裡所有記錄的引用指標,相當於書本的目錄。其作用就是加快資料的檢索效率。常見索引型別有主鍵、唯一索引、複合索引、全文索引。

  • 索引建立的原則
    • 最左字首原理
    • 選擇區分度高的列作為索引
    • 儘量的擴充套件索引,不要新建索引
  • SQL 語句的優化原則?
  1. 避免使用 Like 模糊查詢
  2. 只列出需要查詢的欄位,而不是所有
  3. 避免使用 MySQL 函式,儘量讓 MySQL 做更少的事情,減輕 MySQL 的壓力
  4. 經常查詢的欄位,建立合適的索引,提高查詢效率
  • 什麼是 MySQL 慢查詢?又該如何優化?

MySQL 中查詢超過指定時間的語句,被稱之為「慢查詢」。該如何優化呢?優化 SQL 語句,建立合適的索引,如以上兩個問題。

  • MySQL 分庫分表怎麼設計
  1. 垂直分表

垂直分表在日常開發和設計中比較常見,通俗的說法叫做“大表拆小表”,某個表中的欄位比較多,可以新建立一張“擴充套件表”,將不經常使用或者長度較大的欄位,拆分出去放到“擴充套件表”中。

  1. 垂直分庫

基本的思路就是按照業務模組來劃分出不同的資料庫,而不是像早期一樣將所有的資料表都放到同一個資料庫中。

  1. 水平分表

水平分表也稱為橫向分表,比較容易理解,就是將表中不同的資料行按照一定規律分佈到不同的資料庫表中(這些表儲存在同一個資料庫中),這樣來降低單表資料量,優化查詢效能。

  1. 水平分庫分表

水平分庫分表與上面講到的水平分表的思想相同,唯一不同的就是將這些拆分出來的表儲存在不同的資料庫中。

  • 什麼是 MySQL 死鎖?如何有效降低死鎖?

死鎖:死鎖一般是事務相互等待對方資源,最後形成環路,而無法繼續執行。

產生死鎖的原因:

  1. 系統資源不足;
  2. 程式執行推進的順序不合適;
  3. 資源分配不當等;

如何有效降低死鎖:

  1. 按同一順序訪問資源;
  2. 避免事務中的使用者互動;
  3. 保持事務簡短並在一個批處理中;
  4. 使用低隔離級別;
  5. 使用繫結連線;

擴充套件閱讀

相關文章