java面试题-通俗易懂的解释mysql相关问题

Posted weixin_40228600

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试题-通俗易懂的解释mysql相关问题相关的知识,希望对你有一定的参考价值。

一、mysql存储引擎MYISAM与InnoDB区别
1、MYISAM需要的存储空间小;InnoDB需要更多的内存和存储空间。
2、MYISAM不支持事务;InnoDB支持事务。
3、MYISAM在select查询更快,内部有计数器,可直接调取;InnoDB没有。
4、MYISAM支持表级锁定;InnoDB不仅支持表级锁定,而且支持行级锁定,所以也支持高并发。

二、什么是索引,为什么要建立索引
索引好比书中的目录,通过目录查找数据里面的具体内容,在数据表里面作为指针存在;
优点加快检索的速度,提高系统性能,缺点索引需要占用磁盘物理空间,对表进行维护,在表中进行添加、修改、删除操作时,索引需要动态的维护,所以会降低执行效率。

三、MYSQL索引有哪几种类型
主键索引:每个表只有一个主键索引,表示数据列不能重复。
唯一索引:数据列不允许有重复,但可以为NULL值。
普通索引:就是一般索引,没有任何限制。
全文索引:主要用来查找文本中关键字,相当于搜索引擎。

四、索引的原理,创建索引的原则
就是把无序的记录变成有序的查询结果。
原则:
1、经常更新的字段,不适合做索引
2、查询字段频繁的操作,适合建立索引
3、组合索引,按左查询匹配原则
4、有外键的列一定要建立索引
5、对于字段text、image内容涉及比较多的,不适合做索引

五、数据库事务的四大特性有哪些
1、原子性:事务执行的最小单位,代表执行要不全部完成,要不都没完成。
2、一致性:执行事务后,数据保持一致。
3、隔离性:数据在并发执行下,事务间的访问是独立存在的。
4、持久性:事务提交后,数据的改变是持久不变的,不因外界因素改变,比如断电、数据库发生故障等。

六、什么是脏读、幻读
脏读:某个事务已进行了更新,但读到的数据还是以前的数据。
幻读:某个事务执行查询操作后,出现前后查询不一致的数据。

七、什么是行级锁、表级锁、页级锁
行级锁:是锁粒级别最细的锁,但加锁的开销最大,针对表中的行进行加锁。
表级锁:是锁粒级别最大的锁,针对整张表进行加锁,实现简单,资源消耗少。
页级锁:是介于行级锁、表级锁之间的锁,用来锁定相邻的一组记录。

八、MySQL锁的类别有哪些
共享锁:又称读锁,对用户进行数据读操作时,同时加上共享锁。
排他锁:又称写锁,当用户对数据进行写操作,此时加上排他锁,不允许其它用户再次操作。

九、数据库产生死锁怎么解决
死锁是两个以上事务抢夺资源,并请求对方锁定资源,从而导致恶性循环,形成的死锁现象。
解决方式:
1、在同一事务中,尽量做到一次锁定所有需要资源,减少死锁概率。
2、提升锁的级别,由以前表级锁或页级锁,升级到行级锁。
3、业务比较多的,可以采用分布式事务锁或者乐观锁

十、什么是乐观锁和悲观锁
乐观锁:在并发条件下,通过在数据库设置version版本号方式进行数据锁定。
悲观锁:在并发条件下,使用数据库的锁机制,屏蔽可能违反数据的完整性操作。

以上是关于java面试题-通俗易懂的解释mysql相关问题的主要内容,如果未能解决你的问题,请参考以下文章

通俗易懂---关于java基础语法面试题

PHP面试题通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

爬取知乎如何通俗易懂地解释「协方差」与「相关系数」的概念?

Java阿里等大厂面试题汇总,值得收藏!

通俗易懂的解释什么是面向对象

通俗易懂谈机器学习