Mysql行鎖與表鎖的區別

2021-07-27 13:20:00 字數 1175 閱讀 8343

mysql有關許可權的表都有哪幾個

mysql伺服器通過許可權表來控制使用者對資料庫的訪問,許可權表存放在mysql資料庫裡,由mysql_install_db指令碼初始化。這些許可權表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結構和內容:

user許可權表:記錄允許連線到伺服器的使用者帳號資訊,裡面的許可權是全域性級的。

db許可權表:記錄各個帳號在各個資料庫上的操作許可權。

table_priv許可權表:記錄資料表級的操作許可權。

columns_priv許可權表:記錄資料列級的操作許可權。

host許可權表:配合db許可權表對給定主機上資料庫級操作許可權作更細緻的控制。這個許可權表不受grant和revoke語句的影響。

mysql的binlog有有幾種錄入格式?分別有什麼區別?

有三種格式,statement,row和mixed。

statement模式下,每一條會修改資料的sql都會記錄在binlog中。不需要記錄每一行的變化,減少了binlog日誌量,節約了io,提高效能。由於sql的執行是有上下文的,因此在儲存的時候需要儲存相關的資訊,同時還有一些使用了函式之類的語句無法被記錄複製。

row級別下,不記錄sql語句上下文相關資訊,僅儲存哪條記錄被修改。記錄單元為每一行的改動,基本是可以全部記下來但是由於很多操作,會導致大量行的改動(比如alter table),因此這種模式的檔案儲存的資訊太多,日誌量太大。

mixed,一種折中的方案,普通操作使用statement記錄,當無法使用statement的時候使用row。

此外,新版的mysql中對row級別也做了一些優化,當表結構發生變化的時候,會記錄語句而不是逐行記錄

行級鎖定的優點:

·         當在許多執行緒中訪問不同的行時只存在少量鎖定衝突。

·         回滾時只有少量的更改。

·         可以長時間鎖定單一的行。

行級鎖定的缺點:

·         比頁級或表級鎖定占用更多的記憶體。

·         當在表的大部分中使用時,比頁級或表級鎖定速度慢,因為你必須獲取更多的鎖。

·         如果你在大部分資料上經常進行group by操作或者必須經常掃瞄整個表,比其它鎖定明顯慢很多。

·         用高階別鎖定,通過支援不同的型別鎖定,你也可以很容易地調節應用程式,因為其鎖成本小於行

mysql行鎖表鎖區別 mysql表鎖和行鎖區別

一 表鎖 特點 偏向myisam儲存引擎,開銷小,加鎖快 無死鎖 鎖定粒度大,發生鎖衝突的概率最高,併發度最低。我們在編輯表,或者執行修改表的事情了語句的時候,一般都會給表加上表鎖,可以避免一些不同步的事情出現,表鎖分為兩種,一種是讀鎖,一種是寫鎖。我們可以手動給表加上這兩種鎖,語句是 lock t...

Mysql行鎖與表鎖

用主鍵修改就是行瑣,或者用索引修改就是行瑣 update tab set name xx where id xx 行鎖 update tab set name xx where date 非主鍵或索引 xx 表鎖 插入的時候呢?插入都是行鎖 alert語句修改表結構,表鎖 表鎖和行鎖同時發生時,會等...

mysql 行鎖與表鎖

為日常整理,可能會有些重複.行鎖表表鎖 1 多個事務操作同一行資料時,後來的事務處於阻塞等待狀態。這樣可以避免了髒讀等資料一致性的問題。後來的事務可以操作其他行資料,解決了表鎖高併發效能低的問題。2 innodb的行鎖是針對索引加的鎖,不是針對記錄加的鎖。並且該索引不能失效,否則都會從行鎖公升級為表...