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.mzph.cn/news/703075.shtml

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

相关文章

【Linux】部署前后端分离项目---(Nginx自启,负载均衡)

目录 前言 一 Nginx(自启动) 2.1 Nginx的安装 2.2 设置自启动Nginx 二 Nginx负载均衡tomcat 2.1 准备两个tomcat 2.1.1 复制tomcat 2.1.2 修改server.xml文件 2.1.3 开放端口 2.2 Nginx配置 2.2.1 修改nginx.conf文件 2.2.2 重启Nginx服务 2…

力扣● 343. 整数拆分 ● 96.不同的二叉搜索树

● 343. 整数拆分 想不到,要勇于看题解。 关键在于理解递推公式。 1、DP数组及其下标的含义:dp[i]是分解i这个数得到的最大的乘积。 2、DP数组如何初始化:dp[0]和dp[1]都没意义,所以直接不赋值,初始化dp[2]1即可。…

WordPres Bricks Builder 前台RCE漏洞复现(CVE-2024-25600)

0x01 产品简介 Bricks Builder是一款用于WordPress的开发主题,提供直观的拖放界面,用于设计和构建WordPress网站。它使用户能够轻松创建自定义的网页布局和设计,无需编写或了解复杂的代码。Bricks Builder具有用户友好的界面和强大的功能,使用户可以通过简单的拖放操作添加…

任务书参考答案-模块3-理论题

理论技能与职业素养(100分) “信息安全管理与评估”理论技能 一、 单选题 (每题2分,共35题,共70分) 1、应急事件响应和恢复措施的目标是( B )。 A、保证信息安全 B、最小化事件的影响 C、找出事件的责任人 D、加强组织内部的监管 2、下列数据类型不属于静态数据提取的…

计算机设计大赛 深度学习图像风格迁移 - opencv python

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

Mybatis中 <where> </where> 标签

mybatis的动态sql非常强大。 其中 标签 在不满足 where子句后面的筛选条件时&#xff0c;会去掉 where 子句。 例&#xff1a; <select id"findList" resultMap"userMap" parameterType"UserDto">select*FROMusers<where><if …

【VUE】使用vant组件

1:van-field 格式化金额保留两位小数 // 页面 <van-fieldv-model"curValue"label"充值金额"placeholder"请输入充值金额"type"number"input-align"right"input"numberFixedDigit" />//校验 /*** 格式化输入…

字典不能用to_pickle存储数据,得用dump存储数据

1.错误方式 data_dict {} ...... data_dict.to_pickle(save_path "data_dict.pkl")报错显示&#xff1a; AttributeError: ‘dict’ object has no attribute ‘to_pickle’ 2.正确方式 pickle.dump(data_dict, open(save_path data_dict.pkl, wb))

python57-Python的循环

循环语句可以在满足循环条件的情况下&#xff0c;反复执行某一段代码&#xff0c;这段被重复执行的代码被称为循环体。 当反复执行这个循环体时&#xff0c;需要在合适的时候把循环条件改为假&#xff0c;从而结束循环。 否则循环将一直执行下去&#xff0c;形成死循环。 循…

istio系列教程

istio学习记录——安装https://suxueit.com/article_detail/otVbfI0BWZdDRfKqvP3Gistio学习记录——体验bookinfo及可视化观测https://suxueit.com/article_detail/o9VdfI0BWZdDRfKqlv0r istio学习记录——kiali介绍https://suxueit.com/article_detail/pNVbfY0BWZdDRfKqX_0K …

Java学习之旅:从基础到高级

在当今快速发展的技术世界中&#xff0c;Java 仍然是最受欢迎和广泛使用的编程语言之一。无论是开发企业级应用、移动应用还是web应用&#xff0c;Java 都是开发者的首选语言之一。如果你是一个Java初学者&#xff0c;或者希望提升你的Java技能&#xff0c;那么遵循一个清晰的学…

【Java EE初阶二十三】servlet的简单理解

1. 初识servlet Servlet 是一个比较古老的编写网站的方式&#xff0c;早起Java 编写网站,主要使用 Servlet 的方式&#xff0c;后来 Java 中产生了一个Spring(一套框架)&#xff0c;Spring 又是针对 Servlet 进行了进一步封装,从而让我们编写网站变的更简单了&#xff1b;Sprin…

【卷积神经网络中用1*1 卷积有什么作用或者好处呢?】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 1*1 卷积有什么作用或者好处呢 作用降维和增加非线性特征组合和交互网络的宽度和深度调整全连接替代增强…

C++ //练习 9.6 下面程序有何错误?你应该如何修改它?

C Primer&#xff08;第5版&#xff09; 练习 9.6 练习 9.6 下面程序有何错误&#xff1f;你应该如何修改它&#xff1f; list<int> lst1; list<int>::iterator iter1 lst1.begin(),iter2 lst1.end(); while(iter1 < iter2) /* ... */环境&#xff1a;Linux…

高频面试题整理(一)

文章目录 平台无关性如何实现&#xff1f;JVM如何加载 .class文件&#xff1f;什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器&#xff1a;Java虚拟机栈局部变量表和操作数栈&#xff1a; Java内存模型中堆和栈的区别…

Android Gradle开发与应用 (二) : Groovy基础语法

1. Groovy是什么 Groovy是基于JVM虚拟机的一种动态语言&#xff0c;语法和Java非常相似&#xff0c;并能够无缝地与Java代码集成和互操作&#xff0c;增加了很多动态类型和灵活的特性。(闭包、DSL) 语法和Java非常相似这个特点&#xff0c;意味着&#xff0c;如果我们完全不懂…

Double 4 VR智能互动教学系统在思政课堂上的应用

一、Double 4VR智能互动教学系统的优点 1. 增强课堂互动性&#xff1a;VR技术可以创建虚拟场景&#xff0c;使学生在虚拟环境中进行互动&#xff0c;打破传统课堂的限制&#xff0c;提高课堂参与度。 2. 增强学习体验&#xff1a;VR技术能够为学生提供沉浸式的学习体验&#…

Python爬虫进阶:爬取在线电视剧信息与高级检索

简介&#xff1a; 本文将向你展示如何使用Python创建一个能够爬取在线电视剧信息的爬虫&#xff0c;并介绍如何实现更高级的检索功能。我们将使用requests和BeautifulSoup库来爬取数据&#xff0c;并使用pandas库来处理和存储检索结果。 目录 一、爬取在线电视剧信息 …

App开发-上线全流程笔记

云打包平台 一门App云打包安卓益APP本机号码认证 号码认证服务整合三大运营商特有的网关认证能力,应用于用户注册、登陆、安全校验等场景,实现无感知校验。https://www.yimenapp.net/module/ben-ji-hao-ma-ren-zheng-134.html 技术原理:https://juejin.cn/post/7066222614…

JavaScript学习小记(1)基本数据结构(数组,字符串)

一个寒假确实过的很快&#xff0c;这个寒假除了调包调参突然心血来潮想学一下前端&#xff0c;学习过程比较平滑&#xff0c;我是自己找的技术文档&#xff0b;写代码实践来学习的&#xff0c;教程视频虽然详细&#xff0c;但是真的一点都看不动。 目录 JS如何定义变量的老旧的…