MySQL面试题

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

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

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

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

4.drop,delete和truncate 的区别

drop:删除表;不能回滚

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

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

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

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

6.连接的种类

7.数据库范式

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

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

9.分表与分区

 

10.数据库隔离级别

11.MYSQL的两种存储引擎

myisam  innodb

 

12.MYSQL索引算法

hash  btree

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

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

14.索引的优缺点

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

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来控制),也就是写数

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值