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相关问题的主要内容,如果未能解决你的问题,请参考以下文章