本書的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide
- 什麼是索引,作用是什麼?常見索引型別有那些?Mysql 建立索引的原則?
索引是一種特殊的檔案,它們包含著對資料表裡所有記錄的引用指標,相當於書本的目錄。其作用就是加快資料的檢索效率。常見索引型別有主鍵、唯一索引、複合索引、全文索引。
- 索引建立的原則
- 最左字首原理
- 選擇區分度高的列作為索引
- 儘量的擴充套件索引,不要新建索引
- SQL 語句的優化原則?
- 避免使用 Like 模糊查詢
- 只列出需要查詢的欄位,而不是所有
- 避免使用 MySQL 函式,儘量讓 MySQL 做更少的事情,減輕 MySQL 的壓力
- 經常查詢的欄位,建立合適的索引,提高查詢效率
- 什麼是 MySQL 慢查詢?又該如何優化?
MySQL 中查詢超過指定時間的語句,被稱之為「慢查詢」。該如何優化呢?優化 SQL 語句,建立合適的索引,如以上兩個問題。
- MySQL 分庫分表怎麼設計
- 垂直分表
垂直分表在日常開發和設計中比較常見,通俗的說法叫做“大表拆小表”,某個表中的欄位比較多,可以新建立一張“擴充套件表”,將不經常使用或者長度較大的欄位,拆分出去放到“擴充套件表”中。
- 垂直分庫
基本的思路就是按照業務模組來劃分出不同的資料庫,而不是像早期一樣將所有的資料表都放到同一個資料庫中。
- 水平分表
水平分表也稱為橫向分表,比較容易理解,就是將表中不同的資料行按照一定規律分佈到不同的資料庫表中(這些表儲存在同一個資料庫中),這樣來降低單表資料量,優化查詢效能。
- 水平分庫分表
水平分庫分表與上面講到的水平分表的思想相同,唯一不同的就是將這些拆分出來的表儲存在不同的資料庫中。
- 什麼是 MySQL 死鎖?如何有效降低死鎖?
死鎖:死鎖一般是事務相互等待對方資源,最後形成環路,而無法繼續執行。
產生死鎖的原因:
- 系統資源不足;
- 程式執行推進的順序不合適;
- 資源分配不當等;
如何有效降低死鎖:
- 按同一順序訪問資源;
- 避免事務中的使用者互動;
- 保持事務簡短並在一個批處理中;
- 使用低隔離級別;
- 使用繫結連線;