共計 2052 個字符,預計需要花費 6 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 oracle 和 mysql 的區別有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
區別:1、oracle 數據庫是一個重量級對象關系數據庫管理系統,mysql 是一個輕量級開源的關系數據庫管理系統;2、oracle 驗證用戶的參數有很多,有著較強的安全性,mysql 驗證用戶的參數只有三個,安全性較弱。
本教程操作環境:windows10 系統、mysql8.0.22 版本、Dell G3 電腦。
oracle 和 mysql 的區別是什么
1、類型和成本的區別
oracle 數據庫是一個對象關系數據庫管理系統 (ORDBMS),一個重量型數據庫。它通常被稱為 Oracle RDBMS 或簡稱為 Oracle,是一個收費的數據庫。
MySQL 是一個開源的關系數據庫管理系統 (RDBMS),一個是輕量型數據庫。它是世界上使用最多的 RDBMS,作為服務器運行,提供對多個數據庫的多用戶訪問。它是一個開源、免費的數據庫。
2、存儲上的區別
與 Oracle 相比,MySQL 沒有表空間,角色管理,快照,同義詞和包以及自動存儲管理。
3、安全性上的區別
MySQL 使用三個參數來驗證用戶,即用戶名,密碼和位置;Oracle 使用了許多安全功能,如用戶名,密碼,配置文件,本地身份驗證,外部身份驗證,高級安全增強功能等。
4、對事務的支持
MySQL 在 innodb 存儲引擎的行級鎖的情況下才可支持事務,而 Oracle 則完全支持事務
5、性能診斷上的區別
MySQL 的診斷調優方法較少,主要有慢查詢日志。
Oracle 有各種成熟的性能診斷調優工具,能實現很多自動分析、診斷功能。比如 awr、addm、sqltrace、tkproof 等
6、管理工具上的區別
MySQL 管理工具較少,在 linux 下的管理工具的安裝有時要安裝額外的包 (phpmyadmin,etc),有一定復雜性。
Oracle 有多種成熟的命令行、圖形界面、web 管理工具,還有很多第三方的管理工具,管理極其方便高效。
7、并發性上的區別
MySQL 以表級鎖為主,對資源鎖定的粒度很大,如果一個 session 對一個表加鎖時間過長,會讓其他 session 無法更新此表中的數據。雖然 InnoDB 引擎的表可以用行級鎖,但這個行級鎖的機制依賴于表的索引,如果表沒有索引,或者 sql 語句沒有使用索引,那么仍然使用表級鎖。
Oracle 使用行級鎖,對資源鎖定的粒度要小很多,只是鎖定 sql 需要的資源,并且加鎖是在數據庫中的數據行上,不依賴與索引。所以 Oracle 對并發性的支持要好很多。
8、保存數據的持久性
MySQL 是在數據庫更新或者重啟,則會丟失數據,Oracle 把提交的 sql 操作線寫入了在線聯機日志文件中,保持到了磁盤上,可以隨時恢復
9、事務隔離級別上的區別
MySQL 是 read commited 的隔離級別,而 Oracle 是 repeatable read 的隔離級別,同時二者都支持 serializable 串行化事務隔離級別,可以實現最高級別的讀一致性。每個 session 提交后其他 session 才能看到提交的更改。
Oracle 通過在 undo 表空間中構造多版本數據塊來實現讀一致性,每個 session 查詢時,如果對應的數據塊發生變化,Oracle 會在 undo 表空間中為這個 session 構造它查詢時的舊的數據塊
MySQL 沒有類似 Oracle 的構造多版本數據塊的機制,只支持 read commited 的隔離級別。一個 session 讀取數據時,其他 session 不能更改數據,但可以在表最后插入數據。session 更新數據時,要加上排它鎖,其他 session 無法訪問數據。
10、操作上的一些區別
①主鍵
Mysql 一般使用自動增長類型,在創建表時只要指定表的主鍵為 auto_increment,插入記錄時,不需要再指定該記錄的主鍵值,Mysql 將自動增長;
Oracle 沒有自動增長類型,主鍵一般使用的序列,插入記錄時將序列號的下一個值付給該字段即可;只是 ORM 框架是只要是 native 主鍵生成策略即可。
②單引號的處理
MYSQL 里可以用雙引號包起字符串,ORACLE 里只可以用單引號包起字符串。在插入和修改字符串前必須做單引號的替換:把所有出現的一個單引號替換成兩個單引號。
③翻頁的 SQL 語句的處理
MYSQL 處理翻頁的 SQL 語句比較簡單,用 LIMIT 開始位置,記錄個數;ORACLE 處理翻頁的 SQL 語句就比較繁瑣了。
④ 空字符的處理
MYSQL 的非空字段也可以有空的內容,ORACLE 里定義了非空字段就不容許有空的內容。
⑤字符串的模糊比較
MYSQL 里用 字段名 like % 字符串 %;ORACLE 里也可以用 字段名 like % 字符串 % 但這種方法不能使用索引,速度不快。
以上是“oracle 和 mysql 的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!