以下經驗,均是血和淚的教訓,爲了避免自己再犯,特此記錄。
1 圖片不能保存在數據庫中。
此話不絕對,但是如果圖片很多(幾乎每天數據中均存在圖片),那就千萬不能把圖片放在數據庫中。
對性能影響:表中數據30萬,執行查詢語句,5分鐘後仍在查詢(這是程序不能接受的)。
去掉圖片,執行查詢語句,執行時間不到5s。
2 更新語句的更新條件儘量具體。
上面的話的意思是:如果更新數據,符合條件的數據很多,儘量把條件具體些,是更新的數據由多條變爲一條。
爲什麼這麼做:當數據上萬、上百萬時,每次更新操作將會時數據庫執行時間過長,導致正常的業務流程不能正常執行(如:與數據庫連接超時)。
3 mysql字符集一定要慎重選擇。
筆者常用的是:字符集:utf-8, 覈對:utf8_general_ci。
4不同的搜索引擎對性能影響不同。
mysql數據庫常用的搜索引擎有兩種:InnoDB和MyISAM 。其中innodb存儲引擎,特點支持外鍵、行鎖、非鎖定讀(默認情況下讀取不會產生鎖)、mysql-4.1開始支持每個innodb引擎的表單獨放到一個表空間裏。但是備份還原比較困難。 MyISam不支持事物,但是備份還原比較簡單。
5建立適當冗餘
對於數據庫中的字段建立適當冗餘,目的是犧牲空間換時間.
6一個方法儘量做最少的事
一個方法儘量做最少的事是指如果方法A既能支持a操作,又能支持b操作。比如一個方法既能支持界面A的綜合查詢,又能支持界面B的詳細查看,那方法A中包含的字段就會很多,可能導致查詢緩慢。
7適當的建立索引
對經常查詢的字段可以適當的建立索引,建立索引的優點在於可以加快查詢的速度,但是缺點在於會降低增刪改操作的時間。所以索引的建立要適當。