MySQL索引事务(二)

news2024/11/24 10:24:08

1、索引

1.1、索引的分类

1.1.1、按数据结构分类:B+tree,Hash索引,Full-text索引。

InnoDBMylSAMMemmory
B+tree索引
Hash索引×××
Full-text索引√(MySQl-version5.6.4)×

B+tree索引是MySQL中被存储引擎采用最多的索引类型。它适用于全键值、键值范围和最左前缀查找。使用联合索引时,如果不是按照索引的顺序进行查找,则无法使用索引,除了适用于查找,还可以用于排序和分组。

1.1.2、按字段特性分分类:主键索引,唯一索引,全文索引,普通索引

主键索引(primary key)

*唯一标识,建立在竹简上的索引被称为主键索引,一张数据表只能有一个主键索引,索引列值不允许有空值,通常在创建表的时候一起创建。

*唯一索引(unique)

建立在unique字段上的索引被称为唯一索引,一张表可以有多个索引,索引列值可以允许为空,列值中出现多个空值不会发生重复冲突。

*普通索引(index)

建立在普通字段上的索引被称为普通索引。

*全文索引(fullText)

MylSAM存储引擎支持Full-text索引,用于查找文本中的关键字,而不是直接比较是否相等。Full-text索引一般使用倒排索引方式实现,它记录着关键词到其所在文档的映射。

1.1.3、按使用场景分类:聚集索引,非聚集索引

主键索引就是聚集索引,其他的都是非聚集索引

1.2、索引覆盖

MySQL执行计划explain结果里的key有使用索引,如果select后面查询字段都可以从这个索引的书中获取,这种情况一般可以说用到了索引覆盖,extra里一般都有using index;覆盖索引一般是对辅助索引,整个查询结果只能通过辅助索引才能你拿到结果,不需要通过辅助索引树就能找到主键,再通过主键取主键索引树里获取其它字段值。

1.2.1、索引覆盖是一种数据查询方式,不是索引类型。

1.2.2、回表查询

组合索引不包含所有数据,那么想要获取所有数据必须要回到主表进行查询,不会发生索引覆盖,这个现象叫做回表查询

select * from student where sn=xxx and name=xxx;

1.2.3、索引覆盖 

通过索引过滤,而且查询的列只包含索引中的某些字段,不用再通过主键去主表里查询详细信息,这个现象就是索引覆盖

select sn,name from student where sn=xxx and name=xxx;

1.3、使用

*用explain查看执行计划

explain select * from student where xxx=xxx; 

 

 

 *使用普通索引的任何一个作为where条件

 *索引的两列都作为where条件

2、事务

事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的环境中,都可以有事务。在数据库中,就是数据库事务

2.1、事务的特性

*原子性(Atomicity):数据库中最基本的一个特性,一组SQL要么执行要么全都不执行。

*一致性(Consistency):事务执行完成之后,保证数据的正确性。

*隔离性(Lsolation):多个事务之间毫不影响。

*持久性(Durability):事务一旦提交,就需要保存到磁盘中,不论是数据库坏了,还是其他原因,都不会影响数据的安全性

2.2、事务的隔离性和隔离级别

MySQL是一般部署在服务器上的,可以提供多个客户端连接并提供服务,多个客户端也都可以发送SQL到服务器执行,那么多个SQL之间就有可能产生影响,隔离级别就是为了解决多个SQL相互影响而产生的一系列规则。

*脏读 READ COMMITED

脏读并不是说数据不干净,只是说读到了不该读的数据

 

 

*不可重复读

把数据库的隔离级别提升了读已提交,解决了脏读问题。

 

 *幻读

可重复读的隔离级别,是对事务加了一把锁,别的事务要想修改这些数据的时候是不被允许的但可以修改别的一些文件,比如说新增和删除

 *序列化

数据库事务的最高级别。在此级别下,事务串行执行。可以避免脏读、不可重复读、幻读等读现象。但是效率低下,耗费数据库性能,不推荐使用。

脏读不可重复读幻读
READ UNCOMMITED
READ COMMITED×
REPEATABLE READ××
SERIALIZATION×××

2.3、不同隔离级别的性能

2.4、事务的用法

1、开始事务

start transaction; 

2、要执行的sql

3、commit;/rollback; 

 

事务一旦提交之后就不能回滚。

4、查看MySQL的隔离级别

show variables like 'tx_isolation';

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python编程技巧之复制粘贴技巧

Python编程技巧之复制粘贴技巧 Python作为一种富有表达力的编程语言,已经成为越来越多人的选择。但在编写代码时,有时候我们需要将别人的代码复制粘贴到自己的代码中。如何正确地复制粘贴代码?下面让我们来探讨一下。 复制和粘贴 在复制和…

车载以太网 - 物理层

OSI模型与车载以太网对应关系 OSI标准模型: l、物理层 II、数据链路层 lll、网络层 IV、传输层 V、会话层 VI、表示层 VII、应用层 车载以太网的OSI 参考模型如图所示,该模型中没有对5-7层进行严格的区分;比如SOME/IP、DolP、XCP等协议则是将5、6、7层描…

ML算法——逻辑回归随笔【机器学习】

文章目录 3、逻辑回归3.1、理论部分3.2、sklearn 实现3.3、案例 3、逻辑回归 3.1、理论部分 Logic Regression (LR),逻辑回归的因变量是二分类的,而不是连续的。它的输出是一个概率值,表示输入数据属于某个类别的概率。如果该值为0.8&#x…

Building a Cloud Based Data Warehouse on Google Big Query Using Qlik Compose

Learn how to build a cloud based data warehouse using Qlik Compose on Google Big Query How to Build Data Integration Pipelines with Qlik and Databricks - YouTube Google BigQuery是一个具有成本效益、高度可扩展的无服务器数据仓库,专为业务敏捷性而设…

概率图简介

引言 本文介绍概率图模型的部分基础知识,希望学习完本文之后能更好地理解HMM和CRF模型。 概率论基础 本节简单回顾一下相关的概率论知识,概率论有两条重要的基本规则。 分别为乘法规则(product rule)和加和规则(sum rule),假设有两个随机…

chatgpt赋能python:Python3.9.7安装指南

Python 3.9.7安装指南 Python是一种高级编程语言,得到了越来越多的使用,并且在机器学习、数据科学和网络开发中变得越来越重要。本篇文章将向大家介绍如何安装Python 3.9.7版本。 下载Python 3.9.7 首先,我们需要下载Python 3.9.7。你可以…

chatgpt赋能python:Python怎么安装Flask

Python怎么安装Flask Python是一种高级编程语言,常用于 Web 开发、人工智能、机器学习等领域。同时,Flask也是一个十分著名的Python Web框架,具有灵活、轻量级、易于扩展等特点。那么,如何在Python环境中安装Flask呢?…

chatgpt赋能python:Python安装PySpark:从入门到精通

Python安装PySpark:从入门到精通 PySpark是使用Python编写的Apache Spark API。它提供了一个Python接口来与Spark的分布式计算引擎进行交互。本文将介绍如何在Python中安装PySpark。 环境准备 在安装PySpark之前,您需要先安装以下依赖项: …

chatgpt赋能python:如何安装Python3.4

如何安装Python 3.4 简介 Python是一种流行的编程语言。它易于学习,具有可读性,且适用于多种用例。Python的版本非常多,但是Python 3.4是最新的稳定版本之一。 在本文中,我们将介绍如何更轻松地安装Python 3.4。 步骤 安装Py…

NLP学习笔记七-多层RNN和双向RNN

NLP学习笔记七-多层RNN和双向RNN 接着之前写的博客内容,多层RNN,其实就是在,simple RNN的基础上,再套一层或多层RNN单元。 看如下网络结构图: 上图中A就是表示一个RNN网络,这里,其实有一个疑…

chatgpt赋能python:Python与前端连接:使用Python的Web框架构建后端API

Python与前端连接:使用Python的Web框架构建后端API Python是一种强大的编程语言,越来越受到开发者的欢迎。但是,对于Web开发,Python并不是一种前端语言。那么,如何将Python的后端与前端连接起来?本文将介绍…

Java ~ Reference ~ Cleaner【总结】

前言 文章 相关系列:《Java ~ Reference【目录】》(持续更新)相关系列:《Java ~ Reference ~ Cleaner【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java ~ Reference ~ Cleaner…

[java]关于Session关于Token关于JWT

目录 关于Session 关于Token 关于JWT 关于Session HTTP协议是一种无状态协议,即:当某个客户端向服务器发起请求,服务器端进行处理,后续,此客户端再次发起请求,服务器端并不能直接知道它就是此前来访过的…

chatgpt赋能python:Python怎么多行输入?教你高效开发!

Python怎么多行输入?教你高效开发! 1. 介绍 Python是一种可读性高、可编程性强、拥有丰富的第三方模块和库的高级编程语言。作为典型的解释型语言,它可在多个平台上进行开发和运行,凭借其优雅、简洁、高效的语法风格和强大的功能…

Linux下C/C++ 多线程SSH扫描与暴力攻击

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 为什么需要SSH 如果没有SSH,绝大…

chatgpt赋能python:Python怎么安装skimage?

Python怎么安装skimage? 如果你之前使用Python编程,你可能会遇到需要安装第三方库的情况。对于图像处理任务,你可能需要用到scikit-image(也称为skimage)这个库。本文将提供一个详细的指南来安装skimage。 1. 确保你…

【JVM篇】类加载过程详解

目录 1、类加载过程概述 2、加载 3、连接 3.1 验证 3.1.1 文件格式验证 3.1.2 元数据验证 3.1.3 字节码验证 3.1.4 符号引用验证 3.2 准备 3.3 解析 4、初始化 1、类加载过程概述 想必大家一般在网上看类加载过程的资料时,通常资料只会将类加载过程概括…

OMG--DDS(Data Distribution Service)

OMG--DDS(Data Distribution Service) 1 介绍1.1 概述1.2 OMG 涉及的规范 2 内容概述介绍目标 Data-Centric Publish-Subscribe (DCPS) 以数据为中心的发布-订阅概要Platform Independent Model (PIM) 平台独立模型格式和约定概念图总体概念模型PIM 描述…

ChatGPT工作提效之数据可视化大屏组件Echarts的实战方案(大数据量加载、伪3D饼图、地图各省cp中心坐标属性、map3D材质)

ChatGPT工作提效系列文章目录 ChatGPT工作提效之初探路径独孤九剑遇强则强ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)ChatGPT工作提效之生成开发需求和报价单并转为Excel格式ChatGPT工作提效之小鹅通二次开发批量API对…

【电路】电路与电子技术基础 课堂笔记 第7章 晶体管放大电路

7.1 放大的概念 7.1.1 放大电路基础 放大电路可以将电信号不失真地进行放大,而且是幅度放大; 本质上,放大是对能量进行控制和转换, 由一个能量较小的输入信号控制直流电源, 将直流电源的能量转换成与输入信号频率…