推薦15條MySQL改善經驗,讓系統更穩定

推薦15條MySQL改善經驗,讓系統更穩定

一、 爲查詢緩存優化查詢數據庫

像 NOW() 和 RAND() 或是其它的諸如此類的SQL函數都不會開啓查詢緩存,謹慎使用緩存

二、EXPLAIN 咱們的SELECT查詢(能夠查看執行的行數)安全

可讓咱們找到潛在的性能問題架構

三、當只要一行數據時使用LIMIT 1函數

MySQL數據庫引擎會在查找到一條數據後中止搜索,而不是繼續日後查詢下一條符合條件的數據記錄。性能

四、爲搜索字段創建索引學習

在識別度高的列上創建正確的索引,以提高性能優化

五、在Join表的時候使用至關類型的列,並將其索引3d

關聯表的關鍵字段,類型一致,字符集一致,才能提升性能,不然沒法使用它們的索引blog

六、千萬不要 ORDER BY RAND ()

執行RAND()函數(很耗CPU時間),會讓你的數據庫的性能呈指數級的降低

七、 避免SELECT *

從數據庫裏讀出越多的數據,那麼查詢就會變得越慢。

八、永遠爲每張表設置一個ID

咱們應該爲數據庫裏的每張表都設置一個ID作爲其主鍵,並且最好的是一個INT型的(推薦使用UNSIGNED),並設置上自動增長的 AUTO_INCREMENT標誌。

九、可使用ENUM 而不要VARCHAR

ENUM 類型是很是快和緊湊的。在實際上,其保存的是 TINYINT,但其外表上顯示爲字符串。

十、儘量的使用NOT NULL

若是不是特殊狀況,儘量的不要使用NULL。在MYSQL中對於INT類型而言,EMPTY是0,而NULL是空值。而在Oracle中 NULL和EMPTY的字符串是同樣的。NULL也須要佔用存儲空間,而且會使咱們的程序判斷時更加複雜。現實狀況是很複雜的,依然會有些狀況下,咱們須要使用NULL值。

加Java高級交流羣:725633148 免費領取架構師學習資料!

十一、固定長度的表會更快

表中沒有以下類型的字段: VARCHAR,TEXT,BLOB。只要咱們包括了其中一個這些字段,那麼這個表就不是「固定長度靜態表」了,這樣,MySQL 引擎會用另外一種方法來處理。 固定長度的表會提升性能,由於MySQL搜尋得會更快一些,由於這些固定的長度是很容易計算下一個數據的偏移量的,因此讀取的天然也會很快。

十二、垂直分割

「垂直分割」是一種把數據庫中的表按列變成幾張表的方法,這樣能夠下降表的複雜度和字段的數目,從而達到優化的目的。

1三、拆分打的DELETE或INSERT語句

這兩個操做是會鎖表的

1四、越小的列會越快

對於大多數的數據庫引擎來講,硬盤操做多是最重大的瓶頸。越小的列消耗的io資源越少

1五、選擇正確的存儲引擎

MyISAM是MYSQL5.5版本之前默認的存儲引擎,基於傳統的ISAM類型,支持B-Tree,全文檢索,可是不是事務安全的,並且不支持外鍵。不具備原子性。支持鎖表。

InnoDB是事務型引擎,支持ACID事務(實現4種事務隔離機制)、回滾、崩潰恢復能力、行鎖。以及提供與Oracle一致的不加鎖的讀取方式。InnoDB存儲它的表和索引在一個表空間中,表空間能夠包含多個文件。

相關文章
相關標籤/搜索