(以下為複習完一部分資料後又寫了一遍,為了加深印象)
一、非關係型資料庫和關係型資料庫區別,優勢比較
非關係型資料庫:
稱為:nosql,也就是not only sql 意味不僅僅是sql。非關係型資料庫不需要寫一些較為複雜得sql語句,其內部得儲存方法是以key-value得形式。常見得非關係型資料庫有hbase、redis、mongodb等。非關係型資料庫不需要經過sql得重重解析,所以效能很高;非關係型資料庫得可擴充套件性比較強,資料之間沒有耦合性,遇見需要新增得字段,就直接增加乙個key-value得鍵值對就行了。
關係型資料庫:
以**得形式存在,以行和列得形式訪問資料,關係型資料庫得這一系列得列和行被稱之為表,無數張表組成了資料庫,常見得關係型資料庫有oracle,db2,microsoft sql server,mysql等。關係型資料庫能夠支援較為複雜得sql查詢,能夠體現出資料之間、表之間得關聯關係;關係型資料庫也支援事務,便於提交和回滾。
二、mysql事務四大特性
首先什麼是mysql的事務:事務是一組操作,組成這組操作的各個單元,原子性中的要麼全部成功要麼全部失敗,這個特性就是事務。在mysql中,事務是在引擎層實現的,只有使用innodb引擎的資料庫或表才支援事務。
1.原子性:事務得操作要麼全部成功,要麼全部失敗回滾。因此成功就必須全部應用到資料庫,操作失敗則對資料庫不能有任何影響。
2.一致性:一致性指得是乙個事務在執行的前後其狀態一致。例如:a和b加起來的錢一共1000元,那麼無論她們中間如何轉賬,轉了多少次,事務結束後兩個使用者的錢加起來還是1000元,這就是事務的一致性。
3.永續性:指的是事務一旦提交回滾,那麼發生的改變就會是永久性的,即使資料庫遇到特殊情況也不會產生干擾。
4.隔離性:當多個事務同時進行的時就有可能出現髒讀、不可重複讀、幻讀的情況,為了解決這些併發問題,提出了隔離性的概念。
髒讀:當事務a讀取了事務b的資料,事務b沒有提交,然後事務b執行了回滾操作,這時候事務a讀取到的資料就是髒讀;
不可重複讀:事務a進行多次的資料讀取操作,事務b在事務a讀取的過程中進行更新資料並提交,事務a讀取到的資料不一致;
幻讀:事務a在資料庫中將所有學生的成績a-b(例如排序),這個時候事務b手動插入了一條成績為a的資料,事務a更新資料完畢發現多了一條沒有修改的資料,這個情況就是出現了幻讀。
sql的隔離級別有四種:
讀未提交:指得是乙個事務在提交之前,所做的修改就能夠被其他事務看到。
讀已提交:指的是乙個事務在提交之後,所做的修改才能夠被其他事務看到。
可重複讀:指得是乙個事務在執行的過程中,看到的資料和啟動時看到的資料是一致的。未提交的變更對其他事務不可見。
序列化:指得是會對於同一行記錄,寫會加寫鎖,讀會加讀鎖。當出現讀寫鎖衝突的時候,後訪問的事務必須等待前乙個事務執行完畢,才能繼續執行。
這四個隔離級別可以解決髒讀、不可重複讀、幻讀這三類問題
級別由低到高是:讀未提交 < 讀已提交 < 可重複讀 < 序列化
注意:大部分的隔離級別越高,越能夠保證資料的完整性和一致性,但是對併發的效能影響越大。大多數資料庫的預設級別是讀已提交,比如sql server 、oracle,但是mysql的預設隔離級別是可重複讀。
mysql 不用怕面試題 MySQL 面試題
資料庫事務的四個特性及含義原子性 atomicity 一致性 correspondence 隔離性 isolation 永續性 durability 原子性 整個事務中的所有操作,要麼全部完成,要麼全部不完成。事務在執行過程中發生錯誤,會被回滾 rollback 到事務開始前的狀態,就像這個事務從來...
MySQL面試題總結 一
1 索引概念 簡單來說索引是乙個幫助我們快速查詢資料的資料結構。對於mysql資料庫來說,索引是乙個排序的列表,在這個列表中儲存著索引的值和包含這個值的資料所在行的實體地址,在資料十分龐大的時候,索引可以大大加快查詢的速度,這是因為使用索引後可以不用掃瞄全表來定位某行的資料,而是先通過索引表找到該行...
mysql資料結構面試題 MySQL 面試題
mysql 的一些面試題,有的是平時聊到的,有的是聽別人說的,有的是工作中遇到的,特此彙總一下,有問有答。一條 sql 查詢語句執行流程?1 聯結器。客戶端和伺服器 tcp 握手後,驗證使用者名稱密碼。使用者名稱密碼通過後,聯結器會到許可權表中查詢你擁有的許可權。之後這個連線裡面的許可權判斷邏輯,都...