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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库详细解读(数据库的事务,存储引擎,索引和锁) -> 正文阅读

[大数据]数据库详细解读(数据库的事务,存储引擎,索引和锁)

目录

1.数据库事务讲解:

特性和级别


1.数据库事务讲解:

数据库事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

通俗的说:事务就是 一组SQL语句(程序执行单元)在操作的过程当中, 要么同时成功, 要么同时失败。

事务的操作:

1. 开启事务, SQL 语法:
START TRANSACTION;

2. 回滚事务, SQL 语法:
ROLLBACK;

3. 提交事务
COMMIT;

事务提交方式分类:
? ? 自动提交 (MySQL 默认的提交方式)
? ? 手动提交 (Oracle 采用的提交方式)

相关SQL语法
?? ?-- 查看事务的提交方式, 说明: 1表示自动提交, 0表示手动提交
?? ?SELECT @@AUTOCOMMIT;
?? ?-- 修改事务的提交方式, 标准语法
?? ?SELECT @@AUTOCOMMIT = 数字;

特性和级别

1. 四大特性(感兴趣的可以看下原子性和一致性有什么区别)
原子性:不可分割,事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。数据库中的数据应满足完整性约束。
隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性:已被提交的事务对数据库的修改应该永久保存在数据库中。
????
2. 四种级别
????A. 读未提交 ??????READ ?UNCOMMITTED
????B. 读已提交 ??????READ ?COMMITED
????C. 可重复读 ??????REPEATABLE ?READ
????D. 串行化????????SERIALIZABLE

序号隔离级别名称脏读不可重复读幻读数据库默认隔离级别
1READ UNCOMMITTED读未提交YESYESYES
2READ COMMITTED读已提交NOYESYESOracle 数据库默认级别
3REPEATABLE READ可重复读NONOYESMySQL 数据库默认级别
4SERIALIZABLE串行化NONONO
问题说明现象说明
脏读在事务A 处理的过程当中,读取到了另外一个事务 B,还没有提交的数据, 导致两次查询结果,不一致
不可重复读在事务 A 处理的过程当中,读取到了另外一个事务 B,修改并且已经提交的数据,导致两次查询结果,不一致
幻读

现象1: SELECT 查询某条记录是否存在,不存在,准备插入记录,但是执行 INSERT 的时候,发现记录已经存在,无法插入。

现象2: SELECT 查询某条记录是否存在,不存在,去执行 DELETE 删除操作的时候,发现删除成功了。

2.存储引擎的介绍

MySQL 当中常用的存储引擎:

1. InnoDB : 支持事务, MySQL5.5版本之后, 默认的存储引擎
2. MyISAM : 不支持事务
3. Memory : 速度快,最不安全。小量快速访问的数据

3.索引的分类

1. 按照功能分类
    A. 普通索引: 最基本的索引,他没有任何的限制
    B. 唯一索引: 索引列的值必须唯一, 但是允许有空值的情况, 如果是组合索引, 则列值组合必须唯一
    C. 主键索引: 一种特殊的唯一索引, 不允许有空值, 一般在建表时, 同时创建主键索引
    D. 组合索引: 就是将单列索引进行组合
    E. 外键索引: 只有 InnoDB 引擎支持外键索引, 用来保证数据的一致性、完整性和实现级联操作
    F. 全文索引: 快速匹配全部文档的方式。InnoDB 引擎 5.6 版本后, 才能支持全文索引, MEMORY 引擎不支持
?
2. 按照结构分类
    A. B+Tree 索引: MySQL 使用最频繁的一个索引数据结构, 是InnoDB和MyISAM 存储引擎默认的索引类型
    B. Hash 索引: ? MySQL 中的 Memory 存储引擎默认支持的索引类型

创建索引

-- 1. 创建索引的语法:
CREATE  [UNIQUE][FULLTEXT] ?INDEX  索引名称  [USING 索引类型] ?ON  表名称(列名称....);
-- 2. 案例代码:
-- 为 student 表当中的 name 列创建一个普通的索引。
CREATE ?INDEX  idx_name ?ON  student(name);
-- 为 student 表当中的 age 列创建一个唯一索引。
CREATE ?UNIQUE ?INDEX  idx_age ?ON  student(age);

查看索引

-- 1. 查看索引的语法:
SHOW ?INDEX ? FROM  表名称;
-- 2. 案例代码: 查询学生表当中,拥有的索引
SHOW ?INDEX ?FROM  student;

添加索引

-- 1. 普通索引
ALTER ?TABLE  表名称 ?ADD ?INDEX  索引名称 (列名);
-- 2. 组合索引
ALTER ?TABLE  表名称 ?ADD ?INDEX  索引名称 (列名1,列名2,列名3....);
-- 3. 主键索引
ALTER ?TABLE  表名称 ?ADD ?PRIMARY ?KEY  (主键列名称);
-- 4. 外键索引
ALTER ?TABLE  表名称 ?ADD ?CONSTRAINT  外键名称 ?FOREIGN ?KEY  (本表外键列名) ?REFERENCES  主表名称(主键列名);
-- 5. 唯一索引
ALTER ?TABLE  表名称 ?ADD ?UNIQUE  索引名称(列名);
-- 6. 全文索引
ALTER ?TABLE  表名称 ?ADD ?FULLTEXT  索引名称(列名);

删除索引

-- 1. 基础语法
DROP ?INDEX  索引名称 ?ON  表名称;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:07:42  更:2021-12-10 11:08:05 
 
开发: 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年11日历 -2024/11/24 10:56:32-

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