mysql 事務學習

1: mysql ?存儲引擎 主要包括 innodb ,myisam ,memory 等等

innodb 與 myisam 優(yōu)缺點對比:

innodb 支持事務處理(ACID), 支持行鎖,更強大的索引

myisam 在數(shù)據(jù)量大,查詢時效率高

1:存儲結構 ??

myisam 數(shù)據(jù)保存在三個文件中,第一個文件的名字以表的名字開始,擴展名指出文件類型。.frm文件存儲表定義。數(shù)據(jù)文件的擴展名為.MYD (MYData)。索引文件的擴展名是.MYI

innodb 數(shù)據(jù)都保存在一個文件中

2: 存儲空間

MyISAM:可被壓縮,存儲空間較小。支持三種不同的存儲格式:靜態(tài)表(默認,但是注意數(shù)據(jù)末尾不能有空格,會被去掉)、動態(tài)表、壓縮表。

InnoDB:需要更多的內(nèi)存和存儲,它會在主內(nèi)存中建立其專用的緩沖池用于高速緩沖數(shù)據(jù)和索引。

3、 事務支持

MyISAM:強調(diào)的是性能,每次查詢具有原子性,其執(zhí)行數(shù)度比InnoDB類型更快,但是不提供事務支持。

InnoDB:提供事務支持事務,外部鍵等高級數(shù)據(jù)庫功能。 具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACID compliant))型表。

4、 CURD操作

MyISAM:如果執(zhí)行大量的SELECT,MyISAM是更好的選擇。(因為沒有支持行級鎖),在增刪的時候需要鎖定整個表格,效率會低一些。相關的是innodb支持行級鎖,刪除插入的時候只需要鎖定改行就行,效率較高

InnoDB:如果你的數(shù)據(jù)執(zhí)行大量的INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表。DELETE 從性能上InnoDB更優(yōu),但DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除,在innodb上如果要清空保存有大量數(shù)據(jù)的表,最好使用truncate table這個命令。

5、 外鍵(一個表的一列,作為另一表的主鍵)

MyISAM:不支持

InnoDB:支持


innodb 事務 有四種隔離級別:(聚簇索引 包括 主鍵b+tree 輔助鍵 b+tree)

臟讀:當一個事務update 一行數(shù)據(jù),沒有commit ,另一個事務會讀取到未提交的數(shù)

不可重復讀:一個事務在執(zhí)行過程中,查詢了兩次數(shù)據(jù),另外一個事務更新了該條數(shù)據(jù),導致這個事務兩次讀的數(shù)據(jù)不一致

幻讀:一個事務在執(zhí)行時,另一個事務向里面插入一條新的數(shù)據(jù),會出現(xiàn)新數(shù)據(jù)沒有執(zhí)行事務操作。

1:不可提交讀 會出現(xiàn)臟讀 , 不可重復讀 , 幻讀

2:可提交讀 ?會出現(xiàn)不可重復讀,幻讀

3:可重復讀 會出現(xiàn)幻讀

4:可串行讀 都不會出現(xiàn) , 但使用鎖會較多,占用內(nèi)存資源

鎖類別:

1:共享鎖 : 可讀 ?不可更新

2:排它鎖 :不可讀,不可更新

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容