| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 事务处理&表引擎&索引 -> 正文阅读 |
|
[大数据]事务处理&表引擎&索引 |
一、事务处理事务是由一些SQL语句组成的可执行单元,提交事务后,事务中的语句如果有一条执行失败,所有的语句全都回滚。 (一)事物的特性(ACID)1.原子性:事务中的语句有一条执行失败,所有的语句全都回滚。 2.一致性:当事务执行后,数据库应该从一个一致性状态进入到另一个一致性状态。 3.隔离性:事务和事务之间是隔离的 4.持久性:事务一旦提交,就更新数据库了,无法进行回滚。 (二)使用SQL语句实现事务处理MySQL数据库中,事务是自动提交的
(三)事务隔离级别对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题: ?脏读: 对于两个事务 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是 临时且无效的. ?不可重复读: 对于两个事务 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就 不同了. ?幻读: 对于两个事务 T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行. 之后, 如果 T1 再 次读取同一个表, 就会多出几行. ?Mysql 支持 4 中事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ select @@tx_isolation : 查询当前连接的隔离级别 set session transaction isolation level read committed : 设置当前连接的隔离级别 set global transaction isolation level read committed : 设置全局的隔离级别 二、MySQL数据库的表引擎MyISAM:读取数据时效率高,不支持事务处理 Innodb:支持事务处理 区别: 1.InnoDB:支持事务操作,MyISAM不支持事务操作 2.InnoDB支持外键操作,MyISAM不支持外键 3.InnoDB不保存表的总行数,在执行select count(0) from table 需要进行全文检索计算总行数,MyISAM会将表的总行数存储到一个变量中,再执行count(0)直接获得变量的值,速度快;但是如果是带where条件的count(0),如果没有索引MyISAM还是要做全文检索。 4. InnoDB在MySQL5.7以后才支持全文索引,MyISAM也支持全文索引 5. InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁 6. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件 本身就 是按B+Tree组织的一个索引结构),必须要有唯一约束,通过唯一索引效率很高。但是辅助索引 需要两次查 询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大, 其他索引也都会 很大。 MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件 的指针。主键索引和辅助索引是独立的。 temp(MEMORY)表引擎:存储的数据是在内存中存储的,不具备持久化的特性。通常一些临时表的表引擎 使用temp 表引擎的操作: 查询mysql数据库中的所有表引擎:
?在创建表时,指定表引擎
三、全文索引全文索引用于匹配查询,检索效率高于like语句 创建全文索引
使用全文索引 检索字符串长度大于等于4的内容。 在MySQL 5.7支持ngram解析器,检索中文
词和词之间使用数字和符号或空格分隔的
全文检索有两种模式分别是:自然检索模式和boolean检索模式,默认是自然检索模式,boolean模式可以配合一 些符号进行检索 ,例如要检索的内容 描述 包含中国但不包含北京 使用boolean模式 检查包含中国但不包含内径的address
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 8:50:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |