時間:2019-09-16 14:55:46 作者:無名 瀏覽量:47
大家好,小編是個電腦軟件控,數據庫表表面上存在索引和防錯機制,然而一個簡略的查詢就會消耗很長時間。Web應用程序或許在開發環境中運轉良好,但在產品環境中體現同樣糟糕。假如你是個數據庫管理員,你很有可能現已在某個階段遇到上述情況。因此,本文將介紹對MySQL進行功能優化的技巧和竅門。


1、存儲引擎的選擇
假如數據表需求事務處理,應該考慮運用InnoDB,由于它完全符合ACID特性。假如不需求事務處理,運用默認存儲引擎MyISAM是比較明智的。并且不要嘗試同時運用這兩個存儲引擎。考慮一下:在一個事務處理中,一些數據表運用InnoDB,而其他的運用MyISAM。成果呢?整個subject將被取消,只有那些在事務處理中的被帶回到原始狀況,其他的被提交的數據轉存,這將導致整個數據庫的抵觸。然而存在一個簡略的辦法能夠同時利用兩個存儲引擎的優勢。目前大多數MySQL套件中包含InnoDB、編譯器和鏈表,但假如你選擇MyISAM,你仍然能夠單獨下載InnoDB,并把它作為一個插件。很簡略的辦法,不是嗎?
2、計數問題
假如數據表選用的存儲引擎支撐事務處理(如InnoDB),你就不該運用COUNT(*)核算數據表中的行數。這是由于在產品類數據庫運用COUNT(*),最多返回一個近似值,由于在某個特定時間,總有一些事務處理正在運轉。假如運用COUNT(*)顯然會產生bug,呈現這種過錯成果。
3、反復測驗查詢
查詢最扎手的問題并不是無論怎樣小心總會呈現過錯,并導致bug呈現。恰恰相反,問題是在大多數情況下bug呈現時,應用程序或數據庫現已上線。確實不存在針對該問題切實可行的解決辦法,除非將測驗樣本在應用程序或數據庫上運轉。任何數據庫查詢只有經過上千個記載的很多樣本測驗,才干被認可。

MYSQL數據庫優化性能六大技巧教程圖2
4、避免全表掃描
通常情況下,假如MySQL(或許其他聯系數據庫模型)需求在數據表中查找或掃描恣意特定記載時,就會用到全表掃描。此外,通常最簡略的辦法是運用索引表,以解決全表掃描引起的低效能問題。然而,正如咱們在隨后的問題中看到的,這存在過錯部分。