ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java面试题超详细整理

2022-05-24 16:34:32  阅读:207  来源: 互联网

标签:面试题 java log 数据库 事务 InnoDB 详细 范式 redo


数据库三大范式
第一范式: 属性不可再分
第二范式: 在一范式的基础上,消除了部份依赖,属性完全依赖于主键
第三范式: 在二范式的基础上,消除了传递依赖,属性不依赖于其它非主属性 属性直接依赖于主键
数据库中的事务是什么?事务的特性?
事务( transaction) 是一组有序的数据库操作。如果组中的所有操作都成功, 则认为事务成功,提交事务。 如果一个操作失败, 则事务将回滚, 该事务所有操作的影响都将取消。(事务是逻辑上的一组操作,要么都执行,要么都不执行)
事务的特性:ACID
原子性(Atomicity) : 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
一致性(Consistency): 执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;
隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
# 开启一个事务
START TRANSACTION;
# 多条 SQL 语句
SQL1,SQL2...
## 提交事务
ACID靠什么来保证?
原子性:MySQL InnoDB 引擎使用 undo log(回滚日志) 来保证事务的原子性,记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql
一致性:保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。
隔离性:MySQL InnoDB 引擎通过锁机制、MVCC 等手段来保证事务的隔离性( 默认支持的隔离级别是 REPEATABLE-READ )。
持久性:使用 redo log(重做日志) 保证事务的持久性,mysql修改数据的同时在内存和redo log记录这次操作,宕机的时候可以redo log恢复。redo log的刷盘会在系统空闲时进行。
InnoDB redo log写盘,InnoDB事务进入prepare状态。如果前面的prepare成功,binlog写盘,在继续将事务日志持久化到binlog中,如果持久化成功,那么InnoDB事务则进入commit状态(在redo log里面写一个commit记录)

Java入门推荐:https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.337.search-card.all.click

搜索

复制

标签:面试题,java,log,数据库,事务,InnoDB,详细,范式,redo
来源: https://www.cnblogs.com/aibianchengdexiaojiejie/p/16305987.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有