資料庫相關面試知識總結

2022-08-14 01:03:18 字數 2586 閱讀 3132

一、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種事務隔離級別分別表現的現象如下表

隔離級別

髒讀非重複讀 

幻像讀 read uncommitted

允許 允許

允許 read committed 

允許允許

repeatable read 

允許 serializable

三、資料庫備份方式

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) 頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般

mysql資料庫相關知識總結

切換到mysql.exe所在目錄下輸入命令 mysql h主機名 u使用者名稱 p密碼 物件導向的方法 db new mysqli 主機名 使用者名稱 密碼 資料庫名 例項化了mysqli類並建立了到主機的連線,建立了乙個物件 面向過程的方法 db mysqli connect 主機名 使用者名稱 ...

資料庫相關知識

1儲存過程和函式的區別 儲存過程是使用者定義的一系列sql語句的集合,涉及特定表或其它物件的任務,使用者可以呼叫儲存過程,而函式通常是資料庫已定義的方法,它接收引數並返回某種型別的值並且不涉及特定使用者表。1.事務是什麼?事務是作為乙個邏輯單元執行的一系列操作,乙個邏輯工作單元必須有四個屬性,稱為 ...

資料庫相關知識

innodb和myisam資料庫引擎的區別 對比項innodb myisam事務 外來鍵 索引聚集索引,使用b tree作為索引結構,資料檔案是和 主鍵 索引綁在一起,5.7以前的innodb不支援全文索引支援全文索引,在涉及全文索引領域的查詢效率上myisam速度更快高 主鍵必須有主鍵 使用者沒有...