本節內容:
myisam引擎的鎖定機制
在mysql資料庫中,myisam儲存引擎適合於讀頻率遠大於寫頻率這一情況。
目前的應用可能會出現在某一時段讀寫頻率相當。
大致如下:
乙個客戶端發出需要長時間執行的select
其他客戶端在同乙個表上發出insert或者update,這個客戶將等待select完成
另乙個客戶在同乙個表上發出另乙個select;因update或insert比select有更高有優先順序,該select將等待update或insert完成,也將等待第乙個select完成
也就是說對myisam表的讀操作,不會阻塞其他使用者對同一表的讀請求,但會阻塞對同一表的寫請求;對 myisam表的寫操作,則會阻塞其他使用者對同一表的讀和寫操作
;myisam表的讀操作與寫操作之間,以及寫操作之間是序列的!
解決方案:
myisam儲存引擎有乙個系統變數concurrent_insert,專門用以控制其併發插入的行為,其值分別可以為0、1或2。
0 不允許併發操作
1 如果myisam表中沒有空洞(即表的中間沒有被刪除的行),myisam允許在乙個程序讀表的同時,另乙個程序從表尾插入記錄。這也是mysql的預設設定。
2 無論myisam表中有沒有空洞,都允許在表尾併發插入記錄
使用--low-priority-updates啟用mysqld。這將給所有更新(修改)乙個表的語句以比select語句低的優先順序。在這種情況下,在先前情形的最後的select語句將在insert語句
前執行。
為max_write_lock_count設定乙個低值,使得在一定數量的write鎖定後,給出read鎖定
使用low_priority屬性給於乙個特定的insert,update或delete較低的優先順序
使用high_priority屬性給於乙個特定的select
使用insert delayed語句
Mysql儲存引擎InnoDB與Myisam的區別
1,事務處理 innodb 支援事務功能,myisam 不支援。myisam 的執行速度更快,效能更好。2,select update insert delete 操作 myisam 如果執行大量的select,myisam是更好的選擇 innodb 如果你的資料執行大量的insert或update...
MYSQL儲存引擎InnoDB和myisam區別
mysql5.5之後的預設儲存引擎 如果你為乙個表指定auto increment列,在資料詞典裡的innodb表控制代碼包含乙個名為自動增長計數器的計數器,它被用在為該列賦新值。自動增長計數器僅被儲存在主記憶體中,而不是存在磁碟上 關於該計算器的演算法實現,請參考 auto increment列在...
MYSQL儲存引擎innodb和myisam的區別
innodb 預設事務型引擎,最重要最廣泛的儲存引擎,效能非常優秀,資料庫儲存在共享表空間,可以通過配置分開。對主鍵查詢的效能高於其他型別的儲存引擎。它內部做了很多優化,從磁碟讀取資料時自動在記憶體構建hash 雜湊 索引,插入資料時自動構建插入緩衝區。它可以通過一些機制和工具支援真正的熱備份,支援...