一、分表的分類(單表記錄條數達到百萬到千萬級別時就要使用分表)
1.縱向分表
文章標題,作者,分類,建立時間等,是變化頻率慢,查詢次數多,而且最好有很好的實時性的資料,我們把它叫做冷資料。
瀏覽量,回覆數等,類似的統計資訊,或者別的變化頻率比較高的資料,我們把它叫做活躍資料。
首先儲存引擎的使用不同,冷資料使用MyIsam 可以有更好的查詢資料。活躍資料,可以使用Innodb ,可以有更好的更新速度。
就是把原來一張表裡的欄位,冷資料的欄位和活躍資料的欄位分別建立2張表來管理。
2.橫向分表
把大的表結構,橫向切割為同樣結構的不同表,如,使用者資訊表,user_1,user_2 等,表結構是完全一樣。
二、慢查詢
show variables like 'slow%';
show global status like 'slow%';
使用 mysqlreport;
正確使用索引:explain 分析查詢語句,組合索引,索引副作用(佔空間、update)
開啟慢查詢日誌、使用慢查詢分析工具 mysqlsla;
索引快取、索引代價(插入更新索引);
表鎖,行鎖,行鎖副作用(update 多時候變慢),在 select 和 update 混合的情況下,行鎖巧妙解決了讀寫互斥的問題;
開啟使用查詢快取;
修改臨時表記憶體空間;
開啟執行緒池;
MySQL Query 語句優化的基本思路和原則
- 優化需要優化的 Query;
- 定位優化物件的效能瓶頸;
- 明確優化目標;
- 從 Explaing 入手;
- 多使用 Profile;
- 永遠用小結果集推動大的結果集;
- 儘可能在索引中完成排序;
- 只取自己需要的 Columns;
- 僅僅使用最有效的過濾條件;
- 儘可能避免複雜的 Join 和子查詢。