mysql的索引事务和存储引擎

一、索引

1、索引

索引的概念 :索引是一个排序的列表,在列表当中存储索引的值以及索引值对应数据所在的物理行。

索引的引用:

使用索引之后,就不需要扫描全表来定位某行的数据。

加快数据库的查询速度。

索引可以是表中的一列,也可以是多个列。

索引优点:

1、设置了索引之后,数据库可以利用索引快速定位,大大提高查询速度,这也是索引的主要原因。

2、尤其是表的数据很大,以及设计多个表查询时,索引可以大大的提高查询速度。

3、建立索引,不仅能够提高查询速度,在恢复数据库的数据时,也能提高性能。

4、可以加快表与表之间连接查询的速度。

索引缺点:

1、创建的索引也需要占用额外的磁盘空间,INNODB存储引擎表数据文件和索引文件在一块,一体的,相对来说占是空间小一点。

2、更新一个包含索引的表比没有索引的表需要花费更多的时间,表需要更新,索引也要更新,所以速度要慢很多。

理想的做法:经常被作为搜索条件的列上面创建索引。

2、创建索引的原则和依据

1、表的主键和外键必须有索引,主键是唯一的,外键是关联主表的,查询时可以快速定位。

2、一张表有超过300行的数据,应该要创建索引。

3、经常与其他表进行连接的表,在连接字段上创建索引。

4、更新太频繁的字段不适合创建索引,

5、经常作为where语句的条件列,应该创建索引,

6、经常使用group by 和 order by的字段上要创立索引。

7、选择一个性能高的字段作为索引,字段的值不同的越多越好。

8、索引应该建立在小字段上,字符串的长度比较小的字段,对于长文本字段,超长的字段不适合建立索引。

3、索引的类型

b-tree (b-树索引)索引:绝大部分的数据都是使用B-树索引。

索引的左边的列开始,到右按顺序进行排列。

哈希索引:索引对应的hash值的方法获取表的记录行。速度比较慢,赢的方法少。

4、创建索引

1、主键索引:主键即索引

主键索引是一种特殊的唯一索引。

2、普通索引

在创建表的时候创建普通索引

create table member (
id int(10),
name varchar(10),
cardid int(18),
phone int(11),
address varchar(50),
remark text,
index name_index (name) #创建普通索引
);

3、唯一索引(unique index )

创建之后修改,可以用key 的方式创建 也可以使用索引方式创建

格式

create unique index 索引名 on 表名();
ALTER TABLE member add unique index phone_index (phone);
#或者
CREATE UNIQUE index cardid_index on member(cardid);

4、组合索引

组合索引:一次性给多个列创建索引,形成一个组合。

适应于被经常搜索的列

alter table member add constraint 索引名 unique (字段1,字段1,字段1);
例如
ALTER TABLE member add CONSTRAINT uc_name_address UNIQUE (name,address);

查看索引,组合索引共用一个索引名称

使用组合索引

select * from member where name= ... and address......;

5、 查看索引

show index from 表名;

6、删除索引

 删除索引要先查看,根据索引名(Key_name)进行删除

drop index 索引名称 on 表名;
或者
alter TABLE 表名 drop index 索引名称;

7、 全文索引

 全文索引:适用于模糊查询,检索大文本使用的

create fulltext index remark_index on member (remark);

数据内容

使用索引

select * from member where match(remark) against ('vip')

在创建的时候添加多个索引

create table sysvip(
id int(5) PRIMARY KEY,#主键索引
name varchar(10),
cardid int(11),
address varchar(50),
times timestamp,
remark text,
index name_index (name),#普通索引
unique index cardid_index (cardid), #唯一索引
FULLTEXT index remark_index (remark)#全文索引
);

查看

 

二、 mysql的事务

1、事务

事务是一个机制,一个操作序列。一组或者一条数据库的操作命令。

把所有的命令作为一个整体向系统提交或者撤销的操作。要么都成功要么都失败。

数据的一致性,数据的一致性非常重要

事务是一个不可分割的工作逻辑单元,在数据库上执行并发操作时,事务是最小的控制单元

数据库通过事务的控制和事务的整体性保证数据的一致性。

2、事务的特点

ACID在数据库的管理系统中,事务的特性有ACID这四种:

A:ATIMICITY 原子性:事务的最小控制单位,不可分割,要么都成功,要么都失败

C:CONSISTENCY 一致性:事务开始之前和事务结束之后数据库的完整性没有被破坏

开始的时候数据是一致的,结束的时候数据也是一致的

在事务进行的时候,数据可以处于不一致的状态,但是一旦结束,数据必须回到一致性。

I:ISOLATION 隔离性:在并发环境中,不同的事务同时操作相同的数据时,每个事务都有自己完整的数据空间。对数据的修改所发生的并发事务是隔离的,每个事务之间都是独立的。

一个用户的事务不被其他事务所干扰。

3、数据库的隔离性

有以下四种:

1、未提交读 read uncommitted RU

允许脏读,一个事务可以看到其他事务未提交的修改

2、提交读,read committed RC

一个事务只能看到其他事务已经提交的修改,未提交的修改不可见,防止脏读

oracle和sql sever

3、可重复读,repeatable read RR 一个事务在执行中,执行两次相同的select语句,得到的结果都想同的mysql的默认隔离选项。防止脏读和不可重复读。

4、串行读,相当于锁表,完全串行化的读,一个事务在使用,其他事务的读写都会阻塞。

脏读:

查看当前会话的隔离级别

show global/session variables like '%isolation%'

修改隔离级别

set global transaction isolation level Read Uncommitted;set session transaction isolation level Read Uncommitted;

不可重复读:在一个事务内,多次读同一数据,一个事务没有结束,另外一个事务也访问该数据。

其中一个事务连续两次查询发现结果不一致。另外一个事务在对着这个进行修改。两次看到的数据不一致。

set global transaction isolation level Read committed;set session transaction isolation level Read committed;

终端也要同时进行操作一样的操作。

幻读:一个事务对一个表的数据进行了修改,另一个表也修改了表中数据,前一个事务会返现修改的结果不正确类似于出现了幻觉。

不可更新:两边同时对数据进行修改,但是一方先提交,一方后提交,后提交会覆盖先提交的。

D:DURABILITY 持久性:一旦写入数据库,数据不可更改。

4、事务控制语句

begin start transaction:开启一个事务

commit :提交事务

rollback :回滚

设置回滚点:savepoint 名称

回滚到指定的点:rollback to savepoint 名称

可以设置多个还原点,但是只能回一次还原点,一旦提交,所有的还原点全部取消(持久性)。

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

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

相关文章

智慧园区解决方案PPT(44页)

智慧园区解决方案摘要 一、引言 随着科技的飞速发展,智慧化已成为园区建设与发展的重要趋势。然而,传统园区在智慧化方面仍存在诸多不足,如政企互动便捷化不足、园区治理智能化单一、运营生态化缺失等问题。为此,我们提出了以“…

TI 【ads131m02】DSP TMS320F280049C调试与学习笔记

ads131m02 调试与学习笔记 时序SPI 参考链接: ADS131M02_TI官网资料参考 ADS131M02—英文使用手册 ADS131M0x—参考代码 Example C Code ADS131M02 是一款 two 通道、同步采样、24 位、ΔΣ 模数转换器 (ADC),具有宽动态范围、低功耗和电能测量特定功能…

二叉树的构造

二叉树的构造(前后序用来确定根的位置,中用来划分左右子树 最大二叉树(递归要先写终止条件 终止条件 终止条件 每次找最大的结点为分界点以及根节点,左边构成左子树,右边构成右子树,递归 class Solution {…

【Docker】Docker-harbor私有仓库部署与管理

目录 一.Harbor 概述 1.什么是Harbor 2.Harbor的特性 3.Harbor的构成 二.Harbor 部署 1.部署 Docker-Compose 服务 2.部署 Harbor 服务 3.启动 Harbor 4.创建新项目 5.创建用户 6.本地上传镜像 7.从Harbor下载镜像 三.镜像同步 1.定时拉取 2.主动推送 四.管理 …

SwiftUI 5.0(iOS 17)滚动视图的滚动目标行为(Target Behavior)解惑和实战

概览 在 SwiftUI 的开发过程中我们常说:“屏幕不够,滚动来凑”。可见滚动视图对于超长内容的呈现有着多么秉轴持钧的重要作用。 这不,从 SwiftUI 5.0(iOS 17)开始苹果又为滚动视图增加了全新的功能。但是官方的示例可…

双向链表_代码实现

代码实现的专题:只有手撕代码:),附上重点注释;重要的环节,会配上相应的调试截图与运行截图 。 总之,重点在代码,关于基础理论部分:(还在写) 定义…

Python数据可视化之numpy的11个常用的创建数组的函数

numpy库 在处理成千上万的数据时,Python的1维列表已经不适合来对数据进行处理,效率会很慢,所以numpy就诞生了,他可以将列表变成数组,而数组可以是1维、2维、3维甚至更高纬度,可用于存储和处理大型的矩阵&a…

js | Core

http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ Object 是什么? 属性[[prototype]]对象。 例如,下面的,son是对象,foo不是对象。打印出来的son,能看到有一个prototype 对象。 prototype vs _proto_ v…

Kafka消息队列python开发环境搭建

目录 引言 Kafka 的核心概念和组件 Kafka 的主要特性 使用场景 申请云服务器 安装docker及docker-compose VSCODE配置 开发环境搭建 搭建Kafka的python编程环境 Kafka的python编程示例 引言 Apache Kafka 是一个分布式流处理平台,由 LinkedIn 开发并在 2…

【BUG】已解决:WslRegisterDistribution failed with error: 0x800701bc

已解决:WslRegisterDistribution failed with error: 0x800701bc 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武…

Word文档恢复竟然这么简单?3个推荐方案送上!

“我很喜欢用Word进行文字创作,可是我有一次重新打开我的Word文档,却显示文档已丢失,这该怎么办呢?凝聚我多年心血的文章还有可能恢复吗?” 不论是总结学习内容还是汇报工作成果,我们总会用上Word。Word作…

level 6 day2 网络基础2

1.socket(三种套接字:认真看) 套接字就是在这个应用空间和内核空间的一个接口,如下图 原始套接字可以从应用层直接访问到网络层,跳过了传输层,比如在ubtan里面直接ping 一个ip地址,他没有经过TCP或者UDP的数…

大数据量接口响应慢-传输优化

问题 接口一次性返回大量数据,导致JSON数据大小过大,带宽大小不足,导致接口响应时间过长 解决方案 通过数据传输压缩来降低传输数据的大小,从而提高传输效率 服务器端压缩 springboot项目配置application文件,通过…

不懂U盘文件恢复?学会这4个方法点亮技能点!

“向广大网友求助:U盘里的文件意外删除了还有机会恢复吗?工作的时候不小心删除了存储在U盘里的重要文件,撤销也恢复不了,我还有其他的办法吗?” 相信大家在日常生活中,为了储存和随时携带重要的文件信息&a…

第5章 单片机的中断系统

5.1 中断的概念 5.2 中断控制系统 5.3 中断处理过程 5.4 中断的编程及应用举例 5.1 中断的概念 日常生活的中断现象举例 中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处&#xff…

状态管理的艺术:探索Flutter的Provider库

状态管理的艺术:探索Flutter的Provider库 前言 上一篇文章中,我们详细介绍了 Flutter 应用中的状态管理,以及 StatefulWidget 和 setState 的使用。 本篇我们继续介绍另一个实现状态管理的方式:Provider。 Provider优缺点 基…

【论文速读】| 涟漪下的漩涡:对启用RAG的应用程序的实证研究

本次分享论文:Vortex under Ripplet: An Empirical Study of RAG-enabled Applications 基本信息 原文作者:Yuchen Shao, Yuheng Huang, Jiawei Shen, Lei Ma, Ting Su, Chengcheng Wan 作者单位:East China Normal University, The Unive…

JVM基本知识——运行空间

JVM(Java Virtual Machine)即Java虚拟机,是负责读取java字节码,并在实际的硬件环境中运行。 JVM可以分为三部分:类装载器(ClassLoader)子系统、内存空间、执行引擎 内存空间(运行时…

高职院校人工智能人才培养成果导向系统构建、实施要点与评量方法

一、引言 近年来,人工智能技术在全球范围内迅速发展,对各行各业产生了深远的影响。高职院校作为培养高技能人才的重要基地,肩负着培养人工智能领域专业人才的重任。为了适应社会对人工智能人才的需求,高职院校需要构建一套科学、…

【STC89C51单片机】定时器/计数器的理解

目录 定时器/计数器1. 定时器怎么定时简单理解(加1经过了多少时间)什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器 STC89C51单片机的定时器和计数器(Timers and Counter…