MySQL QA

Posted 枫本非凡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL QA相关的知识,希望对你有一定的参考价值。

Q:mysql常用的存储引擎有哪些?

A:MyISAM及InnoDB,5.5版本后默认数据库引擎由MyISAM变为InnoDB

Q:MyISAM及InnoDB有什么区别?至少5点

A: ①.InnoDB支持事务,MyISAM不支持

  ②.InnoDB支持外键,MyISAM不支持

  ③.InnoDB支持行级锁,MyISAM支持表级锁

  ④.InnoDB不支持全文索引,MyISAM支持(5.6版本后InnoDB也支持全文索引)

  ⑤.MyISAM数据是以文件形式存储,跨平台数据转移很方便

Q:MyISAM及InnoDB两者select count(*)哪个更快,为什么?

A:MyISAM快,因为其内部维护了一个计数器,可以直接调用,而InnoDB需要扫描全表


Q:MySQL中varchar与char的区别?

A:char是定长,最多存放255个字符;varchar是变长,最大存放字符数由最大有效行(不能超过65535字节)及字符集(gbk:1字符=2字节,utf8:1字符=3字节)确定

Q:varchar(10)与char(10)有什么区别?

A:char(10)表示存储10个字符,如果少于10个则用空格补全,而varchar(10)5.0版本以下是指最多存储10个字节,5.0版本以上是指最多存储10个字符,插入多少字符则存储多少

Q:在满足长度的前提下设计字段长度是选择varchar(255)还是varchar(256)?为什么

A:选择varchar(255),因为如果字符串长度超过255,varchar需要使用两个字节存储字符串长度,小于255时只需要一个字节,可以避免不必要的消耗


Q:数据库事务隔离级别有哪几种?

A:有4种,分别是read uncommitted、read committed、repeatable read、serializable

Q:事务并发时会出现哪几种问题?

A:有3种,分别是脏读、不可重复读、幻读;脏读是指事务A读到事务B未提交的数据;不可重复读是指在事务A多次读取同一个数据,事务B在事务A多次读取过程中对数据做了更改并提交,导致事务A多次读取数据不一致;幻读是指在事务A读取某一范围内的数据,另一个事务B在这个范围内执行插入或者删除操作,事务A发现新的“幻影”行;不可重复读侧重于修改,幻读侧重于新增或删除

Q:4种隔离级别分别会出现哪些并发问题?

A:

隔离级别
脏读(Dirty Read)

不可重复读(Nonrepeatable Read)

幻读(Phantom Read)
Read Uncommitted
读取未提交内容
Read Committed
读取已提交内容
×
Repeatable Read
可重复读
× ×
Serializable
串行化
× × × 

 


Q:MySQL explain命令有什么作用?

A:它可以对select语句进行分析,输出select语句执行的详细信息,以便开发人员优化

Q:explain命令输出的type代表什么?有哪些取值?有什么作用?

A:type代表join类型,它是判断查询是否高效的重要依据,常用的取值有system(表中只有一条数据,特殊的const类型)、const(针对主键或唯一索引查询)、eq_ref(通常出现在多表的join查询,针对主键或唯一索引)、ref(通常出现在多表的join查询,针对非主键索引、非唯一索引或最左前缀规则索引查询)、range(使用索引范围查询)、index(全索引扫描)、all(全表扫描)。它们的性能依次下降

Q:创建联合索引(a,b,c)实际上相当于创建了几个索引?

A:相当于创建了3个索引,即(a)、(a,b)、(a,b,c)

Q:如果用字段b,c或a,c做查询条件能用到联合索引吗?为什么?

A:b、c不能,a,c能用到a列索引。因为联合索引有最左前缀的原则,InnoDB索引实现底层为b+树,是按照从左到右的顺序来建立搜索树的

参考:

1.https://segmentfault.com/a/1190000008131735#articleHeader8

2.http://blog.codinglabs.org/articles/theory-of-mysql-index.html

以上是关于MySQL QA的主要内容,如果未能解决你的问题,请参考以下文章

mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令

mysql(设置/更改mysql密码,连接MySQL,MySQL常用命令,MySQL两种引擎区别)

MySQL教程

MySQL

MySQL

有什么学习MySQL的好教程吗?