java面试大全面试题09

1.事务具有属性?

ACID属性。

  1. 原子性
  2. 一致性
  3. 持久性
  4. 隔离性

2.Mysql的处理事务方式?

  1. 用begin,rollback,commit来实现
  • begin开始一个事务
  • rololback进行事务的回滚
  • commit提交一个事务
  1. 用set来改变事务的自动提交模式
  • set AUTOCOMMIT=0 禁止自动提交
  • set AUTOCOMMIT=1 可以自动 提交

3.事务的四种隔离级别?

  1. Read UNCOMMITTED
    一个事务读取另一个事务未提交的数据
  2. Read Committed 一个事务要等另一个事务已经 提交以后才可以读取
  3. Read Repeateable
    可重复读,在开始读取事务的时候,不可以进行修改的操作
  4. Serializable 序列化
    是事务的最高的隔离级别,可以避免脏读和不可重复读和幻读,但是
    这个级别的效率低,一般不使用。
    MYSQL默认的是Repeatable read, 而Oracle只支持两种事务隔级别,一个Serializable和 ReadCommited ,默认为Read Commited

4.数据库的并发策略?

一般采用三种方式来进行处理乐观锁,悲观锁,时间戳
乐观锁适用于写比较少的情况下(多读场景)

乐观锁实现的两种机制:
在数据库的表中加上version字段,表示数据库修改的次数,每修改一次加1。
CAS算法:(compare and swap)比较转换算法: 即不使用锁的情况下实现多线程同步。	

5.JDBC操作数据库流程?

  1. 加载数据库驱动Class.forName();
  2. 获取连接DriverManager.getConnection()
  3. 根据Sql获取会话对象, 通过Statement和PrepareStatement.
  4. 获取结果集
  5. 关闭资源(先ResultSet ,在prepareStatement,最后connection)。

6.什么是脏读,不可重复读,可重复读和幻读?

脏读:一个事务正在读取的数据的时候,这个数据正好发生了修改并且没有保存到数据库
幻读:再次查询的数据的条数不一样
1、 不可重复读:

同一个事务中:
id=10行, 字段c1, 第一次查询 c1=0;
id=10行, 字段c1, 第二次查询 c1=1;

因为在第二次查询, 另外一个事务修改了c1=1,且事务提交。

2、 可重复读:

同一个事务中:
id=10行, 字段c1, 第一次查询 c1=0;
id=10行, 字段c1, 第二次查询 c1=0;

无论id=10被读了多少次, c1=0

7.不适合索引使用的场景?

  1. 数据量较少
  2. 更新比较频繁
  3. 区分不明显的字段(如:性别)

8.limit 10000太慢怎么办?

1.建立跟业务的联系
2. order by +索引
3. 可以用延迟关联和子查询进行这个的相关的优化。

9. 并行和并发有什么区别?

并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时间指导毕业设计

觉得写的好的话可以给我打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值