A. 程序員面試寶典之Mysql資料庫Innodb引擎的4個隔離級別
題目:請闡述Mysql Innodb引擎的4個隔離級別
難度:三星
面試頻率:五星
這道題真的是一道資料庫的高頻題,資料庫題除了索引的原理之外就是這道題的面試頻率最高。
1.Read uncommitted(讀未提交):,最低的隔離級別,可以一個事務讀到其他事務沒有提交的數據,也稱臟讀,這個隔離級別很少人用
2.Read committed(讀已提交):相比於讀未提交,這個隔離級別只能讀到其他事物已經提交了的數據,這個隔離級別用得比較多。但是不是Mysql默認的隔離級別
3.Repeatable read(可重復讀): 在讀已提交隔離級別中,2次讀取同一個變數如果其他事務修改了它的值,會讀到的不一樣。而在這個隔離級別中,顧名思義,一個事務開始讀了。多次讀到的值可以保證是一樣的
4.Serializable 序列化 在這個隔離級別下,所有的事務都將串列操作,是隔離級別最高的也是效率最低的,很少人用
面試官追問:Innodb引擎默認隔離級別是哪個
答:可重復讀
面試官追問:可重復讀的實現原理
答:使用了MVCC多版本控制(類似樂觀鎖),Innodb引擎會給每一行數據加一個版本號信息,當一個事務修改一個數據時會增加它的版本號+1,當一個事務開始的時候會緩存下此時的版本號,後面讀取的時候只會讀取這個版本號的數據,因此別的事務提交了修改數據的版本號大於它,因此不會被讀到
面試官追問:事務的隔離級別如何設置:
答:在Mysql命令行下調用命令 set global.tx_isolation,但這樣Mysql重啟失效,修改my.cnf來永久設置
面試官追問:可重讀讀有什麼問題
答:會出現幻讀,幻讀是指事務讀取到一個值無法准確繼續後續操作。例如讀取一個值,沒有則插入,但是等插入的時候其他事務已經插入了,這就會導致插入失敗,解決辦法:sql語句顯示加鎖 :select xxxx for update,其他事務修改數據則會阻塞
B. sql server 2012 寶典有pdf嗎
樓主 是這樣的 不用擔心 即使是商業用途 問題也不大 很少被查出來的 也不一定去官網下載 2012現在還是蠻好找的 網路就可以 我也裝了
不要誤導。這里的核心版指的是按核心授權的意思。兩個版本功能是相同的,不過核心版限定最多隻能使用20個物理CPU核心,如果你知道調度器的話,就知道區別了,核心版最多隻能開啟20或40個調度器(每個核心一個,對於有超線程技術的CPU是40個調度器)。而企業版則沒有這個限制,可以支持操作系統所能支持的最多CPU核心數。
C. SQL Server 2012寶典與SQL Server 2012寶典(第4版)區別,哪個更適合初學者
如果說適合初學者,只要書中不是不要講高級的東西,哪本書都是可以的,畢竟是入門。
再看上面兩本書,名字幾乎相同,還以為第二本是第一本的升級版本,但仔細一看,作者不一樣,第一本是國人寫的,第二本是外國人著的。
我個人比較喜歡外國人寫的書,因為外國人寫的內容真的是邏輯嚴謹,循序漸進,有的好書,看著看著,真的可以用「有趣」一詞形容。
對比國人寫的書,都比較簡單,套用其他格式內容。但確實比較適合入門。
所以,這兩本書,各有各的好。選哪本,我覺得問題都不大。