面试准备-打卡第三天-数据库篇

198 阅读3分钟

MySQL和SQLite的区别是什么?

  1. MySQL是完善的服务器数据库,功能全面,综合化,追求最大并发效率;而SQLite是单机数据库,功能简约,小型化,追求最大磁盘效率
  2. MySQL主要用来做服务器端的开发;而SQLite是用来做客户端开发
  3. SQLite没有内置的身份验证机制,任何人都可以访问数据库文件;而MySQL带有许多内置的安全功能,需要使用用户名,密码或SSH进行身份验证
  4. SQLite没有任何特定的用户管理功能,因此不适合多用户访问;MySQL具有构造良好的用户管理系统,可以处理多个用户并授予不同级别的权限

MySQL支持哪些存储引擎?

MySQL 支持多种存储引擎,比如 InnoDB,MyISAM,Memory,Archive 等等.在大多数的情况下,直接选择使用 InnoDB 引擎都是最合适的,InnoDB 也是 MySQL 的默认存储引擎。

MyISAM 和 InnoDB 的区别有哪些:

  • InnoDB 支持事务,MyISAM 不支持
  • InnoDB 支持外键,而 MyISAM 不支持
  • InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高;MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的。
  • Innodb 不支持全文索引,而 MyISAM 支持全文索引,查询效率上 MyISAM 要高;
  • InnoDB 不保存表的具体行数,MyISAM 用一个变量保存了整个表的行数。
  • MyISAM 采用表级锁(table-level locking);InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。

什么是数据库事务?

事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态,事务是逻辑上的一组操作,要么都执行,要么都不执行

举个最经典的例子:

假如A向B转账1000元,这个转账会涉及到两个关键操作就是:将A的余额减少1000元,将B的余额增加1000元,万一在这两个操作之间突然出现错误比如银行系统崩溃,导致A余额减少而B的余额没有增加,这样就不对了,事务就是保证这两个关键操作要么都成功,要么都失败

介绍一下事务具有的四个特征?

事务就是一组原子性的操作,这些操作要么全部发生,要么全部不发生,事务把数据库从一种一致性状态转换成另一种一致性状态

  • 原子性:事务是数据库的逻辑工作单位,事务中包含的各个操作要么都做,要么都不做
  • 一致性:事务执行的结果必须是使数据库从一个一致性状态变成另一个一致性状态,因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态,如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态
  • 隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行的各个事务之间不能互相干扰
  • 持续性:也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其执行结果有任何影响