数据库
首页 > 数据库> > 【学习笔记】数据库面试方面

【学习笔记】数据库面试方面

作者:互联网

文章目录


一、数据库事务

概念:

数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。

四大特性:

原子性: 操作要么全部实行,要么全不执行;
隔离性: 在事务提交之前,其他会话无法看到过程;
一致性: 操作前后,数据的总额数不变;
持久性: 一旦事务提交,对数据的改变是永久性的。

事物的隔离级别:

读未提交: select语句不加锁,易发生脏读、幻读和不可重复读;
读已提交: 易发生幻读和不可重复读;
可重复读: 易发生幻读;
串行化: 无以上问题;但是并发性低,性能差。

脏读: 当前事务访问数据时,访问到其他事务没有提交的数据;
不可重复读: 同一事物内多次读取同一行数据,读到的数据不一样;
幻读: 当前事务执行同样的数据,返回的集合不同(例:增加了一行)。

二、数据库两种引擎(MYISAM和INNODB)

两引擎区别:*

  1. INNODB支持外键,MYISAM不支持,有外键的INNODB表转化成MYISAM表时会失败;
  2. INNODB支持事务,而MYISAM不支持;
  3. MYSIAM支持全文索引,5.6之前的INNODB不支持,5.6及以后的支持
  4. INNODB支持行锁(默认)和表锁;MYISAM支持表锁。查全表时,INNODB要全表扫描,MYISAM不需要,它有一个字段专门存储总行数;
  5. INNODB必须有有主键索引,而MYISAM不必须。INNODB没有指定主键索引时,会自动创建一个隐藏列Row_id来充当默认主键;
  6. MYISAM表格可以被压缩后进行查询操作;
  7. INNODB是聚集索引,用的是b+树,数据文件和索引绑定在一起,表数据文件本身也是索引文件。辅助索引文件需要两次查询,先查到逐渐,再通过主键查到数据。MYISAM是非聚集索引,也是b+树,但索引和数据分开,索引保存数据文件的指针,主键索引和辅助索引独立。即,INNODB的叶子结点存储的是数据文件,辅助索引存储的是主键值;MYISAM叶子结点都是数据文件地址指针。

三、数据库索引

索引种类

索引的优缺点

优点: 查询效率快; 缺点: 更新数据效率低,占空间;

索引最左前缀问题

当第二个索引没有使用索引时,第三个索引也无法用索引。

四、数据库锁

乐观锁: 自主实现,通过版本号,写多读少用;
悲观锁: 共享锁,多事务只能读不能写。加 lock in share mode
排它锁: 单事务,只能写不能读。加 for update;
行锁: 用于数据行;
表锁: 用于表。

五、其它问题

long_query问题怎么解决: 设置参数,开启慢日志功能,得到耗时超过一定时间的SQL;
varchar和char的适用场景: varchar长度可变,char长度固定;
数据库连接池的作用: 维护一定数量的连接,减少创建连接的时间。跟快的响应时间,统一管理。
SQL优化:

数据库主从复制

异步复制(默认): 容易造成主从数据库数据不一致,一个数据库为主库(Master),一个是从库(Slave)。slave用两个线程,一个读主库的Binlog日志,并将其存入自己的中继日志中,另一个解析中继日志,执行SQL;Master用一个线程给slave传输日志。
半同步复制: 只有把Master的Binlog日志写到自己的中继日志中,主库才会返回操作完成的反馈,但是性能会有一定的降低。
并行操作: salve多个线程请求Binlog日志。

MVCC

什么是MVCC: MVCC是多版本并发控制。一般在数据库管理系统中,实现数据可的并发访问,在编程语言实现事务内存。
MVCC特点:

INNODB实现MVCC的方式:

标签:事务,索引,数据库,笔记,面试,INNODB,MYISAM,数据
来源: https://blog.csdn.net/yy2293816909/article/details/123634260