首先我們來說說性能是什么?性能,為完成某種任務所需要的時間度量,即響應時間。
性能優化的大致思路:首先使用將所有的查詢記錄到日志中,然后使用pt-query-digest工具生成系統級別的剖析報告,然后在去找到壞查詢,使用show profile及其它explain工具。
接著我們來一步步說如何優化。
- 選擇優化的數據類型
更小的通常更好
一般情況下盡可能使用正確存儲數據的最小數據類型簡單就好
簡單數據類型通常需要更少的CPU周期,如時間用內建類型來存儲,ip用整型來存儲。盡量避免NULL
數據庫對NULL處理比較復雜,進而少使用。
下一步我們來選擇具體類型。
- 整數類型
MySQL中的幾種整數類型按照存儲空間由小到大分別是:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT,分別使用8, 16, 24, 32, 64位存儲空間。
其中整數類型可以選擇UNSIGNED屬性,表示不允許負值,但是有符號,無符號類型使用相同的存儲空間,并且具有相同的性能,這個根據自己的實際情況使用。
但是整數計算一般使用64為BIGINT。
2.字符串類型
說道字符串類型,那么VARCHAR和CHAR是最主要的兩種類型,兩種的對比就不說了,大家應該知道。這里我們說一下使用場景。
varchar類型(變長)
字符串列的最大長度比平均長度打很多的時候。記住varchar需要1個或2個額外的字節記錄字符串長度。
同時在使用時也要選定一個合適的長度,這一點還是很重要的。char類型(定長)
適合很短的字符串
其它類型,沒有什么特別的地方,在需要使用的時候即可,用法不知道的童鞋自行去百度學習。
下節我們繼續,從范式和反范式開始。