《Mysql應(yīng)用有關(guān)MyISAM引擎的鎖定機(jī)制》要點(diǎn):
本文介紹了Mysql應(yīng)用有關(guān)MyISAM引擎的鎖定機(jī)制,希望對您有用。如果有疑問,可以聯(lián)系我們。
本節(jié)內(nèi)容:
MyISAM引擎的鎖定機(jī)制MYSQL數(shù)據(jù)庫
在mysql數(shù)據(jù)庫中,MyISAM存儲(chǔ)引擎適合于讀頻率遠(yuǎn)大于寫頻率這一情況.
目前的應(yīng)用可能會(huì)出現(xiàn)在某一時(shí)段讀寫頻率相當(dāng).MYSQL數(shù)據(jù)庫
大致如下:
一個(gè)客戶端發(fā)出需要長時(shí)間運(yùn)行的SELECT
其他客戶端在同一個(gè)表上發(fā)出INSERT或者UPDATE,這個(gè)客戶將等待SELECT完成
另一個(gè)客戶在同一個(gè)表上發(fā)出另一個(gè)SELECT;因UPDATE或INSERT比SELECT有更高有優(yōu)先級,該SELECT將等待UPDATE或INSERT完成,也將等待第一個(gè)SELECT完成
也就是說對MyISAM表的讀操作,不會(huì)阻塞其他用戶對同一表的讀哀求,但會(huì)阻塞對同一表的寫哀求;對 MyISAM表的寫操作,則會(huì)阻塞其他用戶對同一表的讀和寫操作
;MyISAM表的讀操作與寫操作之間,以及寫操作之間是串行的!MYSQL數(shù)據(jù)庫
辦理方案:
MyISAM存儲(chǔ)引擎有一個(gè)系統(tǒng)變量concurrent_insert,專門用以控制其并發(fā)插入的行為,其值分別可以為0、1或2.
0 不允許并發(fā)操作
1 如果MyISAM表中沒有空洞(即表的中間沒有被刪除的行),MyISAM允許在一個(gè)進(jìn)程讀表的同時(shí),另一個(gè)進(jìn)程從表尾插入記錄.這也是MySQL的默認(rèn)設(shè)置.
2 無論MyISAM表中有沒有空洞,都允許在表尾并發(fā)插入記錄
使用--low-priority-updates啟用mysqld.這將給所有更新(修改)一個(gè)表的語句以比SELECT語句低的優(yōu)先級.在這種情況下,在先前情形的最后的SELECT語句將在INSERT語句
前執(zhí)行.MYSQL數(shù)據(jù)庫
為max_write_lock_count設(shè)置一個(gè)低值,使得在必定數(shù)量的WRITE鎖定后,給出READ鎖定
使用LOW_PRIORITY屬性給于一個(gè)特定的INSERT,UPDATE或DELETE較低的優(yōu)先級
使用HIGH_PRIORITY屬性給于一個(gè)特定的SELECT
使用INSERT DELAYED語句MYSQL數(shù)據(jù)庫
《Mysql應(yīng)用有關(guān)MyISAM引擎的鎖定機(jī)制》是否對您有啟發(fā),歡迎查看更多與《Mysql應(yīng)用有關(guān)MyISAM引擎的鎖定機(jī)制》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/14314.html