數(shù)據(jù)庫事務(wù)的四大特性 為什么大部分的數(shù)據(jù)庫系統(tǒng)仍然要用oracle?
為什么大部分的數(shù)據(jù)庫系統(tǒng)仍然要用oracle?因?yàn)镺racle在互聯(lián)網(wǎng)快速發(fā)展的大環(huán)境下越來越強(qiáng),越做越好。Oracle目前最大的戰(zhàn)略計(jì)劃就是Cloud-云,同時(shí)Oracle會持續(xù)升級,向精細(xì)化,智能
為什么大部分的數(shù)據(jù)庫系統(tǒng)仍然要用oracle?
因?yàn)?span style="font-weight: bold">Oracle在互聯(lián)網(wǎng)快速發(fā)展的大環(huán)境下越來越強(qiáng),越做越好。Oracle目前最大的戰(zhàn)略計(jì)劃就是Cloud-云,同時(shí)Oracle會持續(xù)升級,向精細(xì)化,智能化,自動化等方法發(fā)展。關(guān)注12c,18c,19c的發(fā)展路徑就可以看到……
舉個(gè)例子說一下Oracle 19c的一個(gè)新特性(Oracle 19c還未發(fā)布,從某ACED處獲取的消息)。對于傳統(tǒng)的集群,如果某個(gè)節(jié)點(diǎn)掛掉,放在傳統(tǒng)的集群中,該節(jié)點(diǎn)正在處理的操作會失敗,從而可能導(dǎo)致事務(wù)會處理失敗被回滾。但是19c的新特性就特別牛,有守護(hù)進(jìn)程會全程監(jiān)控你的事務(wù)的每一個(gè)操作,如果節(jié)點(diǎn)掛掉了,后臺會將所有操作切換到健康的節(jié)點(diǎn)重做,事務(wù)成功執(zhí)行,用戶無感知。
特別的,將Oracle與DB2相對比,Oracle和DB2相同之處就是不開源,最大的不同之處是Oracle絕對開放,DB2相對封閉。比如Oracle在使用時(shí)報(bào)了一個(gè)錯誤,我們看錯誤信息大概能知道是什么問題,還有trace日志可查。但是DB2報(bào)了個(gè)錯誤,那就是一串錯誤碼,讓人不明所以。
也正是Oracle的開放,造就了Oracle在全球數(shù)據(jù)庫市場占用率最高的局面,同時(shí)也造就了Oracle相對完善的生態(tài)圈。從安全性、穩(wěn)定性、可維護(hù)性等角度考慮,從公司發(fā)展的角度來看,大部分的數(shù)據(jù)庫系統(tǒng)仍然要用oracle。
ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹?
隔離級別(isolation level),是指事務(wù)與事務(wù)之間的隔離程度。 顯然,事務(wù)隔離程度越高,并發(fā)性越差、性能越低;事務(wù)隔離程度越低,并發(fā)性越強(qiáng)、性能越高。Oracle默認(rèn)的隔離級別是read committed。查看數(shù)據(jù)庫隔離級別的方法:
1. SELECT * FROM dual FOR UPDATE
2. SELECT s.sid, s.serial#, CASE BITAND(t.flag, POWER(2, 28)) WHEN 0 THEN "READ COMMITTED" ELSE "SERIALIZABLE" END AS isolation_level FROM v$transaction t JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context("USERENV", "SID")修改數(shù)據(jù)庫隔離級別的方法: 設(shè)置隔離級別使用 SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]