前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 与 MySQL 的差异分析(1):数据库结构

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

作者头像
一头小山猪
发布2020-04-10 16:13:21
1.8K0
发布2020-04-10 16:13:21
举报
文章被收录于专栏:微光点亮星辰微光点亮星辰
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 不同的数据库的数据文件存储在不同的目录下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档