MySQL 事務 儲存引擎和三正規化

2021-10-01 17:54:13 字數 1697 閱讀 4025

三正規化儲存引擎

參考mysql邏輯上的一組操作,這些操作要麼全做要麼全不做,是乙個不可分割的工作單位。事務只和dml語句(insert、delete、update)有關。

儲存引擎指表的型別及表在計算機上的儲存方式。

myisam

占用空間小,有較高的插入、查詢速度,不支援事務、也不支援外來鍵。對事務完整性沒有要求或以select、insert為主可使用該儲存引擎。只支援表級鎖,使用者的select、update、delete、insert操作都會為表加鎖。

myisam的表儲存成3個檔案,檔名與表名相同。儲存表結構的擴充套件名為.frm,儲存表資料的擴充套件名為.myd,儲存表索引的擴充套件名為.myi。

支援3種不同的儲存格式:

innodb

遵循acid模式設計,提供了具有提交、回滾和崩潰恢復能力的事務安全。但相比myisam,寫的效率會差一些,並且會占用更多磁碟空間以儲存資料和索引。

特點:支援自動增長列(auto-increment)屬性;為了維護資料完整性,還支援外來鍵完整性約束;支援事務;支援行級鎖,大大提高多使用者併發操作的效能。

建立表的表結構儲存在.frm中,資料和索引儲存在innodb_data_home_dir和innodb_data_file_path定義的表空間中。

memory

使用存在記憶體中的內容來建表,而且資料全部放在記憶體中。

資料全部放在記憶體中,而且預設使用hash索引(還有btree索引),訪問速度非常快。要求伺服器有足夠的記憶體來維持memory儲存引擎的表的使用,不需要了可以釋放記憶體或刪除表。

memory引擎使用很少,常用於內容變化不頻繁的**表,或者作為統計操作的中間結果表,便於高效地對中間結果進行分析並得到最終的統計結果。對儲存引擎為memory的表進行更新操作要謹慎,因為資料並沒有實際寫入到磁碟中,所以一定要對下次重新啟動服務後如何獲得這些修改後的資料有所考慮。

archive

用於資料歸檔,壓縮比非常高。支援insert、replace和select,不支援update、delete,不支援事務,其設計目的只是為了提供高速的插入和壓縮功能。

用來儲存歷史資料,如記錄日誌資訊。

merge

是一組myisam表的組合,這些myisam表結構必須完全相同。merge本身沒有資料,對merge型別表的insert、update和delete,實際上是對內部的myisam表進行的。

redo log:在頁修改的時候,先寫到 redo log buffer 裡面, 然後寫到 redo log 的檔案系統快取裡面(fwrite),然後再同步到磁碟檔案( fsync)。

undo log:在 mysql5.5 之前, undo 只能存放在 ibdata檔案裡面, 5.6 之後,可以通過設定 innodb_undo_tablespaces 引數把 undo log 存放在 ibdata之外。

事務在修改頁時,要先記 undo,在記 undo 之前要記 undo 的 redo, 然後修改資料頁,再記資料頁修改的 redo。 redo(裡面包括 undo 的修改) 一定要比資料頁先持久化到磁碟。 當事務需要回滾時,因為有 undo,可以把資料頁回滾到前映象的 狀態,崩潰恢復時,如果 redo log 中事務沒有對應的 commit 記錄,那麼需要用 undo把該事務的修改回滾到事務開始之前。 如果有 commit 記錄,就用 redo 前滾到該事務完成時並提交掉。

mysql儲存引擎和正規化

引擎預備知識 1.碼 1 什麼是碼?能唯一識別一行資料的就是碼。比如,你的身份證號,就是乙個碼 你的姓名不是碼,因為世界上可能還有其他人叫這個名字,但是你的姓名加上你父親和爺爺的姓名就基本上可以構成乙個碼。2 什麼是候選碼?3 什麼是主碼 2.函式依賴關係 1 完全依賴 2 部分依賴 3 傳遞依賴 ...

MySQL索引 事務 儲存引擎

索引建立的方法 建立索引的原則依據 檢視索引的方法 刪除索引的方法 事務的概念 事務的acid特點 事務控制語句 事務的控制方法 儲存引擎概念介紹 業選擇儲存引擎依據 修改儲存引擎 注 no unique為0 注 no unique為1 注 屬於唯一性索引的一種 直接建立索引 修改表結構方式新增索引...

mysql儲存引擎,事務,事務回滾

檢視已有表的使用儲存引擎 show create table 表名 g 檢視當前資料庫的預設儲存引擎和可提供的儲存引擎 show engines 修改儲存引擎 step1 修改配置檔案 etc my.cnf default storage engine 儲存引擎 step2 重啟mysqld服務 修...