SQL 大小事
ACID
在資料庫的交易中,為確保交易(Transaction)是正確可靠的,所以必須具備四個特性,Atomicity (原子性)、Consistency (一致性)、Isolation (隔離性)、Durability (持續性)。在資料庫中,交易意旨由各種資料庫操作(select、update、insert等)所組成的邏輯過程。一般來說,我們會將Transaction寫在stored procedure中,以SQL server舉例,經常會看到 BEGIN TRANSACTION、COMMIT、 ROLLBACK等語法出現在stored procedure。
Atomicity (原子性)- 在資料庫的每一筆交易中只有兩種可能發生,第一種是全部完全(commit),第二種是全部不完成(rollback),不會因為某個環節出錯,而終止在那個環節,在出錯之後會恢復至交易之前的狀態,如同還沒執行此筆交易。
Consistency (一致性)- 在交易中會產生資料或者驗證狀態,然而當錯誤發生,所有已更改的資料或狀態將會恢復至交易之前。
Isolation (隔離性)- 資料庫允許多筆交易同時進行,交易進行時未完成的交易資料並不會被其他交易使用,直到此筆交易完成。
Durability (持續性)- 交易完成後對資料的修改是永久性的,資料不會因為系統重啟或錯誤而改變。
Index
Index Scan — 在查詢時,SQL server 會去尋找所有Index colume組成中是否符合查詢時的條件。執行消耗時間與Index總數成正比,與查詢結果的筆數無關。
Index Seek — 當查詢條件包含Index中的欄位,SQL server 會使用b-tree演算法尋找到match的資料。執行消耗時間與查詢結果筆數成正比。