IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL--索引和事务隔离级别 -> 正文阅读

[大数据]MySQL--索引和事务隔离级别

索引

由于数据库中的数据随着数据的增加,查询的速度也会变慢,索引可以提高查询效率。

索引的概念

选取表中的某一列或几列数据,构成便于查询的树结构(如B+tree),在目录中可以直接查询到某条数据的具体地址,避免全局扫描。

索引分类

  • 主键索引:创建列表时,把字段声明为主键时,会自动创建主键索引
  • 唯一索引:创建列表时,把字段声明为唯一键时,可以为空,会自动创建唯一索引
  • 普通索引:在普通字段上创建的索引
  • 组合索引:由两个以上字段组合创建的索引

创建索引

基本语法:

create index <索引名> on <表名>(字段1,字段2...);//组合索引的多个字段用‘,’隔开

创建唯一索引(有一列没有被声明为唯一键,但是可以确定此列数据没有重复,则可以依次列创建唯一索引):

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

查询索引

查询数据表的索引:
show indexs from 表名;
查询索引:
show keys from 表名;

ps:5.6版本更新了一个全文索引,但是不支持中文,了解一下即可。

删除索引

drop index +索引名 on 表名;

索引使用总结

1、优点

  • 索引大大降低了查询时的数据量,提高了查询效率
  • 索引根据列,把随机IO变成了顺序IO
    2、缺点
  • 索引随着DML更新而更新
  • 索引会占据磁盘空间
    3、注意事项
  • 数据量大且DML语句频繁时不要使用索引
  • 数据量少时全盘扫描更快,不要使用索引
  • 重复数据多的列不要建立索引
  • 创建索引后注意查询SQL语句的编写,避免索引失效

数据库事务

概念

事务是完成一个业务的多个DML操作

特性(ACID特性)

  • 原子性:事务中的DML操作要么同时完成,要么同时不完成(其中之前完成后面的没完成,要对之前的操作进行还原:回滚)
  • 一致性:事务执行前与事务执行后数据库中的数据是一致的,完整性和一致性不被破坏
  • 隔离性:允许多个事务同时执行,不同事务之间互不影响
  • 持久性:事务完成后对数据的操作是永久性的

数据库的事务管理

自动提交与手动提交

当我们在客户端执行DML操作时,先将操作写入缓存,缓存默认自动提交到数据库进行更改数据

事务管理

1、开启事务:作用时关闭自动提交

start transaction;

2、然后执行事务中的各项操作,如果有错误则执行rollback,作用是清除缓存中的操作
3、提交事务

作用是把缓存中的操作提交到数据库中

commit;

事务隔离级别

  • 读未提交 read uncommitted
    两个客户端同时执行两个独立的事件一和二,事件2可以查询到事件1已执行但未提交的操作,存在缓存里,如果事件2读取成功后,时间1之后的操作没完成而发生了回滚,则称事件2读取操作为脏读。
  • 读已提交 read committed (避免了脏读)
    两个客户端同时执行两个独立的事件一和二,事件2只能查询到事件1已提交的操作,若事件2中有2次及以上读取同一数据的操作,第一次读取时事件1还没提交,读第二次时事件1提交了,事件2前后读取的数据不同,称为虚读(不可重复读)。
  • 可重复读 repeatable read(避免了脏读和虚读)
    事件1操作时,不允许其他事件对对应数据进行修改,但可以进行添加,当事件1把全部数据的一个字段修改为1,事件2新增一个此字段为2的数据,事件1在读取时会出现没修改的2,称为幻读。
  • 串行化 serializable(避免了脏读、虚读和幻读)
    此级别的事件执行时不允许其他事件对数据库进行操作

事务的隔离级别修改

1、mysql数据库默认的事务隔离级别是:repeatable read
2、可以通过设置数据库默认的事务隔离级别控制隔离性,也可以设置客户端与数据库连接设置来设置事务隔离性(应用设置)

3、查看数据库的默认事务隔离级别:
版本8.0.3之前

select @@tx_isolation;

版本8.0.3之后

select @@transaction_isolation;

4、设置数据库的默认事件隔离级别

set session transaction isolation level + 事务隔离级别英文;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:56:33  更:2022-07-20 18:58:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:57:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码