常見關系型數據庫比較


 

 

常見的關系型數據庫比較

比較項

mysql

postgresql

oracle

sqlserver

access

sqllite

mariadb

實例

通過執行 MySQL 命令(mysqld)啟動實例。一個實例可以管理一個或多個數據庫。一台服務器可以運行多個 mysqld 實例。一個實例管理器可以監視 mysqld 的各個實例。

 

通過執行 Postmaster 進程(pg_ctl)啟動實例。一個實例可以管理一個或多個數據庫,這些數據庫組成一個集群。集群是磁盤上的一個區域,這個區域在安裝時初始化並由一個目錄組成,所有數據都存儲在這個目錄中。使用 initdb 創建第一個數據庫。一台機器上可以啟動多個實例。

 

oracle的內存結構和進程合並起來叫實例。管理oracle數據庫,同時提供服務。

如果把oracle數據庫比喻成倉庫,oracle實例就是負責看管倉庫,負責提貨開門鎖門的部門。

通過sqlplus 啟動一個實例。一個實例可以管理一個或多個數據庫,

 

SQL Server(MSSQLSERVER),它就標志着一個實例,這個實例的名字叫MSSQLSERVER,也叫默認實例

 

 

QtSql模塊提供了與平台以及數據庫種類無關的訪問SQL數據庫的接口,這個接口由利用Qt的模型視圖結構將數據庫與用戶界面集成的一套類來支持。

QSqlDatabase對象象征了數據庫的關聯。Qt使用驅動程序與各種數據庫的應用編程接口進行通信

 

mysql

數據庫

數據庫是命名的對象集合,是與實例中的其他數據庫分離的實體。一個 MySQL 實例中的所有數據庫共享同一個系統編目。

 

數據庫是命名的對象集合,每個數據庫是與其他數據庫分離的實體。每個數據庫有自己的系統編目,但是所有數據庫共享 pg_databases

 

 

 

 

 

 

數據庫緩沖區

通過 innodb_buffer_pool_size 配置參數設置數據緩沖區。這個參數是內存緩沖區的字節數,InnoDB 使用這個緩沖區來緩存表的數據和索引。在專用的數據庫服務器上,這個參數最高可以設置為機器物理內存量的 80%

 

Shared_buffers 緩存。在默認情況下分配 64 個緩沖區。默認的塊大小是 8K。可以通過設置 postgresql.conf 文件中的 shared_buffers 參數來更新緩沖區緩存。

 

 

 

 

 

 

數據庫鏈接

客戶機使用 CONNECT 或 USE 語句連接數據庫,這時要指定數據庫名,還可以指定用戶 id 和密碼。使用角色管理數據庫中的用戶和用戶組。

 

客戶機使用 connect 語句連接數據庫,這時要指定數據庫名,還可以指定用戶 id 和密碼。使用角色管理數據庫中的用戶和用戶組。

 

 

 

 

 

 

加密方法

可以在表級指定密碼來對數據進行加密。還可以使用 AES_ENCRYPT 和 AES_DECRYPT 函數對列數據進行加密和解密。可以通過 SSL 連接實現網絡加密。

 

可以使用 pgcrypto 庫中的函數對列進行加密/解密。可以通過 SSL 連接實現網絡加密。

 

 

 

 

 

 

審計

可以對 querylog 執行 grep

 

可以在表上使用 PL/pgSQL 觸發器來進行審計。

 

 

 

 

 

 

查詢解釋

使用 EXPLAIN 命令查看查詢的解釋計划。

 

使用 EXPLAIN 命令查看查詢的解釋計划。

 

 

 

 

 

 

備份,恢復和日志

InnoDB 使用寫前(write-ahead)日志記錄。支持在線和離線完全備份以及崩潰和事務恢復。需要第三方軟件才能支持熱備份

 

在數據目錄的一個子目錄中維護寫前日志。支持在線和離線完全備份以及崩潰、時間點和事務恢復。 可以支持熱備份。

 

 

 

 

 

 

表類型

取決於存儲引擎。例如,NDB 存儲引擎支持分區表,內存引擎支持內存表。

 

支持臨時表、常規表以及范圍和列表類型的分區表。不支持哈希分區表。 由於PostgreSQL的表分區是通過表繼承和規則系統完成了,所以可以實現更復雜的分區方式。

 

 

 

 

 

 

索引類型

取決於存儲引擎。MyISAMBTREEInnoDBBTREE

 

支持 B-樹、哈希、R-樹和 Gist 索引。

 

 

 

 

 

 

約束

支持主鍵、外鍵、惟一和非空約束。對檢查約束進行解析,但是不強制實施。

 

支持主鍵、外鍵、惟一、非空和檢查約束。

 

 

 

 

 

 

存儲過程和函數

支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。存儲過程可以用 SQL 和 C++ 編寫。用戶定義函數可以用 SQL和 C++ 編寫。

 

沒有單獨的存儲過程,都是通過函數實現的。用戶定義函數可以用 PL/pgSQL(專用的過程語言)、PL/TclPL/PerlPL/Python SQL 和 編寫。

 

 

 

 

 

 

觸發器

支持行前觸發器、行后觸發器和語句觸發器,觸發器語句用過程語言復合語句編寫。

 

支持行前觸發器、行后觸發器和語句觸發器,觸發器過程用 編寫。

 

 

 

 

 

 

並發控制

支持表級和行級鎖。InnoDB 存儲引擎支持 READ_COMMITTEDREAD_UNCOMMITTEDREPEATABLE_READ 和 SERIALIZABLE。使用 SET TRANSACTION ISOLATION LEVEL 語句在事務級設置隔離級別

 

支持表級和行級鎖。支持的 ANSI 隔離級別是 Read Committed(默認 —— 能看到查詢啟動時數據庫的快照)和 Serialization(與 Repeatable Read 相似 —— 只能看到在事務啟動之前提交的結果)。使用 SET TRANSACTION 語句在事務級設置隔離級別。使用 SET SESSION 在會話級進行設置。 

 

 

 

 

 

 

xml支持

有限的 XML 支持。

 

有限的 XML 支持。

 

 

 

 

 

 

特性

 

 

 

 

 

 

 

劣性

 

 

 

 

 

 

 

優點

 

 

 

 

 

 

 

缺點

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM