7-事务控制篇-5

简介: 事务具ACID四大特性:原子性(全成或全败)、一致性(状态合法)、隔离性(并发互不干扰)、持久性(提交即永久)。索引需注意字段非空、高区分度、长度适中、数量适度(更新频繁表≤3个),过多索引会增空间开销、拖慢增删改性能。

21.简述事务的四大特性?

原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性:指事务开始前和结束后,数据库的完整性约束没有被破坏。 隔离性:指当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 持久性:指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

22.简述创建索引的注意事项?

非空字段:索引字段不能有NULL,如果有NULL值将不会包含在索引中。 索引字段越小越好:数据库的数据存储以页为单位一页存储的数据越多一次IO操作获取的数据越大效率越高。 唯一、不为空、经常被查询的字段 的字段适合建索引。 取值离散大的字段:(变量各个取值之间的差异程度)的列放到联合索引的前面,可以通过count()函数查看字段的差异值,返回值越大说明字段的唯一值越多字段的离散程度高。 限制创建索引的数量:对于存在大量更新操作的表,索引一般不超过3个。

23.为什么索引的数量不能太多?

当对表中的数据进行增加、删除、修改时,同时需要动态维护索引,降低了整体的维护速度。 索引需要占据物理空间,如果要建立聚簇索引,那么需要的空间就会更大,因为会将数据存储于叶子节点。 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

24.简述数据库的行级锁与表锁?

表锁:

不会出现死锁,发生锁的冲突几率高,并发性低。 存储引擎在进行SQL数据读写请求前,会对涉及到的表进行加锁。 其中锁分为共享读锁和独占写锁:读锁会阻塞写,写锁会阻塞读和写。

行级锁:

会出现死锁,发生锁的冲突几率低,并发性高。 InnoDB引擎支持行锁,与Oracle不同,MySQL的行锁是通过索引加载的,也就是说,行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁,此时其它事务无法对当前表进行更新或插入操作。

行级锁注意事项:

行级锁必须有索引才能实现,否则会自动锁全表,那就不是行锁了。 两个事务不能锁同一个索引。 insert,delete,update在事务中都会自动默认加上排它锁。

行锁的适用场景:

避免不可重复读的场景。

25.简述为什么MySQL索引使用B+树而不用hash表和B树?

利用Hash需要把数据全部加载到内存中,如果数据量大,是一件很消耗内存的事,而采用B+树,是基于按照节点分段加载,由此减少内存消耗。 和业务场景有段,对于唯一查找(查找一个值),Hash确实更快,但数据库中经常查询多条数据,这时候由于B+数据的有序性,与叶子节点又有链表相连,他的查询效率会比Hash快的多。 b+树的非叶子节点不保存数据,只保存子树的临界值(最大或者最小),所以同样大小的节点,b+树相对于b树能够有更多的分支,使得这棵树更加矮胖,查询时做的IO操作次数也更少。

目录
相关文章
|
20天前
|
人工智能 IDE API
阿里云DevBox一键部署Hermes Agent与Claude Code:从零搭建AI驱动开发闭环完整教程
2026年,AI驱动开发已经从辅助工具进化为可独立完成全流程任务的数字化开发团队。Hermes Agent与Claude Code的组合,正是当前最成熟、最稳定、最贴近真实工程场景的AI协同开发架构。阿里云基于云开发机DevBox推出的一键部署方案,让普通开发者无需关心底层环境配置,几分钟内即可拥有一支具备需求分析、方案设计、代码编写、调试优化、经验沉淀能力的全天候AI开发团队。
246 5
|
存储 缓存 NoSQL
深入理解Django与Redis的集成实践
深入理解Django与Redis的集成实践
604 0
|
20天前
|
安全 程序员 API
初级程序员必备的十大技能之规范编码与团队协作(二)
教程来源 http://oplhc.cn/ 本指南系统梳理代码审查(Code Review)核心实践:涵盖PR规范、多维检查清单(功能/质量/性能/安全/测试/文档)、建设性评论技巧、健康协作心态,以及README、代码注释、CHANGELOG等文档编写标准,助力团队高效交付高质量、可维护、安全的代码。
|
20天前
|
消息中间件 容灾
6-MQ篇-2
本文详解RabbitMQ延迟队列(TTL+死信交换机/延迟插件)、消息过期设置(队列级与消息级)、死信成因及死信交换机绑定方式,并介绍其高可用机制:普通集群(元数据共享)与镜像集群(全量数据同步、主从容灾)。
95 3
|
20天前
|
负载均衡 算法 NoSQL
5-微服务篇-4
本文详解微服务核心治理技术:Ribbon七大负载均衡策略(默认ZoneAvoidanceRule)及自定义IRule实现;Nacos集中化配置管理;网关层Redis令牌桶限流与Sentinel流控降级;Hystrix/Sentinel断路器三态(closed/open/half-open)熔断机制;以及Feign客户端基于FallbackFactory的服务降级实践。(239字)
118 2
|
20天前
|
消息中间件 负载均衡 Java
5-微服务篇-3
微服务是职责单一、独立部署的轻量级服务。优点:松耦合、语言无关、易扩展;缺点:运维复杂、通信压力大。项目中采用Feign(HTTP同步)与RabbitMQ/Kafka(异步)通信,基于Nacos实现服务注册发现与负载均衡。(239字)
164 1
|
20天前
|
消息中间件 物联网 网络性能优化
6-MQ篇-5
EMQ X 是开源百万级分布式 MQTT 消息服务器,广泛应用于物联网、车联网、智能硬件等领域。支持 QoS 0/1/2 保障消息不丢、不重;提供延迟发布、点对点(共享订阅)与发布订阅模式,并在项目中用于设备通信及微服务间消息传递。(239字)
113 1
|
24天前
|
存储
办公Agent的“询问-澄清”机制:如何处理模糊需求(如“整理上周客户邮件”)
本文揭秘办公Agent如何应对模糊指令(如“整理客户邮件”),提出三层“询问-澄清”机制:①用常识默认值自动填充;②仅聚焦最多3个关键不确定点精准提问;③支持边执行边确认。附真实状态机代码与避坑指南,让Agent像资深助理一样懂分寸、少打扰、真靠谱。(239字)
138 3
|
27天前
|
SQL 缓存 数据库
你还在用LIMIT 1000000,10?献上分页查询优化技巧
本文详解“深分页”陷阱:`LIMIT 1000000,10`为何慢?3种优化方案(游标法、子查询定位、延迟关联)实测提速数十倍,助你零成本提升SQL性能!
|
2月前
|
分布式计算 MaxCompute 流计算
PAI-FeatureStore特征平台的相关问答
本栏目解答FeatureStore常见问题:实时视图时间戳支持BIGINT/TIMESTAMP;ODPS同步需字段完全匹配;Item特征表由关联视图确定;离线视图禁止写入;实时数据查询延迟通常仅数秒。(238字)
205 1