前言
當單表記錄數過大時,增刪改查性能都會急劇下降,可能原因:沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷) 、I/O吞吐量小,形成了瓶頸效應、沒有創建計算列導致查詢不優化、內存不足、網絡速度慢 、查詢出的數據量過大(可以採用多次查詢,其他的方法降低數據量)、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷) 、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源、返回了不必要的行和列 、查詢語句不好,沒有優化 ,可以參考以下步驟來優化。
單表優化
除非單表數據未來會一直不斷上漲,否則不要一開始就考慮拆分,拆分會帶來邏輯、部署、運維的各種複雜度,一般以整型值爲主的表在千萬級以下,字符串爲主的表在五百萬以下是沒有太大問題的。而事實上很多時候postgresql單表的性能依然有不少優化空間,甚至能正常支撐千萬級以上的數據量:
字段
- 1、儘量使用TINYINT、SMALLINT、MEDIUM_INT作爲整數類型而非INT,如果非負則加上UNSIGNED
- 2、VARCHAR的長度只分配真正需要的空間
- 3、使用枚舉或整數