【Java面试】java后端开发岗面试中MySQL数据库相关的常见问题.pdfVIP

【Java面试】java后端开发岗面试中MySQL数据库相关的常见问题.pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【Java⾯试】java后端开发岗⾯试中MySQL数据库相关的常见问题 ⼀、MySQL数据库 1. MySQL范式 第⼀范式: 数据表的列不可再分。 第⼆范式: ⾸先满⾜第⼀范式,并且表中⾮主键列不存在对主键的部分依赖 第三范式: 满⾜第⼆范式,并且表中的列不存在对⾮主键列的传递依赖 2.索引类型 索引是基于B+树的 普通索引:不附加任何限制条件(唯⼀、⾮空等),该类型的索引可以创建在任何数据类型的字段上 唯⼀索引:限制索引的值必须唯⼀,可以更加快的查询某条记录 主键索引:在建表的时候同时创建主键索引 全⽂索引:主要关联在数据类型为char/varchar和text的字段上,以便能够更加快速的查询数据量⽐较⼤的字符串类型的字段 组合索引:所关联的字段不是⼀个字段,⽽是多个字段 3.表的约束 not null:⾮空 default:默认值 unique key (UK):值唯⼀ primary key (PK):主键(⾮空、唯⼀),可以是单字段,也可以是多字段 auto_increment:⾃增,⼀个表中只能有⼀个字段⽤该约束,且必须是整数类型 foreign key(FK):外键,构建两个表之间的参照关系。设置FK约束的字段必须依赖于已存在⽗表的主键,两者数据类型必须⼀致。外 键可以为null 4.内连接、左连接、右连接 内连接 (inner join ):把匹配的关联数据显⽰出来 左连接 (left join ):左边的表全部显⽰出来,右边的表显⽰出符合条件的数据 右连接 (right join ):右边的表全部显⽰出来,左边的表显⽰出符合条件的数据 5. MySQL存储引擎 InnoDB 引擎 :InnoDB 引擎提供了对数据库 acid 事务的⽀持,并且还提供了⾏级锁和外键的约束,它的设计的⽬标就是处理⼤数据 容量的数据库系统。 由于锁的粒度⼩,写操作是不会锁定全表的,所以在并发度较⾼的场景下使⽤会提升效率的 。适⽤于更新和插⼊ 操作频繁的情况。 MyIASM 引擎 :MySQL 的默认引擎,但不提供事务的⽀持,也不⽀持⾏级锁和外键。因此当执⾏插⼊和更新语句时,即执⾏写操作 的时候需要锁定这个表,所以会导致效率会降低 。适⽤于查询操作频繁的情况。 6.事务的ACID特性 事务通常指对数据库进⾏读或写的⼀个操作序列,⽤来保证数据的完整性和⼀致性。 原⼦性(Atomicity ):对于事务所进⾏的数据修改等操作只能是完全提交或完全回滚 ⼀致性(Consistency ):事务在完成时,必须使所有的数据从⼀种⼀致性状态变成另⼀种⼀致性状态 隔离性(Isolation ):⼀个事务中的操作语句所做的修改必须与其他事务所做的修改相隔离 持久性(Durability ):事务完成后,所做的修改对数据的影响是永久的 7. 事务的隔离级别 未提交读:所有的事务都可以看到其他未提交事务的执⾏结果 (会出现幻读、脏读、不可重复读) 提交读:⼀个事务从开始到提交前所做的任何改变都是不可见的,事务只能看见已经提交事务所做的改变 会造成幻读、不可重复读) 可重复读:MySQL的默认事务隔离级别,能确保同⼀事务的多个实例在并发读取数据时,会看到同样的数据⾏ (会造成幻读) 串⾏化:通过强制事务排序,使之不可能相互冲突,从⽽解决幻读问题,即在每个读的数据⾏上加上共享锁实现 8. 脏读、不可重复读、幻读 脏读:某个事务已更新⼀份数据,另⼀个事务在此时读取了同⼀份数据,由于某些原因,前⼀个回滚了操作,则后⼀个事务所读取的数 据就会是不正确的 不可重复读:在⼀个事务的两次查询之中数据不⼀致,这可能是有次查询过程中其他事务更新了原有的数据 幻读:在⼀个事务的两次查询中数据的笔数不⼀致,例如有⼀个事务查询了⼏⾏数据,⽽另⼀个事务却在此时插⼊了新的⼏⾏数据,先 前的事务在接下来的查询中,就会发现有⼏⾏数据是他先前所没有的 9. MySQL的⾏级锁和表级锁 MyISAM 只⽀持表锁,InnoDB ⽀持表锁和⾏锁 ⾏级锁 : 开销⼤,加锁慢,会出现死锁。锁粒度⼩,发⽣锁冲突的概率⼩,并发度最⾼ 表级锁 :开销⼩,加锁快,不会出现死锁。锁粒度⼤,发⽣锁冲突的概率最⾼,并发量最低 10. MySQL性能优化 选择合适的存储引擎 索引优化 优化排序 读写分离 表结构优化(⽔平拆分、垂

文档评论(0)

166****9181 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档