Mysql 和oracle的区别
(1)對事務(wù)的提交
MySQL默認(rèn)是自動提交,而Oracle默認(rèn)不自動提交,需要用戶手動提交,需要在寫commit;指令或者點(diǎn)擊commit按鈕
(2) 分頁查詢
MySQL是直接在SQL語句中寫"select… from …where…limit x, y",有l(wèi)imit就可以實(shí)現(xiàn)分頁;而Oracle則是需要用到偽列ROWNUM和嵌套查詢(select * from( select rownum r,a from tabName where rownum <= 20 )where r > 10)
(3) 事務(wù)隔離級別
MySQL是read commited的隔離級別,而Oracle是repeatable read的隔離級別,同時(shí)二者都支持serializable串行化事務(wù)隔離級別,可以實(shí)現(xiàn)最高級別的讀一致性。每個(gè)session提交后其他session才能看到提交的更改。Oracle通過在undo表空間中構(gòu)造多版本數(shù)據(jù)塊來實(shí)現(xiàn)讀一致性,每個(gè)session 查詢時(shí),如果對應(yīng)的數(shù)據(jù)塊發(fā)生變化,Oracle會在undo表空間中為這個(gè)session構(gòu)造它查詢時(shí)的舊的數(shù)據(jù)塊
MySQL沒有類似Oracle的構(gòu)造多版本數(shù)據(jù)塊的機(jī)制,只支持read commited的隔離級別。一個(gè)session讀取數(shù)據(jù)時(shí),其他session不能更改數(shù)據(jù),但 可以在表最后插入數(shù)據(jù)。session更新數(shù)據(jù)時(shí),要加上排它鎖,其他session無法訪問數(shù)據(jù)
(4) 對事務(wù)的支持
MySQL在innodb存儲引擎的行級鎖的情況下才可支持事務(wù),而Oracle則完全支持事務(wù)
(5) 保存數(shù)據(jù)的持久性
MySQL是在數(shù)據(jù)庫更新或者重啟,則會丟失數(shù)據(jù),Oracle把提交的sql操作線寫入了在線聯(lián)機(jī)日志文件中,保持到了磁盤上,可以隨時(shí)恢復(fù)
(6) 并發(fā)性
MySQL以表級鎖為主,對資源鎖定的粒度很大,如果一個(gè)session對一個(gè)表加鎖時(shí)間過長,會讓其他session無法更新此表中的數(shù)據(jù)。
雖然InnoDB引擎的表可以用行級鎖,但這個(gè)行級鎖的機(jī)制依賴于表的索引,如果表沒有索引,或者sql語句沒有使用索引,那么仍然使用表級鎖。
Oracle使用行級鎖,對資源鎖定的粒度要小很多,只是鎖定sql需要的資源,并且加鎖是在數(shù)據(jù)庫中的數(shù)據(jù)行上,不依賴與索引。所以O(shè)racle對并 發(fā)性的支持要好很多。
(7) 邏輯備份
MySQL邏輯備份時(shí)要鎖定數(shù)據(jù),才能保證備份的數(shù)據(jù)是一致的,影響業(yè)務(wù)正常的dml使用,Oracle邏輯備份時(shí)不鎖定數(shù)據(jù),且備份的數(shù)據(jù)是一致
(8) 復(fù)制
MySQL:復(fù)制服務(wù)器配置簡單,但主庫出問題時(shí),叢庫有可能丟失一定的數(shù)據(jù)。且需要手工切換叢庫到主庫。
Oracle:既有推或拉式的傳統(tǒng)數(shù)據(jù)復(fù)制,也有dataguard的雙機(jī)或多機(jī)容災(zāi)機(jī)制,主庫出現(xiàn)問題是,可以自動切換備庫到主庫,但配置管理較復(fù)雜。
(9) 性能診斷
MySQL的診斷調(diào)優(yōu)方法較少,主要有慢查詢?nèi)罩尽?br /> Oracle有各種成熟的性能診斷調(diào)優(yōu)工具,能實(shí)現(xiàn)很多自動分析、診斷功能。比如awr、addm、sqltrace、tkproof等
(10)權(quán)限與安全
MySQL的用戶與主機(jī)有關(guān),感覺沒有什么意義,另外更容易被仿冒主機(jī)及ip有可乘之機(jī)。
Oracle的權(quán)限與安全概念比較傳統(tǒng),中規(guī)中矩。
(11)分區(qū)表和分區(qū)索引
MySQL的分區(qū)表還不太成熟穩(wěn)定。
Oracle的分區(qū)表和分區(qū)索引功能很成熟,可以提高用戶訪問db的體驗(yàn)。
(12)管理工具
MySQL管理工具較少,在linux下的管理工具的安裝有時(shí)要安裝額外的包(phpmyadmin, etc),有一定復(fù)雜性。
Oracle有多種成熟的命令行、圖形界面、web管理工具,還有很多第三方的管理工具,管理極其方便高效。
(13)最重要的區(qū)別
MySQL是輕量型數(shù)據(jù)庫,并且免費(fèi),沒有服務(wù)恢復(fù)數(shù)據(jù)。
Oracle是重量型數(shù)據(jù)庫,收費(fèi),Oracle公司對Oracle數(shù)據(jù)庫有任何服務(wù)。
總結(jié)
以上是生活随笔為你收集整理的Mysql 和oracle的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中IO流用到了哪种设计模式
- 下一篇: springboot启动后进页面出现错误