专栏首页微光点亮星辰Oracle 与 MySQL 的差异分析(1):数据库结构

Oracle 与 MySQL 的差异分析(1):数据库结构

Oracle 与 MySQL 的差异分析(1):数据库结构

1.1 数据库实例(Instance)

在Oracle中,实例指的是数据库启动后的后台进程和内存,它和数据库是一一对应的,不过在RAC中一个数据库对应多个实例。在一个Server上一般只有一个数据库实例。

在 MySQL 中,运行一个数据库服务就启动一个数据库实例,它不存在RAC这种多实例的情况,所以一般不强调实例这个概念。

1.2 数据库用户(Schema)

一个数据库可能对应多个应用,为了有独立的命名空间,需要有多个schema。在Oracle中,一个用户就是一个schema,创建用户的命令是:create user XXXX identified XXXX

在 MySQL 中,database 和 schema 的概念是一样的,一个 MySQL 数据库下有多个database。创建database 的命令可以用 create database/schema a XXXX

通过 show database 可以查看有哪些数据库。

1.3 连接数据库

在 Oracle 中,客户端通过监听器连接数据库实例,Oracle 的监听器是独立的程序,一个监听器(默认端口号1521)可以监听一个或多个数据库实例。

Oracle 远程登陆命令:

sqlplus 用户名/密码@IP:端口/服务名

MySQL 的服务端口默认是3306,MySQL 远程登陆命令:

mysql -hIP -u 用户名 -p 密码 -P 端口

Oracle 使用 Schema 作为用户来登陆的,所以它默认访问的就是该schema 的对象。MySQL 登陆的用户账号和数据库 schema 之间没有关系,即登陆用户和数据库对象之间没有归属关系,登陆后默认可以访问所有数据库对象,如果未指定数据库,那么就需要用数据库名.表名的方式来访问一个表。

1.4 存储引擎

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle 和 SQL Server 等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而 MySQL 数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

InnoDB:是默认的存储引擎,它提供了事务、行级锁机制和外键约束的功能。

配置文件中可以配置默认的存储引擎

# The default storage engine thatwill be used when create new tables when default-storage-engine=INNODB

创建表时可以指定存储引擎。

create table user( id int not nullauto_increment, username char(20) not null, sex char(2), primary key(id) ) engine=merge

1.5 表空间和数据库文件

在 Oracle 中,创建每个表都可以指定表空间,一个表空间对应多个数据文件,一个表的数据是散落在多个文件中的,一个文件包含了很多个表的数据,所以一旦给数据库分配了数据文件就很难再回收了。

在 MySQL 中,每个 database/schema 的数据文件是不同的目录,不同 database 不会使用同一个数据文件,这一点与 Oracle 不同,Oracle 的不同用户如果使用了相同的表空间那么数据就可能在同一个文件中。当下面这个参数配置为 ON 时,MySQL 会为每个 INNODB 表创建一个数据文件,后缀为 ibd。

mysql> show variables like “innodb_file_per_table”;

+----------------------------------------------+-----------+

| Variable_name | Value |

+----------------------------------------------+-----------+

| innodb_file_per_table | OFF |

+----------------------------------------------+-----------+

1 row in set <0.00 sec>

MySQL 不同的数据库的数据文件存储在不同的目录下。

本文分享自微信公众号 - 微光点亮星辰(SandTower),作者:铁杆粉丝

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL数据库界面化工具 - Navicat

    本文使用的工具版本为:Navicat Premium 15,文中提到的功能在旧版中同样支持,如果需要最新版的软件(Mac/Windows)可私信博主。

    聚沙成塔
  • 数据库的简单建模

    使用数据库时,通常是为了支撑一个应用或一个业务场景,第一步需要做的就是要对数据库的表结构进行设计。一个完善的设计方案包括:表名、列名、数据类型、备注信息、字符...

    聚沙成塔
  • 数据库、数据库管理系统、SQL和图形界面工具的关系

    刚刚接触数据库的小伙伴可能会对几个名词混淆不清,一上来又是命令又是工具的,这篇文章帮大家来明确一下这几个概念之间的关系。

    聚沙成塔
  • 数据库历险记(一) | MySQL这么好,为什么还有人用Oracle?

    陈树义
  • 数据库流行度6月排行榜:Oracle飙升MySQL止跌回升

    六一儿童节,虽然是大家快乐的假期,但是也宣告了2018年进入中场。在DB-Engines的6月排行榜上,不同的数据库产品竞争也进入中场。先预祝大家中场收获满满!...

    数据和云
  • 如果使用得当,MySQL也可以化身NoSQL

    随着互联网和移动互联网的发展,各个机构都需要支撑远超过以往的数据。而在这个需求的刺激下,IT领域出现了大量数据处理技术,其中之一就是NoSQL。灵活的数据类型,...

    CSDN技术头条
  • MyCat教程【简单介绍】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    用户4919348
  • 数据库流行度5月排行榜:Oracle企稳PostgreSQL飙升

    五一假期,宣告2018年的1/3已然飘过,在匆匆流逝的时光里,有些变化潜移默化,有些变化轰轰烈烈,然而有紧迫感的人,必然计日以待、计日以行。

    数据和云
  • 如何取SQL结果集的第一条记录

    本文转载自博主编程老高的如何取SQL结果集的第一条记录的博客,特此记录一下。 因为之前使用的SQLServer数据库比较多,今天要查询MySQL数据库中的一张...

    ccf19881030
  • 2019 MySQL8 24小时快速入门(2)

    接下来就可以进入实战了。工欲善其事必先利其器,首先我们要做的事情,就是找个好用的界面工具。我想你大概不想一直与这样黑漆漆的界面为伴吧:

    Lenis

扫码关注云+社区

领取腾讯云代金券