MySQL和Oracle数据库引擎

MYSQL数据库:

在mysql数据库中,常用到的引擎主要就是2个:Innodb和MyIASM。

Innodb:它提供了对数据库ACID事务的支持,并且还提供行级锁和外键的约束。它被设计的目的就是处理大数据容器的数据库系统,它本身实际上是基于Mysql后台的完整系统。在Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引,但该索引不支持全文搜索。同时,启动也比较慢,他不会保存表的行数。当进行Select count(*) from table指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。

MyIASM:MySQL的默认引擎,但不支持事务,也不支持行级锁和外键。因此在当执行insert和update时,会锁定整张表,导致效率降低。不过比起Innodb不同的是,MyIASM引擎保存了表的行数,于是当进行Select count(*) from table语句时,不需要进行扫描全表,直接读取已存的数据。所以,如果表的读操作远远多于写操作的时候,并不需要事务的支持,可以优选MyIASM数据库引擎。

两者在使用的时候,如何选择?

  1. 如果需要ACID事务支持时,则选择Innodb数据库引擎。
  2. 当大容量数据集时选择Innodb,因为它支持事务处理和故障的恢复。Innodb可以利用数据库日志来进行数据的恢复,当根据主键进行查询时,Innodb也是比较快的。
  3. 大批量的插入语句时(insert)在MyIASM数据库引擎中执行是比较快的,但没有事务的处理,不安全。但update语句在Innodb下执行比MyIASM要快,尤其是在并发量大的时候。

Oracle数据库:

在Oracle中是不存在引擎的概念,数据处理大致可以分为两大类:联机事务处理OLTP、联机分析处理OLAP。

联机事务处理OLTP:是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易等。它主要强调的是数据库内存效率、内存各种指示的命令率、绑定变量和并发操作。
联机分析处理OLAP:是数据库仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。它主要是强调数据分析、sql执行市场、磁盘I/O、分区等。

你可能感兴趣的:(面试题,数据库,mysql,oracle)