MySQL面试题

1.主键,外键,超键,候选键

MySQL面试题

2.数据库事务的四个特征及含义

MySQL面试题

3.视图有什么作用?它可以更改吗?

视图是虚拟的表;只包含动态检索数据的查询,不包含数据;简化操作,隐藏细节,保护数据;对视图的更新会作用于基表,一般不更新;

4.drop,delete和truncate 的区别

drop:删除表;不能回滚

delete:结合where删除数据;会记录日志用于回归;会触发触发器;不减少索引和表的空间

truncate:清空表;不记录单行删除日志;无法恢复;只能对于TABLE操作;不能在带FOREIGN KEY约束的表(被引用的表)中使用;计数从头开始;

5.索引的工作原理和其种类

     索引的实现通常采用B树或B+树,加快查询速度也消耗更多空间

MySQL面试题

6.连接的种类

MySQL面试题

7.数据库范式

MySQL面试题

8.存储过程与触发器的区别

存储过程和触发器都是SQL语句集;触发器不可用CALL调用,而是在用户执行某些语句后自动调用;

9.分表与分区

MySQL面试题

 

10.数据库隔离级别

MySQL面试题

11.MYSQL的两种存储引擎

myisam  innodb

 

MySQL面试题

12.MYSQL索引算法

hash  btree

HASH 适合等值查找,不适合范围,不能排序
BTREE 适合范围查找,无hash冲突

13.聚集索引和非聚集索引

MySQL面试题

14.索引的优缺点

MySQL面试题

15.两种存储引擎索引的区别

MySQL面试题

16.数据库的主从复制

一个服务器作为主服务器,一个或多个服务器作为从服务器,主服务器将更新写到二进制日志,当一个从服务器连接到主服务器时,通知主服务器读取日志,接收从那时起发生的所有更新。解决:数据分布,负载平衡,备份,高可用性和容错性

 

基于语句 在主服务器上执行的语句,在从服务器上也执行
基于行 将改变的内容复制过去
混合类型 语句复制失败时采用行的形式

 

17.数据库连接池

     为数据库连接建立一个缓冲池,防止过于大量的连接的建立与管理;

18.存储过程

       存储过程是一些预编译的SQL语句,执行效率较高

 

19.乐观锁和悲观锁

乐观锁 假定不会发生并发冲突,只在提交时检查,若有其他数据更新了数据,则回滚;使用数据版本标示数据(时间戳,版本号)
悲观锁 假定会发生并发冲突,屏蔽一切破坏数据库一致性的操作,主要用于数据争用激烈的环境,以及锁成本低于回滚成本时;排他锁;

 

20. innodb的事务与日志的实现方式

1)有多少种日志

       错误日志:记录出错信息,也记录一些警告信息或者正确的信息。

       查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行

       慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。

       二进制日志:记录对数据库执行更改的所有操作。

       中继日志

       事务日志:

2)事物的4种隔离级别

       读未提交(RU)

       读已提交(RC)

       可重复读(RR)

       串行

3)事务是如何通过日志来实现的

       事务日志是通过redo和innodb的存储引擎日志缓冲(Innodb log buffer)来实现的,当开始一个事务的时候,会记录该事务的lsn(log sequence number)号; 当事务执行时

会往InnoDB存储引擎的日志的日志缓存里面插入事务日志;当事务提交时,必须将存储引擎的日志缓冲写入磁盘(通过innodb_flush_log_at_trx_commit来控制),也就是写数

据前,需要先写日志。这种方式称为“预写日志方式”。