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