初窥MySQL的索引与事务
目录
一.索引
1.什么是索引
2.索引的作用
3.索引的使用场景
4.索引的简单使用
(1)查看索引
(2)创建索引
(3)删除索引
二.事务
1.什么是事务以及为什么使用事务
(1)事务的概念
(2)使用事务的原因
2.如何开启事务
(1)开启事务的三部曲
(2)开启事务的例子
3.事务的四大特性
一.索引
1.什么是索引
索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。
2.索引的作用
- 可以快速定位,检索数据
- 可以提高数据库的性能,如果查询数据的时间太长,可以通过创建索引提高查询效率
3.索引的使用场景
如果需要对数据库中的某列或者某几列想要创建索引,需要考虑以下几点(如果不考虑以下几点,可能提高不了查询的效率):
- 数据量较大,经常对这些数据进行条件查询。
- 对创建索引的列修改插入频率较低。
- 索引会占用磁盘空间,在创建索引的时候需要考虑磁盘空间是否充足。
- 根据where条件查询来创建合适的索引。
- 索引也不是创建的越多越好,数据量大的时候更新索引也消耗时间
注意:对于有些查询结果使用不到索引如:给name创建一个索引,当name is null 或者
name like % 某%,就使用不到索引。
4.索引的简单使用
对于一些约束,会自动创建对应列的索引,如主键约束,唯一键约束,外键约束。
(1)查看索引
语法:
show index from 表名;
(2)创建索引
语法:
create index 索引名 on 表名(字段名);
(3)删除索引
语法:
drop index 索引名 on 表名;
二.事务
1.什么是事务以及为什么使用事务
(1)事务的概念
事务(具有原子性)指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。
(2)使用事务的原因
在某些场景下,如果没有事务就会出现很大的问题。例如银行的转账问题。
2.如何开启事务
(1)开启事务的三部曲
- 开启事务:start transaction;
- 执行多条SQL语句
- 回滚或提交 rollback(全部失败)/commit(全部成功)。
(2)开启事务的例子
初始化的账户
drop table if exists accout;
create table accout(
id int primary key auto_increment,
name varchar(20) comment '账户名称',
money decimal(11,2) comment '金额'
);
insert into accout(name, money) values
('张三', 3000),
('李四', 3000);
开启事务后的转钱操作
start transaction;
-- 张三账户减少2000
update accout set money=money-2000 where name = '张三';
-- 李四账户增加2000
update accout set money=money+2000 where name = '李四';
-- commit执行完成后转账就会成功,数据库中的数据就会得到修改
commit;
使用commit之前
使用commit之后
开启事务后,如果没有执行到commit,那么数据库中的数据就没有得到修改,虽然在当前数据库中显示钱已经发生了变化,但是再打开另一个数据库端口重新进入就会发现没有变化,这就是开启事务的好处,没有执行成功就不会修改数据库中的数据。
3.事务的四大特性
- 原子性:对于一组操作(主要为更新),要么全部成功,要么全部失败。
- 一致性:一个事务里面,多次查询到的结果都是一致的。
- 隔离性:不同事务,查询/修改的数据是互相隔离的。一个事务没有提交/回滚之前,修改数据只有自己可以看到。
- 持久性:事务提交后,数据会持久化到硬盘中。
初窥MySQL的索引与事务相关推荐
- 解读mysql的索引和事务的正确姿势
一.索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和FULLTEXT)在B树中存储 ...
- 解读mysql的索引和事务的正确姿势 1
一.索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和FULLTEXT)在B树中存储 ...
- 【剧前爆米花--爪哇岛寻宝】MySQL中索引和事务
作者:困了电视剧 专栏:<MySQL数据库> 文章分布:这是一篇关于Java中异常类的文章,在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程,如有疏漏,欢迎大佬指正! 目录 索引 用法 ...
- MySQL(4) 索引、事务与存储引擎
文章目录 一.MySQL 索引 1.1 索引的概念 1.2 索引的作用及缺点 1.2.1 优点 1.2.2 缺点 1.3 创建索引的原则依据 1.4 索引的分类和创建 1.4.1 普通索引 ●直接创建 ...
- MySQL学习笔记 04、MySQL进阶(索引、事务、锁)
文章目录 前言 一.MySQL的目录结构 1.1.认识目录文件 1.2.配置文件设置 windows平台下设置 linux环境下设置 二.MySQL的系统架构 2.1.MySQL系统的逻辑架构: 2. ...
- MySQL日志/索引/锁/事务特性的理解
文章目录 前言 关于日志 Redo Undo 关于索引 分页查询的优化方式&原理 子查询优化 根据某个字段排序后分页 先选出主键,再通过主键查询 位置计算优化 索引对关联查询的影响 关于锁 乐 ...
- MySQL的索引和事务
目录 索引 索引的概念 索引的实现方式 为什么需要索引 创建索引 删除索引 查看索引 索引背后的数据结构 B-树 聚簇索引 非聚簇索引 B+树 Mysql的页的概念 索引失效的情况 事务 事务的引入 ...
- Mysql:索引、事务
参考: 狂神说Mysql视频 高性能Mysql 文章目录 1.索引简介 2.EXPLAIN关键字 一百万条数据测试 3. 索引原理 B-Tree **为什么说B+树比B-树更适合实际应用中操作系统的文 ...
- MySQL(三)——函数、事务(ACID)、索引、权限管理和备份、数据库三大范式
文章目录 1. MySQL函数 1.1 常用函数 1.2 聚合函数(常用) 1.3 数据库级别的MD5加密 2. 事务 2.1 简述 2.2 事务原则 2.3 隔离所导致的一些问题 2.4 执行事务 ...
最新文章
- 特别的需要名言警句提醒一下自己
- 深度学习caffe的代码怎么读?
- 昂贵的聘礼(poj 1062)
- Js判断下拉框是否为空值
- 安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...
- cacti linux cpu datasource,Cacti 0.8.8b 硬盘、网络流量、cpu、内存告警配置
- ftp ---- vsftpd安装卸载
- Kneron用“重组”方案精简深度学习算法,芯片产品明年开售
- XBRL 可扩展商业报告语言
- 从△走进OO,走进策略模式
- AHK生成随机但不重复的数字
- python程序设计基础与应用课后答案_智慧职教Python程序设计基础作业课后答案
- 【编译原理系列】语法分析与上下文无关文法
- GitBash和GitGui右键失效解决方法
- android nfc P2P模式
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
- mysql未开启binlog如何恢复数据_MySQL5.7开启binlog日志,及数据恢复简单示例
- 怎么创建dllwenjian_怎样新建一个*.dll的文件?
- Java基于JSP的论坛交流系统
- centos :不在 sudoers 文件中。此事将被报告