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锁的类别有哪些郑州看心理医生哪家好http://www.hyde8871.com/

  共享锁:又称读锁,对用户进行数据读操作时,同时加上共享锁。

  排他锁:又称写锁,当用户对数据进行写操作,此时加上排他锁,不允许其它用户再次操作。

  九、数据库产生死锁怎么解决

  死锁是两个以上事务抢夺资源,并请求对方锁定资源,从而导致恶性循环,形成的死锁现象。

  解决方式:

  1、在同一事务中,尽量做到一次锁定所有需要资源,减少死锁概率。

  2、提升锁的级别,由以前表级锁或页级锁,升级到行级锁。

  3、业务比较多的,可以采用分布式事务锁或者乐观锁

  十、什么是乐观锁和悲观锁

  乐观锁:在并发条件下,通过在数据库设置version版本号方式进行数据锁定。

  悲观锁:在并发条件下,使用数据库的锁机制,屏蔽可能违反数据的完整性操作。

posted @ 2021-12-21 13:43  顾延笙  阅读(39)  评论(0编辑  收藏  举报