四大特性
原子性:乙個事務中的所有操作,要不 操作全部成功,要不全部失敗,不能存在中間態。
一致性:事務必須使得資料庫從乙個一致性狀態轉變到另乙個一致性狀態。
隔離性:是指多個使用者同時請求資料庫,開啟多個事務同時處理某個資料庫,隔離性保證了各 個事務之間均不受干擾,每個事務都感覺不到其他事務的存在。
永續性:對資料庫的修改是永續性的,一旦修改,就算資料庫系統出現故障,這種修改也不 會丟失,這點是資料庫資料存放到硬碟中,並有redo log 和 binlog 一起保證的。
2.隔離級別
讀未提交、讀已提交、可重複讀、序列化。
(1)丟失修改
a和b兩個事物同時修改同乙個資料,a修改的提交在b提交之後,導致b好像沒有修改,丟失修改。
可通過序列化級別解決。
(2)髒讀
b事務修改了乙個資料並未提交,a事務讀取了這個資料,然後b事務回滾了,最後a又讀取了一次,兩次讀取的資料不一致,稱為髒讀。
可通過讀已提交隔離級別解決。
(3)不可重複讀
a事務讀取了乙個資料後,b事務修改了這個資料,a事務又讀取了這個資料,兩次讀取的資料也不一致,稱為不可重複讀。
可通過可重複讀隔離級別解決。
(4)幻讀
a事務更新了某個字段(範圍是整個資料表的)(以id=1為條件的),b事務又插入了一條新的記錄,導致a事務認為自己沒有完全更新過來,就像出現幻覺一樣。
可通過序列化級別解決。
3.事務的傳播屬性
關於pymysql讀取不到後台資料庫更新的資料
今天做乙個監控後台資料庫資料的程式中,使用了pymysql,但是在每次使用游標物件select物件時資料都是乙個樣。原因在於 1.mysql的儲存引擎inoodb的事務隔離級別預設是 可重複讀 repeatable read 例如a客戶端事務未提交,而b客戶端事務修改了資料,a客戶端只能讀取到小於等...
pandas 資料庫資料的讀取
絕大多數公司都會選擇將資料存入資料庫中,因為資料庫既可以存放海量資料,又可以非常便捷地實現資料的查詢。下面以mysql和sql server為例,來練習pandas模組和 對應的資料庫模組。首先需要介紹pymysql模組和pymssql模組中的連線函式connect,雖然兩個模組中的連線函式名稱一致...
Golang PostgreSql資料庫事務處理
對於資料庫執行多個更新操作時,事務會將多個操作當成單個單元處理,要成功都成功,否則都失敗。本文通過例項說明go sql事務處理。搭建postgresql資料庫環境,我們打算在postgre資料庫中新建表meta data id,source 然後插入記錄測試事務。go運算元據庫的包為 databas...