MySQL知识点

什么是子查询?

  • 条件:一条SQL语句的查询结果做为另一条查询语句的条件或查询结果
  • 嵌套:多条SQL语句嵌套使用,内部的SQL查询语句称为子查询

InnoDB引擎的四大特性是什么?

  • 插入缓冲(insert buffer)
  • 二次写(double write)
  • 自适应哈希索引(ahi)
  • 预读(read ahead)

存储引擎该如何选择?

  • MyISAM:以读写插入为主的应用程序,比如博客系统,新闻门户网站。
  • Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。

什么是索引?

  •    索引就相当于目录,为了方便查找书中内容,通过对内容建立索引形成目录。索引是一个文件,他是要占据物理空间。

索引有哪些优点与缺点?

  • 索引的优点:
    • 可以大大加快数据的检索速度,这也是创建索引的主要原因;
    • 通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能
  • 索引的缺点:
    • 创建索引与维护索引要耗费时间。当对表中的数据进行增加,删除和修改的适合,索引也要动态的维护,会降低增/改/删的执行效率
    • 空间方面:索引需要占物理空间

什么是数据库事务?

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

事务有哪四大特性?

  • 原子性
    • 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用。
  • 一致性
    • 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的。
  • 隔离性
    • 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事物之间数据库是独立的;
  • 持久性
    • 一个事务被提交之后。他对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响

什么是脏读?幻读?不可重复读?

  • 脏读
    • 某个事物已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个rollback了操作,则后一个事务所读取的数据就会是不正确的
  • 不可重复读
    • 在一个事物的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事更新的原有数据
  • 幻读
    • 在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是他先前所没有的。

为什么要使用锁?

  • 当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。

数据库什么情况下会死锁?怎么解决?

  • 死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶行循环的现象
  • 常见的解决死锁的方法
    • 如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会
    • 在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生频率
    • 对非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率
    • 如果业务处理不好可以用分布式事务锁或这使用乐观锁

 

posted @ 2021-11-11 13:17  平安里  阅读(45)  评论(0)    收藏  举报