標籤:通過命令 llb 串列 資料庫伺服器 cti 提交 重要 變化 好的
最近很火的話題,為什麼學Python?
很多人說火啊!又能人工智慧,又能大資料的,當然很火喜歡學習的人很多,高薪職位更容易帶動潮流。這個觀點首先我不反對,我大學只學習過兩門shell與java,真正學習都是自學,目的不是開發,為了鍛煉自己的編程思想而學習,為了以後學習編程少走一些彎路而學習。
自己也是選擇Python,為什麼,實習後發展發展方向是資料庫,後期可能DBA,也可能走資料分析等業務路線,這都不要緊重要的是要為以後結合工作把自己能力提升,個人競爭力提前打好路線,無論做DBA資料庫伺服器營運SHELL指令碼和Pyhton與perl無疑最優選擇,那麼如果走資料分析等Python也可以發揮自己能用處,對於自己的職業發展規劃有很大協助,很實用的意義,為了幾年後更好的用於工作,我感覺這才是一個不熱衷於編程,不對編程狂熱的技術人員出發點!不要以這兩年火,發展前景,底薪高等為學習的基礎點,這樣空洞無規劃學習,心態首先是不端正,其次你會隨時代變化而落後!
昨天淺談了一下資料的的完整性,那麼就是資料的精確性和可靠性,我們要保證實體完整,參照完整,域完整,使用者自訂完整,這時候回過頭看一看約束真是重要!
一致性都是啥意思?
咱們從實際出發,一致性字面意思聽,都知道資料是一致的,在地點一查詢銀行卡餘額是100元,換個地方查詢卻不失100元,這是我們不可接受的。那麼資料在資料庫中會時時刻刻伴隨著資料讀寫操作,這就對資料庫的狀態要求特別高,也就是說資料庫每次操作改變,都可以被接受,讀取也都是正常的,就是資料庫的一致性體現,有些時候不是資料庫真實可靠狀態,那麼就認為不一致。
“保鏢”出場
說起來Oracle這些完整性啊,一致性啊也都算是Oracle內建的"大老闆",都配有保鏢來保護,那麼我們來說一說完整性的保鏢交易管理。
交易管理可不簡單,保證資料庫中資料一致性,在前面我們說到,當用提交和復原操作都是一個事務的提交或者事務的復原,我們的SQL語句是被事務語所包含。事務關鍵字是transaction來表示,而且有life cycle,事務開始,執行和結束,而事務的開始是隱式的,結束則用指令動作去完成。
Oracle中控制事務常用的命令:
1、commit
英語字面翻譯過來就是提交,這是作為事務結束的標誌,使用這個命令的時候意味著什麼,意味著本次事務的資料將會被儲存到我們的磁碟裡,改變資料庫的狀態可靠的可接受的狀態,對於開發來說最安全有效方式是顯示資料提交,在提交前,其實資料庫已經更新了但是沒有得到資料庫的認可,通過事務結束命令來認可操作,提交佔用資源非常少,1條於1000條花費的提交資料庫資源是一樣的。
2、rollback
英語字面翻譯過來復原,我們在事務提交之前發出的撤銷命名,這時候資料庫更新沒有得到認可,當事務結束rollback時候會復原當前包含的資料,回到上一次的commit狀態,這個過程會先讀取復原段資訊,利用這些資訊將資料庫中已發生的修改重新恢複,如果用了delete命令刪除資料,那麼在rollback時候就會insert into資料,對於資料庫來說每次rollback是很耗費資源的,適用於異常處理操作,所以應該在提交事務之前認真核對操作來代替復原!
3、savepoint 和 rollback savepoint
在rollback的背景下,rollback復原當前事務所有操作,那麼我們通過命令savepoint在事務中建立標起點,只允許使用者復原之後的動作,rollback savepoint則是復原標點以後的資料,兩者是彌補rollback極端命令一種方式,交易回復更靈活和可控性。
事務的屬性和隔離等級
1、read only --將無法在事務內修改資料,而且這能在事務的開頭使用,資料庫狀態將被凍結,資料庫狀態與事務開始狀態一致
2、read write --可讀可寫狀態,資料庫預設是此狀態
3、serializable --隔離等級,指定序列化事務,可以實現與唯讀功能相同,隔離其他資料庫狀態的影響,但是允許DML操作,不識別其他事務對資料庫的修改,即使提交,但是不代表無視原表資料的修改,表資料其實已經修改,只是本事務不識別
4、read commited --隔離等級的預設層級,只能讀取其他事務已經提交修改的,對於未提交的資料,只有修改事務本身才可以進行讀取。
交易處理原則
1、原子性(Atomicity)
2、一致性(Consistency)
3、隔離性(Lsolation)
本文章會後續持續更新
閑聊編程與Oracle一致性和“保鏢”事務