![](https://img-blog.csdnimg.cn/8cbf6fd3483d4cb7a3bb2b34295dd8ca.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql 面试题分享
文章平均质量分 84
MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它使用了一种名为Structured Query Language(SQL)的语言进行数据操作和管理。
之乎者也·
机车疾驰在路上,代码飞舞在指尖,热血与逻辑交织,创造属于我的数字世界。
展开
-
JAVA面试题分享五百四十八:SQL都有哪些类型?你怎么回答?
SQL可以大致分为四大类:DDL、DML、DCL和TCL,每一类都在数据库管理中提供独特的功能。DDL(数据定义语言):这种类型侧重于定义和修改数据库对象的结构。关键命令包括CREATE(用于创建新表或数据库)、ALTER(用于修改现有对象)和DROP(用于删除对象)。DML(数据操作语言):DML用于处理数据库中的实际数据。它包括INSERT(添加新数据)、UPDATE(修改现有数据)、DELETE(删除数据)和SELECT(查询和检索数据)等命令。DCL(数据控制语言):DCL管理对数据库的访问。原创 2024-02-18 21:43:33 · 864 阅读 · 0 评论 -
JAVA面试题分享五百三十八:SQL技巧:表关联及优化
在步入主题之前我们先了解一下数据库的“实体”和“关系”。在数据库中,我们经常听到“”和“”的概念,这分别来自于实体-关系模型(ER模型)的两个基本要素。为了帮助大家更好地理解它们,将详细地介绍“实体”和“关系”。原创 2024-02-18 14:47:46 · 1034 阅读 · 0 评论 -
JAVA面试题分享五百三十七:如何处理SQL中的NULL值
当我们需要查询某个字段值为NULL的数据时,我们不能使用普通的等号(=)运算符,而应该使用特定的IS NULL条件。需要注意的是,对于其他聚合函数,如SUM()、 MAX()、MIN(),、COUNT()和 AVG(),它们会忽略掉NULL值,这意味着NULL值不会被计入统计结果。但需要注意,由于Oracle的特性,默认情况下,如果一个字段包含空字符串,Oracle可能会将其视为NULL。可以看到,对于id为5和6的记录,它们的工资都为NULL,因此,GROUP BY会将它们视为相同,并归入同一组。原创 2024-02-18 13:11:40 · 383 阅读 · 0 评论 -
JAVA面试题分享五百三十六:如何获取一条SQL语句中涉及的表名
在数据库操作和SQL查询的开发过程中,有时候我们为了动态生成查询、进行权限控制、进行查询优化或者其他一些与数据库交互相关、数据库监控等的需求,需要从SQL语句中提取表名。本文分别使用正则表达式和使用SQL解析库的方式来获取。当然实际使用中需要进行优化,本次只是做初步的获取操作。原创 2024-02-18 12:48:11 · 820 阅读 · 0 评论 -
JAVA面试题分享五百三十二:count(*) count(id) count(1)
使用 `COUNT(1)` 时会比使用 `COUNT(*)` 效率更高,因为它不需要扫描整个表的所有列。- `COUNT(*)`:`COUNT(*)` 是一种特殊的语法,它返回结果集中的行数,不考虑任何列的值。- `COUNT(*)`:`COUNT(*)` 是一种特殊的语法,它会扫描整个表的所有行,不考虑任何列的值。根据函数解释可以知道,count(*),count(1),count(主键id)都表示满足条件的总行数,而count(字段)表示满足条件的总行数里面参数 “字段” 不为NULL的总个数。原创 2024-02-17 11:19:15 · 989 阅读 · 0 评论 -
JAVA面试题分享五百零五:SQL如何实现数据表行转列、列转行?
数据表示例数据分别如下:data_learning.product_order(商品销量表):data_learning.product(商品信息表): data_learning.product_category(商品二级分类信息表):问题:请查询女裙和儿童家具的销量,输出结果形式为女裙销量作为一列,儿童家具作为一列。SQL:结果如下:同样是上面那个问题,用第二种方式如何实现呢?SQL:结果如下:在实际工作中,使用场景可能比这个复杂。比如“请查询每个月女裙和儿童家具地销量,输出结果形式为原创 2024-02-16 10:31:28 · 623 阅读 · 0 评论 -
JAVA面试题分享四百九十九:记一个MySQL插入死锁问题
则不同,因为全表扫描的逐步S锁,导致一段时间后,整张表都被锁住,使得我们的新的会话的插入语句的事务无法提交。进行数据迁移时,无比考虑读写锁的工作机制,以及迁移可能导致的锁的粒度和范围,只有精确的评估风险点才能保证功能上限不影响正常业务的工作。这里为了演示问题,笔者生成了一张带有500w数据的数据表,对应。稍微久等了一小会,输出语句如下,可以看到一张表数据刚刚好达到。,表结构是一样的,唯一区别就是表名后缀多了个。的过程,随着时间的推移它最终就会变为全表锁。的表是用于迁移备份数据的,由此可以得出,再使用数据。原创 2024-02-07 16:28:57 · 396 阅读 · 0 评论 -
JAVA面试题分享四百九十四:如何设计库表结构?
这种设计的一个主要问题是,在数据量大的情况下,查询一个用户的所有好友可能会影响性能。设计时需要注意数据同步、数据一致性以及故障恢复等方面的挑战,并结合你的具体业务需求和系统架构进行适当的设计。在数据库设计中,存储地区信息是一个常见的问题,它通常涉及如何平衡查询效率、存储空间以及数据维护的易用性。当然,真实世界的数据库可能要复杂得多,需要进一步的规范化和优化以适应不断变化的需求和数据体量。需求分析: 确定数据库需要存储哪些数据,这些数据是如何被查询和更新的,以及数据之间存在什么样的关联。原创 2024-02-07 10:41:03 · 958 阅读 · 0 评论 -
JAVA面试题分享四百九十二:MySQL · 引擎特性 · InnoDB崩溃恢复
数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证。本文仔细剖析了InnoDB的崩溃恢复流程,代码基于5.6分支。InnoDB实现了一套完善的崩溃恢复机制,保证在任何状态下(包括在崩溃恢复状态下)数据库挂了,都能正常恢复,这个是与文件系统最大的差别。原创 2024-02-07 10:09:13 · 885 阅读 · 0 评论 -
JAVA面试题分享四百九十一:MySQL · 引擎特性 · InnoDB Buffer Pool
InnoDB的Buffer Pool可以认为很简单,就是LRU List和Flush List,但是InnoDB对其做了很多性能上的优化,例如减少加锁范围,page hash加速查找等,导致具体的实现细节相对比较复杂,尤其是引入压缩页这个特性后,有些核心代码变得晦涩难懂,需要读者细细琢磨。原创 2024-02-07 09:40:04 · 840 阅读 · 0 评论 -
JAVA面试题分享四百六十三:解密数据清洗,SQL中如何准备数据以进行分析
希望你理解了相关的数据清洗任务如何提高数据质量并促进更相关的分析。同时已经学会了如何检查缺失值、重复记录、不一致的格式、异常值等。尝试创建自己的关系型数据库表,并运行一些查询来执行常见的数据清洗任务。原创 2024-02-05 10:07:47 · 740 阅读 · 0 评论 -
JAVA面试题分享四百六十二:说一下Mysql中from多表跟join表的区别
由上述我们可以看出在Mysql中使用FROM查询多表和使用JOIN连接,查询结果以及查询效率是一样的。但是我们最好还是使用INNER JOIN,它的写法更直观、更易于优化器理解,有助于生成更优化的执行计划。原创 2024-02-05 09:29:52 · 1040 阅读 · 1 评论 -
JAVA面试题分享四百六十一:Mysql中EXISTS与IN有哪些使用差异?
在数据库查询优化中,查询效率直接关系到应用程序性能。其中,IN和EXISTS是两种常见的子查询操作符,广泛应用于SQL查询语句,但它们在执行效率上有所不同。本文深入探讨IN和EXISTS的工作原理,以及在何种情境下选择更为合适。通过对这两种操作符的详细分析,揭示它们在实际应用中的优缺点,一起了解如何在数据库查询中灵活运用IN和EXISTS,以优化查询语句的执行。原创 2024-02-05 09:08:50 · 2531 阅读 · 0 评论 -
JAVA面试题分享四百四十七:六个案例搞懂间隙锁
在本文中,我们讨论了间隙锁的加锁规则。间隙锁是MySQL中用于保护范围查询和防止并发问题的重要机制,了解间隙锁的加锁规则对于优化数据库性能、减少数据冲突以及提高并发性能非常重要。原创 2024-02-04 10:17:42 · 931 阅读 · 0 评论 -
JAVA面试题分享四百四十六:说说MVCC的执行原理?
MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于解决数据库并发访问中,数据一致性问题。它通过在读写操作期间保存多个数据版本,以提供并发事务间的隔离性,从而避免了传统的锁机制所带来的资源争用和阻塞问题。所谓的一致性问题,就是在并发事务执行时,应该看到那些数据和不应该看到那些数据。在 MVCC 机制中,每个事务的读操作都能看到事务开始之前的一致性数据快照,而不受其他并发事务的修改的影响。核心思想是通过创建多个数据版本,保持事务的一致性和隔离性。原创 2024-02-04 09:10:45 · 1006 阅读 · 0 评论 -
Flink 内容分享(二十三):Doris Connector 结合 Flink CDC 实现 MySQL 分库分表 Exactly Once精准接入
并使用增量快照算法逐个读取每个chunk的数据。在分布式系统中,为了让每个节点都能够感知到其他节点的事务执行状况,需要引入一个中心节点来统一处理所有节点的执行逻辑,这个中心节点叫做协调者(coordinator),被中心节点调度的其他业务节点叫做参与者(participant)。Flink CDC 基于数据库日志的Change Data Caputre 技术,实现了全量和增量的一体化读取能力,并借助 Flink 优秀的管道能力和丰富的上下游生态,支持捕获多种数据库的变更,并将这些变更实时同步到下游存储。原创 2023-12-31 14:07:58 · 2214 阅读 · 0 评论 -
架构设计内容分享(十二):25Wqps高吞吐写Mysql,100W数据4秒写完,如何实现?
当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下,批量处理比单独提交处理更有效率addBatch(String):添加需要批量处理的SQL语句或是参数;executeBatch():执行批量处理语句;clearBatch():清空缓存的数据通常我们会遇到两种批量执行SQL语句的情况:多条SQL语句的批量处理;一个SQL语句的批量传参;原创 2023-12-21 09:25:56 · 876 阅读 · 0 评论 -
Redis面试题分享四十二:MySQL 里有 2000w数据,redis 中只存 20w的数据,如何保中的数据都是热点数据?
其实这道题目考察的是大家对Redis的淘汰策略的掌握程度,在一个就是你的解题思想。原创 2023-11-14 11:12:43 · 398 阅读 · 0 评论 -
Redis面试题分享十:Redis 与 MySQL如何保证双写一致性?
在这样一个架构中,会出现一个问题,就是一份数据,同时保存在数据库和Redis 里面,当数据发生变化的时候,需要同时更新 Redis 和 Mysql,由于更新是有先后顺序的,并且它不像 Mysql 中的多表事务操作,可以满足 ACID 特性。所以就会出现数据一致性问题。Redis与MySQL双写一致性是指。原创 2023-11-09 22:53:21 · 314 阅读 · 0 评论 -
JAVA面试题分享四百一十五:分析一个5M的SQL占用70GB内存
回答最后一个问题:“为什么5M的SQL可以把内存打到70GB?绝大部分内存是在生产执行计划期间消耗的,planner申请了大量的内存,并且work_mem,hash_mem_multiplier只能限制到排序操作和hash操作,对于planner过程中的其他内存操作还无法限制,planner本身产生的plan tree并不大,但是申请内存时存在大量的内存空洞,导致本身M级的数据(元数据、parse tree、plan tree等等)存储在G级的内存中。原创 2024-02-02 09:43:19 · 767 阅读 · 0 评论 -
JAVA面试题分享四百一十一:MySQL 正式引入 JavaScript 支持
要在MySQL中创建JavaScript存储过程,你可以使用用于传统存储函数和存储过程的SQLreturn x;$$;从上面的示例中可以看出,JavaScript代码直接嵌入在SQL可调用函数的定义中。参数的名称可以直接在JavaScript代码中引用,在调用函数时,SQL类型和JavaScript类型之间会进行隐式类型转换。要调用JavaScript存储过程,应使用CALL语句,类似于常规SQL存储过程。存储过程支持输入和输出参数。原创 2024-02-01 20:15:25 · 831 阅读 · 0 评论 -
JAVA面试题分享三百九十七:无中断升级1200多台MySQL服务器,GitHub是如何做到的
15 年前,GitHub 还只是一个使用单个 MySQL 数据库的 Ruby on Rails 应用。自那时起,为了满足平台的扩展性和可靠性需求,GitHub 的 MySQL 架构发生了变化,包括 构建高可用性、实现测试自动化 和 数据分区 等。如今,MySQL 仍然是 GitHub 基础设施的核心组成部分,也是我们在关系型数据库方面的主要选择。本文将分享我们将 1200 多台 MySQL 主机升级到 8.0 的故事。原创 2024-01-31 20:14:19 · 883 阅读 · 0 评论 -
JAVA面试题分享三百九十六:迁移MySQL到openGauss,DataKit讲解
DataKit是一个以资源(物理机,数据库)为底座的开发运维工具,将上层的开发运维工具插件化,各插件之间相互独立,方便用户按需引入。各插件围绕DataKit的资源中心进行扩展开,完成数据库的运维,监控,迁移,开发,建模等复杂的操作。MySQL迁移全流程包括全量迁移、全量校验、增量迁移、增量校验和反向迁移五个阶段,每个阶段都由单独的工具完成。迁移portal集成了所有的迁移和校验工具,实现工具的安装、启停、维护等能力,并实现了迁移任务的编排;原创 2024-01-31 20:02:03 · 394 阅读 · 0 评论 -
JAVA面试题分享三百八十七:慢SQL处理方案
-查询最近10000条SQL历史记录,并按照耗时倒序排列。--查询,显示系统自启动以来执行时间最长的300条SQL语句。--历史sql EXEC_TIME 执行时间(MS) MAX_MEM_USED 内存使用峰值(K)。--目前sql。原创 2024-01-31 11:27:22 · 473 阅读 · 0 评论 -
JAVA面试题分享三百七十四:InnoDB的页合并与页分裂到底是什么
虽然从理论上是可行的,但是在实操中,这时候InnoDB就需要先遍历确认next page是否有空余位置,甚至是继续遍历直至找到有空余位置的页,然后进行数据迁移,这个操作可能带来大量遍历的时间复杂度以及数据复制的IO操作,因此,方案不可行。数据页的数据会按照主键的顺序来排序,这也是我们在设计表主键时设置为AUTO_INCREMENT的原因,这样在频繁插入时,写入的数据尽可能的写入相同的页,写满后刷盘也可以是顺序写。数据页可以容纳2-N行数据行,行的数量取决于数据行的大小;原创 2024-01-30 09:46:15 · 954 阅读 · 0 评论 -
JAVA面试题分享三百六十六:图解MySQL中的各种JOIN
表关联是频率非常高的一种数据库操作,在MySQL中,这种JOIN操作有很多类型,包括内联接、左外连接、右外连接等等,而每种连接的含义都不一样,如果死记硬背,不仅很难记住,而且也容易搞混淆,今天我们尝试使用图解的方式来讲解各种连接的内涵,因为结合了具体的例子,相信会让大家印象深刻。它返回了客户表(右表)中的所有数据,对于客户id为2的记录,订单表中没有对应的数据,所以相应的字段值为NULL。可以看出,左连接返回了左表的数据,对于客户id为26的记录,在客户表中并不存在,所以它们的值为NULL。原创 2024-01-27 19:07:48 · 781 阅读 · 0 评论 -
JAVA面试题分享三百六十一:一文弄懂Join语句优化
所以使用 inner join 时,前面的表并不一定就是驱动表。Block Nested-Loop Join(BNL) 算法的思想是:把驱动表的数据读入到 join_buffer 中,然后扫描被驱动表,把被驱动表每一行取出来跟 join_buffer 中的数据做对比,如果满足 join 条件,则返回结果给客户端。一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中取到关联字段,根据关联字段在另一张表(被驱动表)里,通过索引匹配,取出满足条件的行,然后取出两张表的结果合集。原创 2024-01-27 15:23:50 · 931 阅读 · 0 评论 -
JAVA面试题分享三百三十九:MySQL如何保证双十一的主备数据同步
主库在接到客户端更新请求时,执行内部事务的更新逻辑,同时写binlog。r1)edo log commit后,才会回复客户端ack;2)binlog写成功后就可以同步备库,因为binlog写盘成功后,就算后续commit失败,数据库也可以根据redo log+binlog重新恢复commit状态;备库与主库之间维护一个长链接,有专门的线程来发送或者接收请求。原创 2024-01-26 09:18:16 · 881 阅读 · 0 评论 -
JAVA面试题分享三百零九:int(1) 和 int(10) 的区别?
int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。原创 2023-12-19 10:17:43 · 340 阅读 · 0 评论 -
JAVA面试题分享三百零八:什么是数据库范式,为什么要反范式?
数据库范式是关系数据库设计中的一种规范,用于规范化数据库结构,减少数据冗余、提高数据完整性和一致性。数据库范式分为多个级别,常见的有三个范式:第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。第一范式(1NF)要求数据库表中的属性具有原子性,不能再被拆分。例如,地址如果被拆分成省、市、区、街道、小区等多个字段,符合第一范式;如果地址只是一个字段,就不符合第一范式。第二范式(2NF)要求数据库表中的每个实例或记录必须可以通过唯一的主键进行区分。换句话说,就是要有主键,每个字段都必须依赖于主键。原创 2023-12-19 09:56:05 · 933 阅读 · 0 评论 -
JAVA面试题分享三百零六:Mysql如何定位慢查询,以及SQL语句执行很慢, 如何分析呢?
介绍一下当时产生问题的场景(我们当时的一个接口测试的时候非常的慢,压测的结果大概5秒钟)我们系统中当时采用了运维工具( Skywalking ),可以监测出哪个接口,最终因为是sql的问题在mysql中开启了慢日志查询,我们设置的值就是2秒,一旦sql执行超过2秒就会记录到日志中(调试阶段)原创 2023-12-19 08:49:05 · 886 阅读 · 0 评论 -
JAVA面试题分享二百九十九:MySQL为何需要4M来双写?为什么redo不双写?
Doublewrite Buffer是InnoDB的一个重要特性,用于保证MySQL数据的可靠性和一致性。它的实现原理是通过将要写入磁盘的数据先写入到Doublewrite Buffer中的内存缓存区域,然后再写入到磁盘的两个不同位置,来避免由于磁盘损坏等因素导致数据丢失或不一致的问题。总的来说,Doublewrite Buffer对于改善数据库性能和数据完整性起着至关重要的作用。尽管其引入了一些开销,但在大多数情况下,这些成本都被其提供的安全性和可靠性所抵消。原创 2023-12-18 17:19:03 · 873 阅读 · 0 评论 -
JAVA面试题分享二百九十八:数据库性能太差,有哪些调优方案?
减少数据量用空间换性能选择合适的存储系统数据总量、高负载、查找的时间复杂度。这里大概解释下收益类型:短期收益,处理成本低,能紧急应对,久了则会有技术债务;长期收益则跟短期收益相反,短期内处理成本高,但是效果能长久使用,扩展性会更好。静态数据意思是,相对改动频率比较低的,也无需过多联表的,where过滤比较少。动态数据与之相反,更新频率高,通过动态条件筛选过滤。原创 2023-12-18 17:15:59 · 920 阅读 · 0 评论 -
JAVA面试题分享二百九十六:分库分表后,查询太慢了,如何优化?
但由于每个结果集的记录是有序的,因此Sharding-JDBC每次仅获取各个分片的当前结果集记录,驻留在内存中的记录仅为当前路由到的分片的结果集的当前游标指向而已。因此进行结果归并时,只能从获取的90,80,85和75之中进行归并,那么,无论怎么实现,结果归并之后,都不可能获得正确的结果。第一遍的目标是啥,查出来的最小的 create_time 和最大的 create_time 找出来,然后再去三个表里查询,通过图中所示,想要取得两个表中共同的按照分数排序的第2条和第3条数据,理论上,应该是95和90。原创 2023-12-18 17:03:37 · 1380 阅读 · 0 评论 -
JAVA面试题分享二百九十二:62条SQL优化策略
使用索引字段和 ORDER BY子句 LIMIT M,N 实际上可以减缓查询在某些情况下,有节制地使用,在 WHERE 子句中使用 UNION 代替子查询,在重新启动的 MySQL,记得来温暖你的数据库,以确保数据在内存和查询速度快,考虑持久连接,而不是多个连接,以减少开销。基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询,当负载增加在服务器上,使用 SHOW PROCESSLIST 查看慢的和有问题的查询,在开发环境中产生的镜像数据中测试的所有可疑的查询。原创 2023-12-18 12:15:58 · 1002 阅读 · 0 评论 -
JAVA面试题分享二百九十一:如何保障 MySQL 和 Redis 数据一致性?
Cache-Aside Pattern(旁路缓存)模式,又叫旁路路由策略,在这种模式中,读取缓存、读取数据库和更新缓存的操作都是在应用程序中完成。此模式是业务系统最常用的缓存策略。旁路缓存又模式分为读缓存和写缓存。旁路缓存模式在读的时候,先读缓存,缓存命中的话,直接返回数据;如果缓存没有命中的话,就去读数据库,从数据库取出数据,放入缓存后,同时返回响应。Cache-Aside Pattern(旁路缓存)模式读操作流程,具体如下:step 1:应用程序接收用户的数据查询的请求;原创 2023-12-18 11:55:52 · 1046 阅读 · 0 评论 -
JAVA面试题分享二百八十八:知道MySQL的WAL、LSN、Checkpoint 吗?
日志空间中的每条日志对应一个LSN值,而在数据页的头部也记录了当前页最后一次修改的LSN号,每次当数据页刷新到磁盘后,会去更新日志文件中checkpoint,以减少需要恢复执行的日志记录。极端情况下,数据页刷新到磁盘成功后,去更新checkpoint时如果宕机,则在恢复过程中,由于checkpoint还未更新,则数据页中的记录相当于被重复执行,不过由于在日志文件中的操作记录具有幂等性,所以同一条redo log执行多次,不影响数据的恢复。原创 2023-12-17 23:22:21 · 875 阅读 · 0 评论 -
JAVA面试题分享二百八十六:order by 调优思路是啥?
第1步:索引的查找根据where 后面的字段,进行 二级索引的查找,找到后再回表 聚集索引,拿到需要的字段第2步:原始数据的排序原始数据的数据, 并不是按照 order by 有序的。所以,需要按照 order by 字段,进行排序。接下来,排序的地点在哪里呢? 优先选择内存。因为内存的性能高。 如果原始的数据实在规模太大,就借助磁盘进行排序。用于排序的内存,称为 sort_buffer。其实 MySQL 会给每个线程分配一块内存用于排序的 sort_buff原创 2023-12-17 18:10:01 · 897 阅读 · 0 评论 -
JAVA面试题分享二百八十四:说说MySQL一条SQL语句的执行过程?
MySQL会检查查询缓存,如果所需查询的结果已经存在于缓存中,便直接返回缓存结果,从而省略后续的查询过程。需要指出的是,MySQL采用分层架构,其中连接器、查询缓存、解析器、优化器、执行器等功能属于Server层,而存储引擎主要负责数据存储和检索。会根据查询语句的结构、表的统计信息等因素,生成多个可能的执行计划,并通过成本估算器选出最优的执行计划。这一步旨在提高查询效率,降低资源消耗。MySQL优化器根据查询语句的结构、表的统计信息等因素,生成多个可能的执行计划,并通过成本估算器挑选出最优的执行计划。原创 2023-12-17 17:33:04 · 809 阅读 · 0 评论 -
JAVA面试题分享二百八十三:什么是数据库事务?InnoDB一次事务的执行过程?
数据库事务( transaction) 是指作为一个逻辑工作单元执行的一系列数据库操作,这些操作要么全部成功,要么全部失败,是一个不可分割的工作单元。事务是在事务开始和事务结束之间执行的一系列数据库操作。事务的目的是确保数据库操作的一致性和完整性,同时提供对并发访问的隔离性和恢复能力。注意:请点击图像以查看清晰的视图!原子性(Atomicity):事务中的操作要么全部成功,要么全部失败,不存在部分成功的情况。例如,在转账操作中,要么全部完成,要么全部取消,以确保资金的一致性。原创 2023-12-17 16:41:56 · 846 阅读 · 0 评论