今天,數據庫的操作越來越成為整個應用的性能瓶頸了,這點對于Web應用尤其明顯。關于數據庫的性能,這并不只是DBA才需要擔心的事,而這更是我們程序員需要去關注的事情。當我們去設計數據庫表結構,對操作數據庫時(尤其是查表時的SQL語句),我們都需要注意數據操作的性能。這里,我們不會講過多的SQL語句的優化,而只是針對MySQL這一Web應用最多的數據庫。
mysql的性能優化無法一蹴而就,必須一步一步慢慢來,從各個方面進行優化,最終性能就會有大的提升。
Mysql數據庫的優化技術
對mysql優化是一個綜合性的技術,主要包括
•表的設計合理化(符合3NF)
•添加適當索引(index) [四種: 普通索引、主鍵索引、唯一索引unique、全文索引]
•分表技術(水平分割、垂直分割)
•讀寫[寫: update/delete/add]分離
•存儲過程 [模塊化編程,可以提高速度]
•對mysql配置優化 [配置最大并發數my.ini, 調整緩存大小 ]
•mysql服務器硬件升級
•定時的去清除不需要的數據,定時進行碎片整理(MyISAM)
數據庫優化工作
對于一個以數據為中心的應用,數據庫的好壞直接影響到程序的性能,因此數據庫性能至關重要。一般來說,要保證數據庫的效率,要做好以下四個方面的工作:
① 數據庫設計
② sql語句優化
③ 數據庫參數配置
④ 恰當的硬件資源和操作系統
此外,使用適當的存儲過程,也能提升性能。
這個順序也表現了這四個工作對性能影響的大小
數據庫表設計
通俗地理解三個范式,對于數據庫設計大有好處。在數據庫設計中,為了更好地應用三個范式,就必須通俗地理解三個范式(通
俗地理解是夠用的理解,并不是最科學最準確的理解):
第一范式:1NF是對屬性的原子性約束,要求屬性(列)具有原子性,不可再分解;(只要是關系型數據庫都滿足1NF)
第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
第三范式:3NF是對字段冗余性的約束,它要求字段沒有冗余。 沒有冗余的數據庫設計可以做到。
但是,沒有冗余的數據庫未必是最好的數據庫,有時為了提高運行效率,就必須降低范式標準,適當保留冗余數據。具體做法是: 在概念數據模型設計時遵守第三范式,降低范式標準的工作放到物理數據模型設計時考慮。降低范式就是增加字段,允許冗余。
☞ 數據庫的分類
關系型數據庫: mysql/oracle/db2/informix/sysbase/sql server
新聞熱點
疑難解答