mysql的索引、事务和存储引擎
目录
索引
索引的概念
索引的作用
作用
索引的副作用
创建索引
创建索引的原则和依据
索引的类型
创建索引
查看索引
删除索引 drop
主键索引
普通索引
添加普通索引
唯一索引
添加唯一索引
组合索引
添加组合索引
查询组合索引
全文索引
添加全文索引
查看全文索引
练习
事务
概念
事务的特点
数据库的隔离性
事务的控制语句
存储引擎
概念
索引
索引的概念
索引是一个排序的列表,在列表当中存储索引的值以及索引值对应数据所在的物理行。索引值和数据是一个映射关系。
索引的作用
使用索引之后,就不需要扫描全表来定位某行的数据。加快数据库的查询速度。
索引可以是表中的一列,也可以是多个列。
作用
1.设置了索引之后,数据库可以利用索引快速定位,大大提高查询速度。这也是索引的主要原因。
2.尤其是表的数据很大,以及涉及多个表查询时,索引可以大大的提高查询速度。
3.建立索引不仅能够提高查询速度,在恢复数据库的数据时,也能提高性能。
4.可以加快表与表之间连接查询的速度。
索引的副作用
1.创建的索引也需要占用额外的磁盘空间。INNODB存储引擎表数据和索引文件在一块。它们是一体的,相对来说占的空间小一点
2.更新一个包含索引的表比没有索引的表需要花费更多的时间。表需要更新,索引也要更新,所以速度要慢很多。
创建索引
理想的做法:经常被做为搜索条件的列上面创建索引
创建索引的原则和依据
1.表的主键和外键必须有索引,主键是唯一的,外键是关联主表的,查询时可以快速定位
2.一张表有超过300行的数据,应该要创建索引
3.经常与其他表进行连接的表,在连接字段上应该创建索引
4.更新太频繁的字段不适合创建索引
5.经常作为where语句的条件列,应该创建索引
6.经常使用group by和order by的字段上要建立索引
7.选择一个性能高的字段作为索引,字段的值不同的越多越好
8.索引要建立在小字段上,字符串的长度比较小的字段,对于长文本字段、超长的字段不适合建立索引
索引的类型
b-tree 索引 又叫b-树索引 绝大部分的数据都是使用b-树索引,索引的左边的列开始,从左到右按顺序进行排列
哈希索引 索引对应的hash值的方法获取表的记录行,速度比较慢,用的比较少
创建索引
查看索引
show index from 表名
explain select * from member where id = 1; 查询当前语句使用索引的情况
删除索引 drop
drop index phone_index on member;
alter table member drop index id_index;
主键索引
主键索引是一种特殊的唯一索引
primary key 设置主键就是索引
普通索引
index name_index (name);
添加普通索引
alter table member add index id_index(id);
唯一索引
可以用key的方式创建,也可以用索引的方式创建
not null unique key 就是唯一索引
添加唯一索引
create unique index id_index on member(id);
alter table member add unique index id_index (id);
组合索引
一次性给多个列创建索引,形成一个组合
添加组合索引
alter table member add constraint uc_name_carid_phone unique (name,carid,phone);
查询组合索引
select * from member where name='我爱你' and cardid=3 and phone=123456;
全文索引
适用于模糊查询,检索大文本remark text使用的
添加全文索引
create fulltext index remark_index on member (remark);
查看全文索引
select * from member where match(remark) against('vip');
练习
事务
概念
事务是一个机制,一个操作序列,一组或者一条数据库的操作命令。把所有的命令作为一个整体向系统提交或者撤销的操作。作用:保证数据的一致性。事务是一个不可分割的工作逻辑单元,在数据库上执行并发操作时,事务是最小的控制单元。
数据库通过事务的控制和事务的整体性保证数据的一致性。
事务的特点
在数据库的管理系统中,事务的特性有ACID这四种
A:ATOMICITY 原子性 事务的最小控制单位,不可分割,那么都成功,那么都失败
C:CONSISTENCY 一致性 事务开始之前和事务结束之后,数据库的完整性没有被破坏。
开始的时候数据是一致的,结束的时候数据也是一致的。在事务进行的时候,数据可以处于不一致的状态,但是一旦结束,数据必须回到一致
I:ISOLATION 隔离性 并发环境中,不同的事务同时操作相同的数据时,每个事务都有自己完整的数据空间。对数据的修改所发生的并发事务是隔离的。每个事务之间都是独立的。一个用户的事务不被其他事务所干扰。
数据库的隔离性
1.未提交读,read uncommitted 简称RU
允许脏读,一个事务可以看到其他事务未提交的修改
2.提交读 read committed 简称RC
一个事务只能看到其他事务已经提交的修改,未提交的修改不可见,防止脏读
oracle和sql sever都是提交读
3.可重复读 repeatable read 简称RR
一个事务在执行中,执行两次相同的select语句,得到的结果都是相同。它是mysql的默认隔离选项 防止脏读和不可重复读
4.串行读 相当于锁表 完全串行化的读,一个事务在使用,其他事务的读写都会堵塞
5.不可重复读 在一个事务内,多次读同一个数据,一个事务没有结束,另外一个事务也访问该数据。其中一个事务连续两次查询发现结果不一致,另外一个事务在对这个数据进行修改,两次看到的数据不能一致 oracle会出现不可重复读
6.幻读 一个事务对一个表的数据进行了修改,另一个表也修改了表中数据,前一个事务会返回修改的结果不正确,类似于出现了幻觉
7.不可更新 两遍同时对数据进行修改,但是一方先提交,一方后提交,后提交会覆盖先提交的
D:DURABILITY 持久性 一旦写入数据库,数据不可更改
查看隔离级别
show global variables like '%isolation%';
查看会话级别
show session variables like '%isolation%';
把全局改成未提交
set global transcation isolation level Read Uncommitted;
把会话改成未提交
set session transcation isolation level Read Uncommitted;
事务的控制语句
begin 、start transaction 开启一个事务
commitl 提交事务
rollback 回滚
savepoint 名称 设置回滚点
rollback to savepoint 名称 回滚到指定的点
存储引擎
概念
存储引擎,就是一种数据库存储数据的机制,索引的技巧,锁定水平。它是存储的方式和存储的格式。存储引擎也属于mysql当中的组件,实际上操作的执行的就是数据的读写I/O。
存储引擎的分类
innodb:mysql5.5之后默认开始使用innodb事务型速记存储引擎。支持ACID,支持行锁定
myisam:5.5之前默认的存储引擎,插入的速度和查询速度很快,但是不支持事务
memory:内存型存储引擎,数据在写时都保存在内存当中,一旦重启所有数据全部消失
CSV:逗号分割数据的存储引擎,数据文件.csv文件保存的,execl 保存的文件是一个普通的文本文件,不支持索引
Innodb存储引擎
1.读写堵塞(锁表)和事务的隔离级别
2.能够高效的缓存数据支持多种类的索引
3.表的索引类型默认是BTREE
4.支持外键,支持全文索引
5.对硬件的资源要求比较高
6.行级锁定,会把行锁定,禁止操作
模糊查询like进行查询时,会进行全表扫描,在扫描的过程中会锁定整个表。没有创建索引的列,进行查询时,也会锁定整个表。使用的是索引列,锁定条件的行,行锁定
Innodb行锁和索引的关系:
行锁是通过索引来实现的。如果没有索引,Innodb会使用默认的隐藏索引来对记录进行加锁。加了索引就是锁行,不加索引就是锁表
死锁:事务相互等待对方的资源,最后形成一个环路造成的。
如果发生了死锁,数据库会自动选择一个事务作为受害者,回滚该事务以解除死锁
如何避免死锁的情况出现:
1.以固定的顺序访问表和行
2.大事务尽量拆分成小事务
3.为表添加合理的索引
排他锁:for update 当一个事务的操作未完成时,其他事务可以读取但是不能写入
相关文章:
![](https://i-blog.csdnimg.cn/direct/6b9f8116b17a4068999f468cca10a11d.png)
mysql的索引、事务和存储引擎
目录 索引 索引的概念 索引的作用 作用 索引的副作用 创建索引 创建索引的原则和依据 索引的类型 创建索引 查看索引 删除索引 drop 主键索引 普通索引 添加普通索引 唯一索引 添加唯一索引 组合索引 添加组合索引 查询组合索引 全文索引 添加全文索引 …...
![](https://www.ngui.cc/images/no-images.jpg)
基于trace_id实现SpringCloudGateway网关的链路追踪
之前写的两篇关于基于 trace_id 的链路追踪的文章: 基于trace_id的链路追踪(含Feign、Hystrix、线程池等场景)基于trace_id的链路追踪(ForkJoinPool场景) 一、引言 在之前的文章中,我们讨论了基于 trace…...
![](https://www.ngui.cc/images/no-images.jpg)
Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2024)
Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2024) Windows 11, version 22H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者…...
![](https://i-blog.csdnimg.cn/direct/07775b7bde2f45f988a2650f4be1c691.png)
【C语言】动态内存管理(上)
文章目录 前言1.为什么要存在动态内存2. malloc和free2.1 malloc2.2 free2.3 使用实例(malloc和free) 3. calloc3.1 calloc例子 前言 本文开始将开始学习C语言中一个比较重要的知识点或者是操作——动态内存管理。由于本次的知识比较重要,为…...
![](https://img-blog.csdnimg.cn/direct/df413fc3bbea46f7962bc7fe31fa6a01.png)
【BUG】已解决:ModuleNotFoundError: No module named‘ pip‘
已解决:ModuleNotFoundError: No module named‘ pip‘ 目录 已解决:ModuleNotFoundError: No module named‘ pip‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰…...
![](https://www.ngui.cc/images/no-images.jpg)
网络安全-网络安全及其防护措施11
51.网络容量规划 网络容量规划的概念和重要性 网络容量规划: 是指根据业务需求和预期增长,合理规划和设计网络的带宽、设备和资源,以满足未来网络流量和服务质量的需求。通过有效的网络容量规划,确保网络性能稳定和用户体验良好…...
![](https://i-blog.csdnimg.cn/direct/f4e261a82f024069bd52482e3d468e02.png)
使用IDEA编写lua脚本并运行
下载lua https://github.com/rjpcomputing/luaforwindows/releases 是否创建桌面快捷方式:我们的目标是使用IDEA编写lua脚本,所以不需要勾选。后面需要的话,可以到安装目录下手动创建快捷方式 环境变量自动配置 安装后会自动配置好环境变量…...
![](https://i-blog.csdnimg.cn/direct/addbf989194241f6b801319ef1f5f0f9.png)
CentOS 7 安装MySQL 5.7.30
CentOS 7 安装MySQL卸载(离线安装) 安装配置MySQL之前先查询是否存在,如存在先卸载再安装 rpm -qa|grep -i mysql rpm -qa|grep -i mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64如下命令找到直接 rm -rf 删除(删除…...
![](https://img-blog.csdnimg.cn/fa80b15381a8400ca124d37ae57376ff.png)
Bash 学习摘录
文章目录 1、变量和参数的介绍(1)变量替换$(...) (2)特殊的变量类型export位置参数shift 2、引用(1)引用变量(2)转义 3、条件判断(1)条件测试结构(…...
![](https://i-blog.csdnimg.cn/direct/621cafe3056f49aa8155817bf79038f3.png)
GD32 MCU是如何进入中断函数的
用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续执行,那么你们知道MCU是如何找到中断函数入口的吗? 今天我们就以GD32F303系列…...
![](https://www.ngui.cc/images/no-images.jpg)
Ruby 循环
Ruby 循环 在编程中,循环是一种常用的控制结构,它允许我们重复执行一段代码多次。Ruby 作为一种灵活的编程语言,提供了多种循环方法,包括 while、until、for、each 和 loop 等。本文将详细介绍 Ruby 中的循环机制,并通…...
![](https://i-blog.csdnimg.cn/direct/2cae243d3c8f4b198bd1594165da8012.png)
三字棋游戏(C语言详细解释)
hello,小伙伴们大家好,算是失踪人口回归了哈,主要原因是期末考试完学校组织实训,做了俄罗斯方块,后续也会更新,不过今天先从简单的三字棋说起 话不多说,开始今天的内容 一、大体思路 我们都知…...
![](https://i-blog.csdnimg.cn/direct/21275bdb558e48bfb94b02929009515e.png)
H3CNE(计算机网络的概述)
1. 计算机网络的概述 1.1 计算机网络的三大基本功能 1. 资源共享 2. 分布式处理与负载均衡 3. 综合信息服务 1.2 计算机网络的三大基本类型 1.3 网络拓扑 定义: 网络设备连接排列的方式 网络拓扑的类型: 总线型拓扑: 所有的设备共享一…...
![](https://www.ngui.cc/images/no-images.jpg)
【极客日常】Golang一个的slice数据替换的bug排查
上周某天下班前,接到同事转来一个bug要排查,症状是代码重构之后某些业务效果不符合预期,由于代码重构人是笔者,于是blame到笔者这边。经过10min左右的排查和尝试后,解决了这个问题:既往逻辑没有改动&#x…...
![](https://i-blog.csdnimg.cn/direct/b261d216a196426788ebb3acbfda73ac.jpeg#pic_center)
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号3
基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…...
![](https://i-blog.csdnimg.cn/direct/e3e4176119874666a41a7675ed24a518.png)
UE4-光照重建
当我们拉入新的光源和模型到我们的场景中后,会产生这样的情况: Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。 方法一: 或者也可以在世界大纲中选中我们的光源,然后将我们的光源改变为可以…...
![](https://www.ngui.cc/images/no-images.jpg)
【2024德国签证】留学面签问题汇总
在去交材料的时候,可能会被随机安排面试。这些面试问题一般都很简单,主要是测试你的基本英文交流能力。无需担心,签证官不会问太专业的问题,因为他们也不懂专业内容。到目前为止,没有一个博士生因为这个面试被拒签。毕…...
![](https://img-blog.csdnimg.cn/201d4553cbce4376b2d0e55fab70c0a5.png)
知识点大纲
学习方法 学习、整理笔记过程中,顺便整理出一个以问题为模版的大纲,到时候对着问题,就像是在和面试官讲解那样,相当于升级版的费曼学习法 除了看博客,问gpt外,亲自实验也是获取知识及加深印象的关键点 很…...
![](https://i-blog.csdnimg.cn/direct/fdaa7086e030402688db881eb663c993.png)
MySQL:库表操作
MySQL:库表操作 库操作查看创建字符编码集 删除修改备份 表操作创建查看删除修改 库操作 查看 查看存在哪些数据库: show databases;示例: 查看自己当前处于哪一个数据库: select database();示例: 此处由于我不处于任…...
![](https://www.ngui.cc/images/no-images.jpg)
8.3 End-to-end Data Protection (Optional)
8.3 End-to-end Data Protection (Optional) 为了提供从应用程序到NVM介质并返回到应用程序本身的稳健数据保护,可以使用端到端数据保护。如果启用了此可选机制,则将额外的保护信息(例如CRC)添加到逻辑块中,控制器和/或主机软件可以对其进行评估,以确定逻辑块的完整性。…...
![](https://i-blog.csdnimg.cn/direct/320f738b8bd4471da2c38882db50f00c.png)
python实现图像对比度增强算法
python实现直方图均衡化、自适应直方图均衡化、连接组件标记算法 1.直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 2.自适应直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 3.连接组件标记算法详解算法步骤8连通与4连通公式Python 实现详细解释优缺…...
![](https://i-blog.csdnimg.cn/direct/eacf8c9a58a74a99b057b99e7c7bea04.png#pic_center)
【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Bremer)+ 2.7 本章小结
当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本章小结 第二章…...
![](https://i-blog.csdnimg.cn/direct/6c57a0f7f55f4baa84083f523709f1e9.png)
GIT命令学习 二
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 150, 112, 130
文章目录 150. 逆波兰表达式求值题目链接标签思路代码 112. 路径总和题目链接标签思路代码 130. 被围绕的区域题目链接标签思路代码 150. 逆波兰表达式求值 题目链接 150. 逆波兰表达式求值 标签 栈 数组 数学 思路 本题很像 JVM 中的 操作数栈,当写出以下三行…...
![](https://www.ngui.cc/images/no-images.jpg)
c++应用网络编程之五Windows常用的网络IO模型
一、Windows的网络编程 其实对开发者而言,只有Windows和其它平台。做为一种普遍流行的图形OS,其一定会与类Linux的编程有着明显的区别,这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架࿰…...
![](https://i-blog.csdnimg.cn/direct/e2a5dff72bcf4242b473e5bbd0ab7134.png)
PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动?
🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动一、理解索引抖动二、索引抖动的影响三…...
![](https://i-blog.csdnimg.cn/direct/b165f88ee3ef48cf86d938223f1b0ec2.jpeg)
鑫创SSS1700USB音频桥芯片USB转IIS芯片
鑫创SSS1700支持IIC初始外部编(EEPROM选项),两线串行总线(I2C总线)用于外部MCU控制整个EEPROM空间可以通过MCU访问用于主机控制同步的USB HID外部串行EEPROM(24C02~24C16)接口,用于客户特定的USB视频、PID、…...
![](https://www.ngui.cc/images/no-images.jpg)
计算机视觉发展历程
文章目录 前言一、发展历程1)、萌芽期(1960s-1970s)2)、基础发展期(1980s)3)、系统开发期(1990s-2000s)4)、深度学习兴起期(2010s)5&a…...
![](https://i-blog.csdnimg.cn/direct/139e50158c5f4235b1aec1dfeecc0ee1.png)
从安装Node到TypeScript到VsCode的配置教程
从安装Node到TypeScript到VsCode的配置教程 1.下载Node安装包, 链接 2.双击安装包,选择安装路径,如下: 3.一直点击下一步,直至安装结束即可: 这个时候,node会默认配置好环境变量,并且…...
![](https://i-blog.csdnimg.cn/direct/2038ed115fb14c77a40cfc88a645714e.png)
Jackson详解
文章目录 一、Jackson介绍二、基础序列化和反序列化1、快速入门2、序列化API3、反序列化API4、常用配置 三、常用注解1、JsonProperty2、JsonAlias3、JsonIgnore4、JsonIgnoreProperties5、JsonFormat6、JsonPropertyOrder 四、高级特性1、处理泛型1.1、反序列化List泛型1.2、反…...
![](/images/no-images.jpg)
在哪里可以学做网站/100个电商平台
Matplotlib ——(分解) Matrix Plot Library 矩阵 绘图 库 一个极其强大的Python绘图库。官网:matplotlib.org 很少的代码即可绘制2D/3D,静态/动态等各种图形 一般常用的是它的子包:PyPlot,提…...
![](/images/no-images.jpg)
连云港网站建设制作/百度云手机登录入口
我的项目文件层次是:项目名称/include、output、src src/admin、stu、tch、common 最外层的Makefile: DEBUG yMYDEBUG DEBUGifeq ($(DEBUG),y)DEBFLAGS -O -g -D$(MYDEBUG)elseDEBFLAGS endif PRJ_HOME : $(shell pwd)SOURCES : $(wildcard *.c)OBJEC…...
![](https://img-blog.csdnimg.cn/20210201205847538.png)
手机网站在线生成/惠州seo报价
目录一、文件目录二、实现效果三、实现3.1 跳转页面api3.2 页面组件跳转四、示例demo源码4.1 wxml4.2 wxss4.3 js一、文件目录 二、实现效果 三、实现 点击test页面中的按钮,跳转至页面other; 3.1 跳转页面api 3.1.1 navigateTo 保留当前页面&#x…...
![](https://s1.51cto.com/attachment/201204/173533103.jpg)
阳澄湖大闸蟹网站建设/百度产品大全
一个经理上来电,说他打开网页浏览的时候出现需要安装Adobe Flash layer 才能查看,由于没有管理员权限,我远程在服务器上下载了一个Adobe Flash layer 11 最新版为他安装,但是安装一会就报错,提示简本出错。于是我按确定…...
![](/images/no-images.jpg)
wdcp v3搭建WordPress/seo诊断优化方案
【摘要】最近两个月都在学习 Linux 驱动,中间碰到了很多问题,进度比较缓慢。尽管不是班科出生的,但是还是觉得算法很有必要学一学。因此将数组元素查找作为自己算法开篇的第一篇博客,好好跟着平凡程序员的博客学习,内容…...
![](https://images2015.cnblogs.com/blog/822713/201510/822713-20151015151659444-1943127463.png)
字体网站/云南省最新疫情情况
经过查阅资料和自己的理解整理出来的,欢迎大家指教。Awake和Start对比awake比start先执行。当有多个类的时候,所有类的awake执行完了才会执行start。awake里面一般放初始化的属性值,获取组件等。start里面可以处理一些只执行一次的功能。比如…...