日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL引擎innodb和mysum_mysql数据库引擎InnoDB和MyISAM

發(fā)布時間:2025/3/21 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL引擎innodb和mysum_mysql数据库引擎InnoDB和MyISAM 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當concurrent_insert = 0?時,不允許并發(fā)插入

當concurrent_insert = 1時,如果myisam表中沒有空洞(即表的中間沒有被刪除的行),myisam允許在一個進程讀表的同時,另一個進程從表尾插入記錄

當concurrent_insert = 2時,無論myisam表中有沒有空洞,都允許在表尾并發(fā)插入記錄

3.MyISAM鎖調(diào)度問題

MyISAM存儲引擎的讀鎖和寫鎖是互斥的,讀寫操作室串行的,那么如果讀寫兩個進程同時請求同一張表,Mysql將會使寫進程先獲得鎖。不僅僅如此,即使讀請求先到達鎖等待隊列,寫鎖后到達,寫鎖也會先執(zhí)行。因為mysql因為寫請求比讀請求更加重要。這也正是MyISAM不適合含有大量更新操作和查詢操作應用的原因。

調(diào)節(jié)辦法:

通過指定啟動參數(shù)low-priority-updates,使MyISAM引擎默認給與讀請求優(yōu)先的權(quán)限

通過執(zhí)行set low_PRIORITY_UPDATES=1,降低更新請求的優(yōu)先級。

指定INSERT、UPDATE、DELETE語句的LOW_PRIORITY屬性。

三.InnoDB存儲引擎

1.開門見山

具有提交、回滾和崩潰恢復能力的事務安全(ACID兼容)存儲引擎。

支持事物和外鍵

默認是行鎖

支持數(shù)據(jù)恢復

注意:行鎖在某些情況下會變成表鎖,比如SQL的更新(update)或者刪除(delete)語句中未使用到索引,導致在InnoDB在對數(shù)據(jù)進行相應操作的時候必須把整個表鎖起來進行檢索(表鎖)。而如果使用了索引的話,InnoDB只會通過索引條件檢索數(shù)據(jù),而只鎖住索引對應的行(行鎖)。

2.實例分析

問題描述:

系統(tǒng)中有一個實時的定時任務,當有條件觸發(fā)的時候,會更新對應的A表;

但是同時有另外一個對A表的寫操作,因此當進行測試的時候,有時候會不固定的出“Lock wait timeout exceeded”的錯誤。

當出現(xiàn)這個問題的時候,從很多的地方進行了分析,然后都無法得到正確的解決方案(因為描述1模塊不是我寫的,所以沒有去查看更新表的代碼操作)

可能的原因:

在描述1中定時任務更新表A的時候,更新條件中沒有使用索引,導致當進行定時任務更新表的時候形成了表鎖。然后因為表A數(shù)據(jù)量比較大,檢索較慢,然后導致了描述2中對表A的寫操作的等鎖超時。

3.適用的場景

更新和查詢都相當?shù)念l繁,多重并發(fā)

要求事務,或者可靠性要求比較高

外鍵約束,MySQL支持外鍵的存儲引擎只有InnoDB

一般來說,如果需要事務支持,并且有較高的并發(fā)讀取頻率,InnoDB是不錯的選擇。

總結(jié)

以上是生活随笔為你收集整理的MySQL引擎innodb和mysum_mysql数据库引擎InnoDB和MyISAM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。