加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

互联网公司面试必问的MySQL题目

发布时间:2019-03-18 02:48:00 所属栏目:MySql教程 来源:codeyuyu
导读:互联网公司面试必问的MySQL题目(上) 01什么是数据库事务?如果没有事物会有什么后果?事务的特性是什么? 事务是指作为单个逻辑工作单元执行的一系列操作,可以被看作一个单元的一系列SQL语句的集合。要么完全地执行,要么完全地不执行。 如果不对数据库进行

常见的解决死锁的方法

  1. 如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会。
  2. 在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率;
  3. 对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;

如果业务处理不好可以用分布式事务锁或者使用乐观锁

05SQL的生命周期?关键字的先后顺序?

  1. 应用服务器与数据库服务器建立一个连接
  2. 数据库进程拿到请求sql
  3. 解析并生成执行计划,执行
  4. 读取数据到内存并进行逻辑处理
  5. 通过步骤一的连接,发送结果到客户端
  6. 关掉连接,释放资源
  1. FROM:对 FROM 子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表 VT1。
  2. ON:对 VT1 应用 ON 筛选器,只有那些使为真才被插入到 TV2。
  3. OUTER (JOIN):如果指定了 OUTER JOIN(相对于 CROSS JOIN 或 INNER JOIN),保留表中未找到匹配的行将作为外部行添加到 VT2,生成 TV3。如果 FROM 子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤 1 到步骤 3,直到处理完所有的表位置。
  4. WHERE:对 TV3 应用 WHERE 筛选器,只有使为 true 的行才插入 TV4。
  5. GROUP BY:按 GROUP BY 子句中的列列表对 TV4 中的行进行分组,生成 TV5。
  6. CUTE|ROLLUP:把超组插入 VT5,生成 VT6。
  7. HAVING:对 VT6 应用 HAVING 筛选器,只有使为 true 的组插入到 VT7。
  8. SELECT:处理 SELECT 列表,产生 VT8。
  9. DISTINCT:将重复的行从 VT8 中删除,产品 VT9。
  10. ORDER BY:将 VT9 中的行按 ORDER BY 子句中的列列表顺序,生成一个游标(VC10)。
  11. TOP:从 VC10 的开始处选择指定数量或比例的行,生成表 TV11,并返回给调用者。

06什么是乐观锁?悲观锁?实现方式?

悲观锁:

悲观锁指对数据被意外修改持保守态度,依赖数据库原生支持的锁机制来保证当前事务处理的安全性,防止其他并发事务对目标数据的破坏或破坏其他并发事务数据,将在事务开始执行前或执行中申请锁定,执行完后再释放锁定。这对于长事务来讲,可能会严重影响系统的并发处理能力。 自带的数据库事务就是典型的悲观锁。

乐观锁:

乐观锁(Optimistic Lock),顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。乐观锁适用于读多写少的应用场景,这样可以提高吞吐量。

一般是加一个版本号字段 每次更新时候比较版本号

07大数据情况下如何做分页?

可以参考阿里巴巴java开发手册上的答案

08什么是数据库连接池?

从上一个sql生命周期题目,可以看到其中的连接在里面发挥着重大作用,但频繁的创建和销毁,非常浪费系统资源。由于数据库更适合长连接,也就有个连接池,能对连接复用,维护连接对象、分配、管理、释放,也可以避免创建大量的连接对DB引发的各种问题;另外通过请求排队,也缓解对DB的冲击。

互联网公司面试必问的MySQL题目(下)

什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别?

索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

主键索引:

数据列不允许重复,不允许为NULL.一个表只能有一个主键。

唯一索引:

数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。

可以通过

  1. ALTER TABLE table_name ADD UNIQUE (column); 

创建唯一索引

可以通过

  1. ALTER TABLE table_name ADD UNIQUE (column1,column2); 

创建唯一组合索引

普通索引:

基本的索引类型,没有唯一性的限制,允许为NULL值。

可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引

可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引

全文索引:

是目前搜索引擎使用的一种关键技术。

可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读