MySQL效能優化的21個最佳實踐

2021-09-06 09:07:31 字數 834 閱讀 4308

今天,資料庫的操作越來越成為整個應用的效能瓶頸了,這點對於web應用尤其明顯。關於資料庫的效能,這並不只是dba才需要擔心的事,而這更是我們程式設計師需要去關注的事情。當我們去設計資料庫表結構,對運算元據庫時(尤其是查表時的sql

具體可以參考 inet_aton和inet_ntoa

15. 固定長度的表會更快

如果表中的所有欄位都是「固定長度」的,整個表會被認為是 「static」 或 「fixed-length」。 例如,表中沒有如下型別的字段: varchar,text,blob。只要你包括了其中乙個這些字段,那麼這個表就不是「固定長度靜態表」了,這樣,mysql 引擎會用另一種方法來處理。

固定長度的表會提高效能,因為mysql搜尋得會更快一些,因為這些固定的長度是很容易計算下乙個資料的偏移量的,所以讀取的自然也會很快。而如果字段不是定長的,那麼,每一次要找下一條的話,需要程式找到主鍵。

並且,固定長度的表也更容易被快取和重建。不過,唯一的***是,固定長度的字段會浪費一些空間,因為定長的字段無論你用不用,他都是要分配那麼多的空間。

使用「垂直分割」技術(見下一條),你可以分割你的表成為兩個乙個是定長的,乙個則是不定長的。

myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要update乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,myisam 對於 select count(*) 這類的計算是超快無比的。

innodb 的趨勢會是乙個非常複雜的儲存引擎,對於一些小的應用,它會比 myisam 還慢。他是它支援「行鎖」 ,於是在寫操作比較多的時候,會更優秀。並且,他還支援更多的高階應用,比如:事務。

下面是mysql的手冊

MySQL效能優化的21條最佳經驗

多數的mysql伺服器都開啟了查詢快取。這是提高性最有效的方法之一,而且這是被mysql的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到乙個快取中,這樣,後續的相同的查詢就不用操作表而直接訪問快取結果了。今天,資料庫的操作越來越成為整個應用的效能瓶頸了,這點對於web應...

MySQL效能優化的最佳21條經驗(下)

11.盡可能的使用 not null 除非你有乙個很特別的原因去使用 null 值,你應該總是讓你的字段保持 not null。這看起來好像有點爭議,請往下看。首先,問問你自己 empty 和 null 有多大的區別 如果是int,那就是0和null 如果你覺得它們之間沒有什麼區別,那麼你就不要使用...

MySQL 的效能優化最佳實踐

資料庫操作是當今 web 應用程式中的主要瓶頸。不僅是 dba 資料庫管理員 需要為各種效能問題操心,程式設計師為做出準確的結構化表,優化查詢效能和編寫更優 也要費盡心思。在本文中,我列出了一些針對程式設計師的 mysql 優化技術。在我們開始學習之前,我補充一點 你可以在 envato marke...