首頁>技術>

MySQL常見儲存引擎

MySQL儲存引擎有很多種,常見的有以下三種,其中MyISAM是5.6版及以前的版本預設儲存引擎,InnoDB是5.7版及以後的預設儲存引擎,大家重點學習InnoDB儲存引擎,但對於MyISAM也要有了解。

InnoDB:用於事務處理應用程式,支援外來鍵和行級鎖。如果應用對事務的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢之外,還包括很多更新和刪除操作,那麼InnoDB儲存引擎是比較合適的。InnoDB除了有效的降低由刪除和更新導致的鎖定,還可以確保事務的完整提交和回滾,對於類似計費系統或者財務系統等對資料準確要求性比較高的系統都是合適的選擇。資料和索引儲存在一個檔案、表結構儲存在一個檔案,一共兩個檔案。Innodb(預設的儲存引擎)支援資料持久化、事務、行級鎖、外來鍵。MyISAM:如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不高,那麼可以選擇這個儲存引擎。資料儲存在一個檔案、索引儲存在一個檔案、表結構儲存在一個檔案,一共三個檔案。Myisam支援資料持久化。MEMORY:將所有的資料儲存在記憶體中,在需要快速定位記錄和其他類似資料的環境下,可以提供極快的訪問。Memory的缺陷是對錶的大小有限制,雖然資料庫因為異常終止的話資料可以正常恢復,但是一旦資料庫關閉,儲存在記憶體中的資料都會丟失。資料儲存在記憶體中,一共一個檔案, Memory資料儲存在記憶體中,斷電會導致資料消失。InnoDB三大優點

支援事務supports transactions事務是指將多條語句執行前增加“開啟事務”、執行後增加“提交事務”兩個步驟,這就將多條語句變成不可分割的原子性操作,從而保證資料的完整性。案例,假設甲方給乙方轉賬300元,需要執行下列語句:一、查詢甲方賬號餘額;二、甲方賬號減少300元;三、查詢乙方賬戶餘額;四、乙方賬戶增加300元。假設執行步驟一和二後遇到斷網、斷電等特殊情況,那麼會發生轉賬一方錢少了而對方錢未增加的情況。若在這四步操作前先執行“開啟事務”,執行完四步操作後執行“提交事務”。那麼當執行完步驟一和二遇到斷網、斷電等特殊情況時,因為“提交事務”尚未執行,實質上步驟一和二不會生效,從而避免轉賬時一方錢少了而對方錢未增加的情況。

行級鎖row-level locking行級鎖在修改的行少的時候使用,表級鎖在批次修改多行的時候使用。行級鎖是指某一任務修改某行資料,其它任務可以修改其它行資料。多個任務可同時修改不同行的資料。表級鎖是指某一任務在修改資料時,其它任務均不得修改。多個任務只能排隊依次修改,不能同時修改。

外來鍵foreign keys外來鍵就是表與表之間的某種約定的關係,由於這種關係的存在,能夠讓表與表之間的資料,更加的完整,關聯性更強。例如:student表:學號 姓名 班級 班主任 人數1 學生1 A1班 老師A 52 學生2 A1班 老師A 53 學生3 A1班 老師A 54 學生4 A1班 老師A 55 學生5 A1班 老師B 36 學生6 A1班 老師A 57 學生7 A2班 老師B 38 學生8 A2班 老師B 3class表:班級 班主任 人數A1班 老師A 5A2班 老師B 3在student表中存在大量冗餘資料,若使用外來鍵,那麼在student表中可以去掉冗餘欄位老師和人數。在student表中透過外來鍵——班級欄位關聯到class表。這樣在資料關聯性更強,若在student表中建立的記錄班級欄位在class表中不存在則會報錯,另外class表中若要刪除A1班記錄也會報錯,提示student中還有很多記錄關聯到A1班。使用外來鍵可以減少資料冗餘,提高資料關聯度,降低差錯率。

21
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 物聯網核心協議MQTT快速入門2 安裝Mosquitto服務