MYSQL--(1.存储引擎 *2.事务*)

一 存储引擎:

        1.介绍

                1>在数据库管理系统当中通过使用数据引擎来实现数据的增删改,查询
                2>不同的存储引擎提供的有不同的存储机制,索引技巧等功能  MYSQL的核心,就是存储引擎
                3>同样的,用户也可以根据自己的需要进行选择,更改自己需要的存储引擎
                4>可以使用show engines 来查询当前所有的存储引擎

        2.分类介绍:

                1>先简单介绍存储引擎最常用的: MYLSAM  InnoDB  Memory

                2>全部存储引擎介绍:

        3.操作: 

-- 1.查看当前的默认存储引擎
show variables like '%storage_engine%';
在MYSQL5.5之前,是以MYLSAM作为默认的存储引擎的
在5.5之后,默认引擎变成了InnoDB-- 2.查看具体的某个表所使用的引擎(看显示结果当中engine后面显示的,就是存储引擎)
show create table tablename;-- 3.创建某个新表时设置存储引擎
create table(....) engine=enginenamn;-- 4.修改某个已经存在的表的存储引擎
alter table tablename engine=enginename;

二 事务:

        1.介绍:

                事务是通过存储引擎实现的,而且目前来看,对于MYSQL仅仅只有InnoDBc才能够支持事务的使用

        2.作用:

                1>事务能够用来保证数据库的完整性,保证大量的SQL语句的执行,要么全部执行,要么全部不执行!

                2>事务用来对于DDL,DML,DCL进行操作,比如插入,修改,删除等操作,并且默认都是自动提交的!

        3.操作:

事务操作主要有以下几个
1.打开事务 Start Transaction任何一条的DML操作的执行,都标志着事务的开始-- 可以使用.begin.作为开始语句
2.提交事务(所有语句全部正常执行)  Commit Transaction成功的结束,会将所有的DML操作历史记录跟底层硬盘进行一次同步
3.回滚事务(语句执行不完全) Rollback Transaction结束失败,将所有的DML历史操作清空但是需要注意的一点是,再平常的使用当中,系统会自动将每一条的DML看作是一个事务,自动的提交,但是在有多个语句的事务当中,应当是全部完成之后成功了,才会进行提交!所以需要我们手动的关闭自动提交的指令
set autocommit=0; 禁止自动提交
set autocommit=1; 开始自动提交create database transaction_1;
use transaction_1;
create table acount(
id int primary key,
name VARCHAR(20),
money double
);insert into acount VALUES(1,'张三',1000);
insert into acount VALUES(2,'李四',2000);将1账户的钱转给2账户,使用事务的方式
set autocommit=0;
-- 查看状态
select @@autocommit;
begin;
update acount set money= money-200 where name='张三';
update acount set money= money+200 where name='李四';
-- 提交事务
commit;
-- 回滚事务
rollback;end;

        4.事务的特性:

1.原子性:

        其实就是整体性,必须将事务当中的所有语句当作是一个整体,不可分割,事务开始后的所有操作,要么全部执行,要么全部都不会执行


2.一致性:

        也就是事务执行前后的状态必须要保持一致!


3.隔离性:

        在一些比较大的工程当中,有许多的事务,为了避免一些错误的产生,就需要对这些事务进行隔离处理


4.持久性:

        事务在提交之前,都可以通过回滚的方式而不让数据落地!但是一但提交,是无法再回滚的,是永久性的!

        5 事务的隔离级别:

                1.介绍:

                当多个事务对一个表进行操作的时候,为了避免几个事务同时对于表进行修改从而产生错误.使得最后的结果没有达到预期.因此就需要使用事务隔离 I

                2.分类:

                

                主要是四类,并且从上到下,其事务与事务之间的关联就越小,影响程度就越小 

                TIPS:mysql的默认隔离级别是第三种!

                                自然,不同的隔离级别,也会产生不一样的问题

 

                3.隔离级别相关操作:

查看隔离级别show variables like '%isolation%';-- 设置隔离级别(从上往下的关系程度越来越小,联系越小)set session transaction isolation level read unconmmitted;set session transaction isolation level read conmmitted;set session transaction isolation level repeatable read;set session transaction isolation level SERIALIZABLE;

               4.对于各个级别问题的概述*

 set session transaction isolation level read unconmmitted;-- 脏读,举一个简单的例子,上班组小王在月末发现银行卡里'获得'了工资,10000元,但是之后老板发现发错了,在小王快要消费的时候进行了rollback,实际上的数据并没有从磁盘当中进行复制读取,在提交之前,小王的账户就多了前,这就是脏读!也就是发生在数据还没有完全提交的时候set session transaction isolation level read conmmitted;
-- 这种级别会产生不可重复读:指的是对于A事务来说,在B事务执行过DML的一些语句之后,B事务提交之前,跟B事务提交之后,A读取出来的数据是不一样的,不是重复的,因此被称作不可重复读set session transaction isolation level repeatable read;-- 这种隔离级别会产生可重复读,相对于不可重复度,可重复读,无论在B事务提交前还是后,A读取的值是一样的,但是也有问题,A提交前后的值不一样,有不可重复读的存在!set session transaction isolation level SERIALIZABLE;-- 没有事务之间的问题,因为这种的隔离方式将所有的事务单独区分开了,一个事务只能够看着另外一个事务做完事情之后才能够进行,因此其效率比较的低下

                                                                OVER!感谢观看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/493451.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习 LangChain 的 Passing data through

学习 LangChain 的 Passing data through 1. Passing data through2. 示例 1. Passing data through RunnablePassthrough 允许不改变或添加额外的键来传递输入。这通常与 RunnableParallel 结合使用,将数据分配给映射中的新键。 RunnablePassthrough() 单独调用&…

【GAD】DOMINANT个人解读/学习

SDM2019,这是一篇图异常检测领域的经典方法. 问题定义 在本文中,我们使用手写体来表示集合(例如, V \mathcal{V} V),粗体小写字母(例如, x \mathbf{x} x)来表示向量&…

Sora抢饭碗!好莱坞大亨停止,8亿美元投资

好莱坞消息,著名演员、影视投资人Tyler Perry在看到OpenAI最新发布的文生视频模型Sora后,停止了8亿(约57亿元)美元的投资。 该投资项目位于亚特兰大,本来要扩展十几个摄影棚用于影视剧的拍摄(类似横店影视…

golang学习1,dea的golang-1.22.0

参考:使用IDEA配置GO的开发环境备忘录-CSDN博客 1.下载All releases - The Go Programming Language (google.cn) 2.直接next 3.window环境变量配置 4.idea的go插件安装 5.新建go项目找不到jdk解决 https://blog.csdn.net/ouyang111222/article/details/1361657…

【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑

之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践,主要关注在MetaGPT入门和单智能体部分(系列文章附在文末,感兴趣的可以看下)。现在新的教程来了,新教程主要关注多智能体部分。 本系列文章跟随《M…

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序 一、演示效果二、流程步骤三、下载链接 一、演示效果 二、流程步骤 1、使用微信小程序官方开发工具导入本项目并开通云开发以及内容管理服务。 2、修…

程序员的护城河是什么?最终走向……?

程序员未来会大量失业,就是因为社会需求少,导致开发者岗位减少,人力资源过剩所导致。Android刚开始的零几年非常火热,是个人都要。到如今的内卷,高级开发都拿着中低程序员的薪资。这是因为头部大厂形成标准化&#xff…

面试redis篇-11Redis集群方案-哨兵

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下: 监控:Sentinel 会不断检查您的master和slave是否按预期工作自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主通知:Sentinel充当…

Codeforces Round 881 (Div. 3) F2. Omsk Metro (hard version)(倍增+最大子段和)

原题链接:F2. Omsk Metro (hard version) 题目大意: 最初开始时,你有一个根节点 1 1 1 且权值为 1 1 1 。 接下来会有 n n n 个操作,每次操作按照如下格式给出: 设操作开始前节点总数为 c n t cnt cnt&#xff1…

基于Java的艺培管理解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

用html编写的简易新闻页面

用html编写的简易新闻页面 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

LeetCode二叉树中的第 K 大层和

题目描述 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和&#xff08;不一定不同&#xff09;。如果树少于 k 层&#xff0c;则返回 -1 。 注意&#xff0c;如果两个节点与根节点的距离相同&#xff0c;则…