常见关系型数据库比较

 

 

常见的关系型数据库比较

比较项

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 支持。

 

 

 

 

 

 

特性

 

 

 

 

 

 

 

劣性

 

 

 

 

 

 

 

优点

 

 

 

 

 

 

 

缺点

 

 

 

 

 

 

 

posted @ 2019-08-22 22:53  菜鸟的进击  阅读(1637)  评论(0编辑  收藏  举报