MySQL高级开发面试题二

说一说你对视图的了解

视图是一种虚拟的表,具有和物理表相同的功能!视图通常是有一个表或者多个表的行和列的子集!视图可以做修改,但是不建议!可以提高重用性、简化查询:比如要从俩张表获取信息,可以改为从视图中直接获取。

说一说drop、delete、truncate

这三个都表示删除!delete和truncate只删除表的数据,不删除表结构。drop删除表结构!速度一般来说:droptruncatedeletedelete是dml语句,事务提交后才会生效!drop、truncate操作是ddl,直接生效,无事务的说法!MyISAM,InnoDB的truncate操作会重置auto_increment的值为1。delete如果清空整个表,重启后的auto_increment会从SELECT1+MAX(ai_col)FROMt开始。

MySQL有哪些隔离级别,默认隔离级别是什么?

MySQL隔离级别.png

MySQL默认的隔离级别是可重复读

说一说事务的4个特性

原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。重点是操作!一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。重点是数据!隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

如何查询sql的执行计划

使用explain+sql语句

MySQL索引的原理是什么?

核心点:索引是帮助MySQL高效获取数据的排好序的数据结构InnoDB默认的是使用B+Tree以索引记录20个字节、一行记录1kb计算,一个3层B+Tree可以存放至少万数据。将第一层与第二层的也放在缓存中,mysql在定位一条数据的时候,只需要一次随机IO就可以找到。mysql的页是连续存放在磁盘上,由于mysql的预读机制,查询一个范围的时候,可以将大量随机IO变为顺序IO,从而大幅度的提高性能!

索引的类型有什么?

普通索引:加速查询组合(联合)索引:加速查询唯一索引:建议使用hash,InnoDB中可以有多个null,可以加速查询,列值唯一主键索引:不能为null,列值唯一,表中只有一个全文索引:对文本内容分词,进行搜索(只有MyISAM引擎支持)

in和exsits有什么去区别?

核心点:小表驱动大表,即小的数据集驱动大的数据集in:in里面的数据较小,in优于existsexists:exists数据量较大,exists优于in。数据量差不多的时候,这俩个的效率也差不多

VARCHAR(N)实际能存多少数据

如果可以为null,值需要一个字节去区分是不是为null如果N大于,需要俩个字节去记录长度UTF-8一个字符三个字节,实际字符需要除以3

说一说MySQL中InnoDB引擎的行级锁

只有通过索引条件检索数据,才会使用行级锁,否则使用表级锁。行级锁加在索引上!

MySQL高级开发面试题(一)




转载请注明:http://www.aierlanlan.com/grrz/4762.html