Mysql与Oracle的区别(抽几个当面试回答)

在面试中,会被问到Mysql与Oracle的区别,其实这两种数据库都是关系型数据库,SQL语法也差不多,我们只能从细节中列出一些不同之处,以下是部分区别,大家在面试时可以挑选几个回答,最好理解性得看,而不是背。

Mysql与Oracle的区别(抽几个当面试回答)

Mysql与Oracle的区别(抽几个当面试回答)

Mysql与Oracle的区别(抽几个当面试回答)

(1)市场使用情况

MySQL是轻量型数据库,并且免费,没有售后服务,使用率占20%左右的市场。

Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有提供售前售后等服务,使用率占40%左右的市场。

(2) 主键自增长的区别

MySQL可以直接设置类型为自动增长的数据类型,插入数据时,主键会自动累加带入到主键字段中;而Oracle只能通过获取序列号的累加值,然后再赋值给主键,完成手动自增长的操作

(3) 模糊查询语法

MySQL和Oracle都可以使用like语法进入模糊查询,但Oracle可以使用字段串比较函数instr(字段名,'字符串') > 0 来得到更精确的查找结果

(4) 对事务的提交

MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮

(5) 语法灵活性

MySQL对sql语法有很多非常实用而方便的扩展,

比如分页用的limit,而Oracle则是需要用到伪列ROWNUM和嵌套查询。

比如mysql在insert语法可以一次插入多行数据。

(6) 事务隔离级别

Oracle默认是read commited的隔离级别,而Mysql是repeatable read的隔离级别,同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的

Mysql与Oracle的区别(抽几个当面试回答)

(7) 对事务的支持

MySQL在innodb存储引擎的行级锁的情况下才可支持事务,而Oracle则完全支持事务

(8) 保存数据的持久性

MySQL是在数据库更新或者重启,则会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复

(9) 并发性

MySQL以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。

虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。

Oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以Oracle对并

发性的支持要好很多。

(10) 逻辑备份

MySQL逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用,Oracle逻辑备份时不锁定数据,且备份的数据是一致

(11) 复制

MySQL:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。

Oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。

(12) 性能诊断

MySQL的诊断调优方法较少,主要有慢查询日志。

Oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等


分享到:


相關文章: