MySQL索引事务

ops/2024/12/19 16:58:02/

1.索引

索引的作用类似书籍目录,可以用于快速定位,检索数据

可以对数据库表的某列或者某几列创建索引

索引针对查询操作引入的优化手段,但生成索引也会占用更多的空间

对于插入/删除/修改频率高的表不适用索引

使用场景

数据量大,经常对这些列进行条件查询

2.查看/创建/删除索引

创建主键约束,唯一约束,外键约束时,会自动创建对应列的索引

查看索引

show index from 表名;

 

创建索引

create index 索引名 on 表名(字段名);

 

删除索引

drop index 索引名 on 表名;

2.事务

问题:转账 如果执行一半程序崩溃/数据库崩溃...

开发中经常会涉及到一些需要'一气呵成'完成一些操作的场景

事务可以把多个sql打包成一个整体,确保这些sql语句要么全部执行,要么"一个不执行"(翻新回滚).引入事务可以避免上述问题

使用

1)开启事务:start transaction;

2)执行多条sql语句

3)回滚或提交 rollback/commit  rollback(全部失败) commit(全部成功)

回滚依据日志记录事物的关键操作实现

 

start transaction;update accout set money=money-2000 where name = '阿里巴巴';update accout set money=money+2000 where name = '四十大盗';commit;

 

事务特性

1)原子性 回滚的方式 保证这一组操作都能执行正确或者全部执行失败恢复如初

2)一致性:事务执行之前和执行之后要合理

3)持久性:事务做出的修改在硬盘上持久保存,重启服务器,事务执行的修改仍然有效

4)隔离性:数据库并发执行多个事务会出先一些问题,并发(一个服务器给多个客户端提供服务)

数据库服务器执行效率高就要提高并发程度,但可能会导致数据出现错误的情况

a.脏读问题

一个事务A在写数据的过程中.事务B读取了同一个数据,接下来事务A修改了数据,导致事务B之前读到的数据是一个无效的数据(脏数据)

解决:针对写操作加锁,事务A确认写完后事务B在读(并发性降低了,隔离性提高,效率降低,数据准确性提高)

b.不可重复读

并发执行事务过程中,事务A在内部多次读取同一个数据的时候,出现不同的情况,例(上述问题中,事务B读取数据的时候,事务A(加了写数据锁)修改数据又再次提交,事务A在事务B读的时候写),一个事务内部两次读,结果不一样,

解决:给读操作加锁,(约定事务B读的时候,事务A不能修改)(并发性进一步降低了,隔离性进一步提高,效率进一步降低,数据准确性进一步提高)

c.幻读

事务B执行两次读取操作,数据内容没改变,但是结果集变了(事务B读取m文件时,事务A不能修改m文件,但是事务A在写n文件,事务B结果发现n文件)

解决:保持绝对的串行执行事务,完全没有并发,事务B在读的时候,事务A什么也不干,隔离性最高,数据最准确

可以在mysql配置文件中,修改数据库的隔离级别,适应不同场景的需求

read uncommitted(读未提交) 并发程度最高

read committed(读已提交) 引入写加锁

repeatable read(可重复读) 引入写加锁和读加锁

serializable(串行化) 


http://www.ppmy.cn/ops/143231.html

相关文章

Jsckson @JsonValue 注解

概述 Jackson 是一个常用的 Java 库,用于将 Java 对象转换为 JSON 表示形式,并可以反向操作。有时,我们需要以自定义的方式序列化 Java 对象。Jackson 的JsonValue 注解通过允许使用单个方法的返回值作为对象的序列化表示来实现这一点。 Jso…

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…

如何查询SQL Server数据库服务器的IP地址

如何查询SQL Server数据库服务器的IP地址 作为数据库管理员或开发人员&#xff0c;了解如何查询SQL Server数据库服务器的IP地址是一项重要技能。本文将介绍几种简单而有效的方法&#xff0c;帮助你轻松获取这一信息。无论你是新手还是经验丰富的专业人士&#xff0c;这些方法…

RequestContextHolder 与 HttpServletRequest 的联系

1. 什么是 RequestContextHolder&#xff1f; RequestContextHolder 是 Spring 框架 提供的一个工具类&#xff0c;用于在当前线程中存储和获取与请求相关的上下文信息。它是基于 ThreadLocal 实现的&#xff0c;能够保证每个线程独立存储和访问请求信息。 与 HttpServletReq…

【安当产品应用案例100集】032-重塑企业SaaS平台的PostgreSQL凭据管理体系

一、案例背景 在本次案例分享中&#xff0c;一家为旅行社提供SaaS服务的技术服务商&#xff0c;其依赖PostgreSQL作为其核心数据存储解决方案&#xff0c;并且在阿里云和内网环境中均部署了相关服务与数据库实例。随着业务的发展和技术团队规模的扩大&#xff0c;当前的数据库…

富士相机基本参数学习

一色彩 富士相机视频调色入门课&#xff3b;上&#xff3d;&#xff5c;胶片模拟&#xff0c;白平衡与色彩&#xff5c;全是样片哦_哔哩哔哩_bilibili 步骤&#xff1a; 1设置曝光模式&#xff1a; 自动模式下拍摄降低难度 2设置白平衡&#xff1a;自动 不满意可以设置 3色彩&…

Scala学习记录

dao --------> 数据访问 mode ------> 模型 service ---->业务逻辑 Main -------> UI:用户直接操作&#xff0c;调用Service 改造UI层&#xff1a;

Envoy 服务发现原理大揭秘与核心要点概述

1 Envoy动态配置介绍 动态资源&#xff0c;是指由envoy通过xDS协议发现所需要的各项配置的机制&#xff0c;相关的配置信息保存 于称之为管理服务器&#xff08;Management Server &#xff09;的主机上&#xff0c;经由xDS API向外暴露&#xff1b;下面是一个 纯动态资源的基…