java面試:資料庫
阿新 • • 發佈:2019-01-08
Web後端資料庫一般用mysql。
資料庫基礎
Q:資料庫事務是什麼?
多條sql語句,要麼全部成功,要麼全部失敗。
Q:資料庫事務有哪些特性?
資料庫事務特性:原子性(Atomic)、一致性(Consistency)、隔離性(Isolation)、永續性(Durabiliy)。簡稱ACID。
原子性:組成一個事務的多個數據庫操作是一個不可分割的原子單元,只有所有操作都成功,整個事務才會提交。任何一個操作失敗,已經執行的任何操作都必須撤銷,讓資料庫返回初始狀態。
一致性:事務操作成功後,資料庫所處的狀態和它的業務規則是一致的。即資料不會被破壞。如A轉賬100元給B,不管操作是否成功,A和B的賬戶總額是不變的。
隔離性:在併發資料操作時,不同的事務擁有各自的資料空間,它們的操作不會對彼此產生干擾
永續性:一旦事務提交成功,事務中的所有操作都必須持久化到資料庫中。
Q:資料庫的隔離級別有哪些?
讀未提交(read-uncommitted)讀提交(read-committed) 可重複讀(repeatable-read)序列化(serializable)。
Q:mysql預設的資料庫隔離級別是什麼?
可重複讀(repeatable-read)
Q:不同的資料庫隔離級別會導致哪些問題?
資料庫中的資料可能同時被多個事務訪問,如果沒有采取必要的隔離措施,就會導致各種併發問題,破壞資料的完整性。
1.髒讀:A事務讀取B事務尚未提交的更改資料,並在這個資料的基礎上進行操作。如果恰巧B事務回滾,那麼A事務讀取到的資料是根本不被承認的。
2.不可重複讀:A事務讀取了B事務已經提交的更改資料。
3.幻讀:A事務讀取了B事務已經提交的新增資料。
sql優化
Q:平常使用過哪些sql優化的手段?