Day47 有關資料庫的知識點總結

2021-07-24 12:54:06 字數 2397 閱讀 4352

一、myisam和innodb的區別

1、innodb支援事務,myisam不支援事務

2、innodb支援行級鎖,myisam支援表級鎖

3、innodb支援併發控制,而myisam不支援

4、innodb支援外來鍵,而myisam不支援

5、innodb不支援全文索引,myisam支援

二、資料庫的四種隔離級別,以及它們之間的區別

read uncommitted(讀取未提交的內容):

在該隔離級別,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用於實際應用,因為它的效能也不比其他級別好多少。讀取未提交的資料,也被稱之為髒讀(dirty read)。
read committed(讀取已提交的內容):
乙個事務只能看見已經提交事務所做的改變。因為同一事務的其他例項在該例項處理其間可能會有新的commit,所以同一select可能返回不同結果。
repeatable read(可重複讀):
這是mysql的預設事務隔離級別,它確保同一事務的多個例項在併發讀取資料時,會看到同樣的資料行。這種級別會出現幻讀。
serializable(可序列化):
這是最高的隔離級別,它通過強制事務排序,使之不可能相互衝突,從而解決幻讀問題。簡言之,它是在每個讀的資料行上加上共享鎖。在這個級別,可能導致大量的超時現象和鎖競爭;   

對於不同的事務,採用不同的隔離級別分別有不同的結果。不同的隔離級別有不同的現象。主要有下面3種現在:

1、髒讀(dirty read):乙個事務可以讀取另乙個尚未提交事務的修改資料。

2、非重複讀(nonrepeatable read):在同乙個事務中,同乙個查詢在t1時間讀取某一行,在t2時間重新讀取這一行時候,這一行的資料已經發生修改,可能被更新了(update),也可能被刪除了(delete)。

3、幻像讀(phantom read):在同一事務中,同一查詢多次進行時候,由於其他插入操作(insert)的事務提交,導致每次返回不同的結果集。

不同的隔離級別有不同的現象,並有不同的鎖定/併發機制,隔離級別越高,資料庫的併發性就越差,4種事務隔離級別分別表現的現象如下表

三、資料庫備份方式

1、熱備份

2、冷備份

3、溫備份

4、二進位制日誌備份

四:行級鎖和表級鎖

1、innodb支援行級鎖,而myisam支援表級鎖

2、表級鎖:直接鎖定整張表,在你鎖定期間,其它程序無法對該錶進行寫操作。如果你是寫鎖,則其它程序則讀也不允許

行級鎖:僅對指定的記錄進行加鎖,這樣其它程序還是可以對同乙個表中的其它記錄進行操作。

3、行級鎖優點:

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

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

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

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

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

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

4、在以下情況下,表鎖定優先於頁級或行級鎖:

· 表的大部分語句用於讀取。

· 對嚴格的關鍵字進行讀取和更新,你可以更新或刪除可以用單一的讀取的關鍵字來提取的一行:

· update tbl_name set column=value where unique_key_col=key_value;

· delete from tbl_name where unique_key_col=key_value;

· select 結合並行的insert語句,並且只有很少的update或delete語句。

· 在整個表上有許多掃瞄或group by操作,沒有任何寫操作。

6、上述三種鎖的特性可大致歸納如下:

1) 表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。

2) 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。

3) 頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般

資料庫知識點總概

滿足acid特性的一組操作 acid 1.原子性 事務被視為不可分割的最小單元,事務的操作要麼全部提交成功,要麼全部失敗回滾。2.一致性 事務在執行前後保持一致性狀態,所有事務對同一資料的讀取結果是相同。3.隔離性 乙個事務所作的修改在最終提交之前,對其他事務不可見。4.永續性 一旦事務提交,則其所...

資料庫知識點

1.truncate delete和drop delete delete是一行行刪除資料,不影響表結構,並且會記錄日誌,可以進行回滾。truncate 刪除表中所有資料,不記錄日誌,不可以回滾,truncate之後表空間和索引大小會回到初始值。所以truncate之前最好備份 drop 刪除整個表結...

資料庫知識點

資料庫的事務,是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成為事務,必須滿足所謂的acid 原子性 ...