千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:郑州千锋IT培训  >  面试技巧  >  一码当先 千锋郑州Java面试宝典之数据库篇

一码当先 千锋郑州Java面试宝典之数据库篇

来源:千锋教育
发布人:Yolanda
时间: 2019-12-18 17:42:18

  一. MySql的存储引擎有哪些,区别是什么

  MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。

  1、事务安全:

  InnoDB支持事务安全,MyISAM和MEMORY两个不支持。

  2、存储限制:

  InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。

  3、空间使用:

  InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。

  4、内存使用:

  InnoDB和MEMORY对内存使用程度较高,MyISAM对内存使用程度较低。

  5、插入数据的速度:

  InnoDB插入数据的速度较低,MyISAM和MEMORY插入数据的速度较高。

  6、对外键的支持:

  InnoDB对外键支持情况较好,MyISAM和MEMORY两个不支持外键。

  二. 触发器的作用?

  触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

  三. 什么是存储过程?用什么来调用?

  存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

  调用:

  1)可以用一个命令对象来调用存储过程。

  2)可以供外部程序调用,比如:java程序。

  四. 存储过程的优缺点。

  优点:

  1)存储过程是预编译过的,执行效率高。

  2)存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯。

  3)安全性高,执行存储过程需要有一定权限的用户。

  4)存储过程可以重复使用,可减少数据库开发人员的工作量。

  缺点:移植性差

  五. SQL优化的具体操作

  1、尽量避免使用select *,返回无用的字段会降低查询效率。

  优化方式:使用具体的字段代替*,只返回使用到的字段。

  2、尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描。

  优化方式:如果是连续数值,可以用between代替。如果是子查询,可以用exists代替。

  3、尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描。

  优化方式:尽量在字段后面使用模糊查询。

  4、尽量避免进行null值的判断,会导致数据库引擎放弃索引进行全表扫描。

  优化方式:可以给字段添加默认值0,对0值进行判断。

  六. 什么叫视图?游标是什么?

  视图:

  是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表。它使得我们获取数据更容易,相比多表查询。

  游标:

  是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

  七. 视图的优缺点

  优点:

  1对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。

  2)用户通过简单的查询可以从复杂查询中得到结果。

  3)维护数据的独立性,试图可从多个表检索数据。

  4)对于相同的数据可产生不同的视图。

  缺点:

  性能:查询视图时,必须把视图的查询转化成对基本表的查询,如果这个视图是由一个 复杂的多表查询所定义,那么,那么就无法更改数据

  八. 事务的四个特性

  原子性(Atomicity):

  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

  一致性(Consistency):

  事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到。

  隔离性(Isolation):

  隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

  持久性(Durability):

  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

  九. 数据库乐观锁,悲观锁的区别,怎么实现

  悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞挂起直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁,读锁,写锁等,都是在做操作之前先上锁。

  乐观锁(Optimistic Lock),顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改数据,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,乐观锁适用于多读的应用类型,这样可以提高吞吐量。

  两种锁各有优缺点,乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样就可以省去锁的开销,加大系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

  十. 事务的并发问题

  1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

  2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。

  3、幻读:幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>