数据库之战:MSSQL Server、Oracle PL/SQL 和 MySQL


市场上数据库种类繁多,一场“数据库之战”已经打响。现在正是了解市场上三大关系数据库——Microsoft SQL Server、Oracle PL/SQL 和 MySQL 的区别和重要性的最佳时机。关系数据库管理系统目前已成为行业的中坚力量,但由于可供选择的方案众多,很难确定选择哪一个。

关系数据库管理系统诞生于 20 世纪 80 年代。本文重点探讨了业界三大流行 RDBMS——Microsoft SQL Server、Oracle 和 MySQL 的历史和特性。Microsoft SQL Server 和 Oracle 是商业软件,而 MySQL 是开源 RDBMS。

Oracle 是第一家在 20 世纪 80 年代推出商用 RDBMS 的公司。20 世纪 90 年代中期,Microsoft 推出了 SQL Server,成为 Oracle 的有力竞争对手。另一方面,MySQL 最初是作为开源软件开发和分发的。MySQL 首次发布于 1995 年,Windows 版本于 1998 年发布。2008 年,它被 SUN 收购,随后被 Oracle 收购。

语言——沟通的核心

任何 RDBMS 的核心都是用于执行查询的语言,这就是它们的性能和实现方式受到影响的原因。尽管所有这三种数据库管理系统都使用某种版本的结构化查询语言 (SQL),但 Microsoft SQL Server 使用 Transact-SQL (T-SQL),它是最初由 Sybase 开发并由 Microsoft 使用的 SQL 扩展。而 Oracle 则使用 PL/SQL (过程语言/SQL)。

两者都是 SQL 的不同“风格”或方言,两种语言的语法和功能略有不同。两种语言的主要区别在于它们如何处理变量、存储过程和内置函数。Oracle 中的 PL/SQL 还可以将过程组合到包中,而 MS SQL Server 则无法做到这一点。PL/SQL 可能稍微复杂一些,并且可能更强大,而 T-SQL 更简单易于实现。

另一方面,MySQL 使用 T-SQL 的精简版本,并且还结合了与 SQL/PSM 密切相关的过程语言。但是,MySQL 的存储代码对象接近 ANSI 标准,但它们又没有 T-SQL(Microsoft 和 Sybase 对 SQL 的专有扩展)的广度和深度。

事务控制

事务可以被认为是一组作为单个单元执行的操作。例如,如果用户尝试执行一些 SQL 查询,则要么全部执行,要么都不执行。这是 Oracle 和 MS SQL Server 在事务控制方面的主要区别之一。

默认情况下,MS SQL Server 将单独执行并提交每个命令/任务,如果出现任何错误,则很难或不可能回滚更改。“BEGIN TRANSACTION”命令用于正确分组语句并声明事务的开始,并且可以在结尾使用 COMMIT 语句。此 COMMIT 语句会将更改的数据写入磁盘,并结束事务。在事务中,ROLLBACK 将丢弃在事务块中所做的任何更改。发出 COMMIT 后,就不可能再回滚任何内容,只能回滚到 COMMIT 命令。

而在 Oracle 中,每个新的数据库连接都被视为一个新的事务。随着查询的执行和命令的发出,更改仅在数据库内存中进行,并保留在缓存中。在发出显式 COMMIT 语句之前,不会提交任何内容。COMMIT 后,发出的下一个命令实际上会启动一个新事务,并且该过程再次开始。这提供了更大的灵活性和有助于错误控制,因为在显式执行 COMMIT 命令之前,不会将任何更改提交到磁盘。

对于 MySQL,事务的支持与 InnoDB 轻松兼容。InnoDB 是 MySQL 的存储引擎,默认情况下可在 MySQL 中使用。它提供标准的 ACID 兼容事务功能以及外键支持。

数据库对象的组织

数据库对象的组织也是这三种数据库之间的一个重要区别。MS SQL Server 按数据库名称组织所有对象,例如表、视图和过程。MS SQL 用户被分配给一个登录名,该登录名被授予对特定数据库及其对象的访问权限。在 Microsoft SQL Server 中,每个数据库在服务器上都有一个私有的、不共享的磁盘文件。

而在 Oracle 中,所有数据库对象都按模式分组。模式不过是一组数据库对象的子集数据库结构。所有数据库对象都在所有模式和用户之间共享。即使所有内容都是共享的,每个用户的角色和权限都是定义的,并且可以将其限制在某些模式和表中。

简而言之,MySQL、Oracle 和 SQL Server 都是功能强大的 RDBMS 选项。尽管它们在“底层”的工作方式和实现方式上存在许多其他差异,但它们的使用方式大致相同。每个数据库都可以在不同的环境中以不同的目标使用。目的可能相同,但实现方式不同。

更新于:2020年1月16日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.