本書的 GitHub 地址: https://github.com/todayqq/PH...
索引是一種特殊的文件,它們包含着對數據表裏全部記錄的引用指針,至關於書本的目錄。其做用就是加快數據的檢索效率。常見索引類型有主鍵、惟一索引、複合索引、全文索引。html
索引建立的原則mysql
- 最左前綴原理
- 選擇區分度高的列做爲索引
- 儘可能的擴展索引,不要新建索引
- 避免使用 Like 模糊查詢
- 只列出須要查詢的字段,而不是全部
- 避免使用 MySQL 函數,儘可能讓 MySQL 作更少的事情,減輕 MySQL 的壓力
- 常常查詢的字段,建立合適的索引,提升查詢效率
MySQL 中查詢超過指定時間的語句,被稱之爲「慢查詢」。該如何優化呢?優化 SQL 語句,建立合適的索引,如以上兩個問題。
- 垂直分表
垂直分表在平常開發和設計中比較常見,通俗的說法叫作「大表拆小表」,某個表中的字段比較多,能夠新創建一張「擴展表」,將不常常使用或者長度較大的字段,拆分出去放到「擴展表」中。git
- 垂直分庫
基本的思路就是按照業務模塊來劃分出不一樣的數據庫,而不是像早期同樣將全部的數據表都放到同一個數據庫中。github
- 水平分表
水平分表也稱爲橫向分表,比較容易理解,就是將表中不一樣的數據行按照必定規律分佈到不一樣的數據庫表中(這些表保存在同一個數據庫中),這樣來下降單表數據量,優化查詢性能。sql
- 水平分庫分表
水平分庫分表與上面講到的水平分表的思想相同,惟一不一樣的就是將這些拆分出來的表保存在不一樣的數據庫中。數據庫
死鎖:死鎖通常是事務相互等待對方資源,最後造成環路,而沒法繼續運行。ide
產生死鎖的緣由:函數
- 系統資源不足;
- 進程運行推動的順序不合適;
- 資源分配不當等;
如何有效下降死鎖:性能
- 按同一順序訪問資源;
- 避免事務中的用戶交互;
- 保持事務簡短並在一個批處理中;
- 使用低隔離級別;
- 使用綁定鏈接;