数据库事务补充和存储引擎

news2024/9/21 20:53:56

一、数据库事物补充

1.1 事务之间的相互影响

1.2 Mysql事务隔离级别

1.2.1 read uncommitted

1.2.2 read committed

1.2.3 repeatable read(重读读取)

1.2.4 serializable(串行化)

1.3 事务的作用范围

1.3.1 查询全局事务隔离级别

1.3.2 查询会话事务隔离级别

1.3.3 设置全局事务隔离级别

1.3.4 设置会话事务隔离级别

1.4 事务控制语句

1.4.1  使用 set 设置控制事务

1.4.2 事务控制语句案例

二、MySQL存储引擎

2.1 存储引擎概念

2.2 Mysql常用存储引擎

2.2.1 MYISAM

2.2.2 INNODB

2.3 修改存储引擎

2.3.1 通过 alter table修改

2.3.2 通过配置文件修改

2.4 小结


一、数据库事物补充

1.1 事务之间的相互影响

(1) 脏读: 一个事务读取了另一个事务未提交的数据,而这个数据是有可能回滚的。

(2) 不可重复读: 一个事务内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。

(3) 幻读: 一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,另一个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,操作前一个事务的用户会发现表中还有没有修改的数据行,就好象发生了幻觉一样。

(4) 丢失更新: 两个事务同时读取同一条记录,A先修改记录,B也修改记录(B不知道A修改过),B提交数据后B的修改结果覆盖了A的修改结果。

1.2 Mysql事务隔离级别

1.2.1 read uncommitted

读取尚未提交的数据 ——允许脏读

安全性最差,但性能最好(不使用)

1.2.2 read committed

读取已经提交的数据 ——不允许脏读

安全性较差,性能较好(oracle数据库默认)

1.2.3 repeatable read(重读读取)

可以解决脏读和不可重复读

安全性较高,性能较差(mysql数据库默认)

1.2.4 serializable(串行化)

完全串行化的读,将一个事务与其他事务完全地隔离。每次读都需要获得表级共享锁,读写相互都会阻塞。可以防止脏读,不可重复读取和幻读,但是事务的串行化会降低数据库的效率。

安全性高,性能差(不使用)

注意:mysql默认的事务处理级别是repeatable read,而Oracle和SQL Server是read committed 。

1.3 事务的作用范围

事务隔离级别的作用范围分为两种:

全局级:对所有的会话有效

会话级:只对当前的会话有效

1.3.1 查询全局事务隔离级别

1.3.2 查询会话事务隔离级别

1.3.3 设置全局事务隔离级别

1.3.4 设置会话事务隔离级别

1.4 事务控制语句

BEGIN 或 START TRANSACTION : 显式地开启一个事务。

COMMIT 或 COMMIT WORK : 提交事务,并使已对数据库进行的所有修改变为永久性的。

ROLLBACK 或 ROLLBACK WORK : 

回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。

SAVEPOINT S1 :

使用 SAVEPOINT 允许在事务中创建一个回滚点,一个事务中可以有多个SAVEPOINT,

S1"代表回滚点名称。

ROLLBACK TO [SAVEPOINT] S1: 把事务回滚到标记点。

1.4.1  使用 set 设置控制事务

SET AUTOCOMMIT=0; #禁止自动提交

SET AUTOCOMMIT=1; #开启自动提交,Mysql默认为1

SHOW VARIABLES LIKE 'AUTOCOMMIT'; #查看Mysq1中的AUTOCOMMIT值

1.4.2 事务控制语句案例

注意:如果没有开启自动提交,当前会话连接的mysql的所有操作都会当成一个事务直到你输入rollback l commit;当前事务才算结束。当前事务结束前新的mysql连接时无法读取到任何当前会话的操作结果。如果开起了自动提交,mysql会把每个sql语句当成一个事务,然后自动的commit。
当然无论开启与否,begin;commit l rollback;都是独立的事务。

二、MySQL存储引擎

2.1 存储引擎概念

MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式。

2.2 Mysql常用存储引擎

INNODB、MYISAM、CSY、MEMORY、NDB、CLUSTER等,主要介绍INNODB和MYISAM。

2.2.1 MYISAM

5.5之前的默认存储引擎。

(1)MyISAM不支持事务,也不支持外键,访问速度快,对事务完整性没有要求。

(2)MyISAM在磁盘上存储成三个文件:

.frm文件存储表定义,

数据文件的扩展名为.MYD(MYData)。

索引文件的扩展名是.MYI(MYIndex)。

(3)表级锁定形式,数据在更新时锁定整个表

(4)数据库在读写过程中相互阻塞。

        1)会在数据写入的过程阻塞用户数据的读取

        2)也会在数据读取的过程中阻塞用户的数据写入

(5)数据单独写入或读取,速度过程较快且占用资源相对少

(6)支持的存储格式:

        1)静态表,固定长度表。静态表是MYISAM的默认存储格式,静态表中字段都是非可变字段,每个记录都是固定长度的。存储快,方便缓存,有了故障容易恢复,缺点是占用空间比较多。

        2)动态表,动态表可以包含可变字段,记录的长度是不固定的,优点是占用空间少。频繁更新数据,删除记录,会产生碎片,需要定期清理。myisamchk -r。出现故障恢复比较困难。

        3)压缩表,myisamchk工具创建的,占据空间很小。每条记录都是单独压缩的,所以只有非常小的访问开支。

(7)应用场景:适合于单方向的任务场景、同时并发量不高、对于事务要求不高的场景。

2.2.2 INNODB

5.5之后MySQL的默认存储引擎,事务型速记引擎。

(1)特点:

        支持4个事务隔离级别。

        行级锁定,但是全表扫描仍然会是表级锁定。

        读写阻塞与事务隔离级别相关。

        能非常高效的缓存索引和数据。

        表与主键以簇的方式存储。

        支持分区、表空间,类似oracle数据库。

        支持外键约束,5.5前不支持全文索引,5.5后支持全文索。

        对硬件资源要求还是比较高的场合。

(2)适用场景

        1) 业务需要事务的支持。

        2) 论坛、微博,对数据一致性比较高的场景。

        3) 访问量和并发量比较高的场景,innodb支持缓存,可以减少后台服务器的压力。

(3)innodb三个文件:

        表名.frm (表结构文件)。

        表名.idb (既是数据文件,又是索引文件)。

        db.opt (属性文件)。

2.3 修改存储引擎

2.3.1 通过 alter table修改

2.3.2 通过配置文件修改

vim /etc/my.cnf
[mysqld]
default-storage-engine=INNODB

保存退出并使用下列命令重启服务

systemctl restart mysqld.service

2.4 小结

InnoDB支持事物,而MyISAM不支持事物;

InnoDB支持行级锁,而MyISAM支持表级锁;

InnoDB支持MVCC ,而MyISAM不支持。

InnoDB支持外键。而MyISAM不支持;

lnnoDB支持全文索引,而MyISAM支持。

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

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

相关文章

智慧医疗包括哪些方面?智慧医疗发展前景如何?

近年来,随着云计算、物联网(internet of things,IOT)、移动互联网、大数据、人工智能(artificial intelligence,AI)、5G网络、区块链等新一代信息技术的逐步成熟和广泛应用,信息化已…

设计模式之工厂方法模式精讲

工厂方法模式又叫虚拟构造函数(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建性工作推迟到子类中。 工厂模式可以分为简单工厂…

【哈希专题】【蓝桥杯备考训练】:星空之夜、模拟散列表、字符串哈希、四平方和、扫雷【已更新完成】

目录 1、星空之夜(usaco training 5.1) 2、模拟散列表(模板) 3、字符串哈希(模板) 4、四平方和(第七届蓝桥杯省赛C A组/B组 & JAVA B组/C组) 5、扫雷(Google Ki…

【学习】软件测试行业未来的发展趋势预测

近年来,随着中国数字经济的蓬勃发展,软件测试行业也迎来了新的春天。从早期的手工测试到自动化测试,再到持续集成和持续交付,中国的软件测试行业经历了快速的发展和变革。各行各业均对软件测试提出了更高的要求,尤其在…

基于java+springboot+vue实现的大学生二手物品交易商城(文末源码+Lw+ppt)23-329

摘 要 二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这…

暴雨讲堂:AI时代第五代英特尔CPU能做什么?

如果把科技圈比作娱乐圈,那么这两年的顶流一定是AI。2023年,世人见证了ChatGPT在全球范围内的大火,以生成式AI为代表的新一轮人工智能应用问世,改变了人工智能(AI)技术与应用的发展轨迹,并开始在…

展馆人数统计显示屏的功能分析

展馆人数统计显示屏是展览馆、博物馆、商场等公共场所常见的一种设备,它能够实时显示当前场馆内的人数信息,为管理者和游客提供重要参考。展馆人数统计显示屏的功能分析是对这一设备的作用、特点和优势进行深入剖析,有助于更好地了解其在实际…

音视频处理 - 音频概念详解,码率,采样率,位深度,声道,编码

1. 音频采样 与视频不同,音频的最小单位不是一帧,而是一个采样。 采样是当前一刻声音的声音样本,样本需要经过数字转换才能存储为样本数据。 真实声音是连续的,但是在计算机中,声音是离散且均匀的声音样本。 2. 位深…

【倪琴仲尼式-雷伴】全新倪诗韵精品杉木古琴

试音中的用弦:梦音,视频录音无任何处理,所见即所得。 现琴比照片更好看。倪琴吊牌、琴额后面的编码和倪琴官网上的序列号是一一对应的,可查。 雷伴,“伴”字取意陪伴、相伴、依随。栗壳色,纯鹿角霜生漆工艺…

反射率光纤光谱仪检测汽车后视镜反射率

反射率光纤光谱仪是一种用于测量材料表面反射率的精密仪器,它通过光纤传输光信号,并利用光谱仪进行分析,以确定材料的光学特性。反射率光纤光谱仪的工作原理基于相对反射率的计算,它涉及到光源、光纤、光谱仪等关键组件。 后视镜能…

使用ES5进行win10系统封装

一、概述 为什么那时候会折腾这个呢,因为我平时用的一般是PE或者直接刻录安装系统,但是这样类似于每次安装完系统后都需要进行一些优化设置,比如电源选项、资源管理器设置、办公软件安装等等,我也听说过ghost但是没有实际用过不过…

Apache Hive的部署与体验

一、Apache Hive概述 什么是分布式SQL计算? 以分布式的形式,执行SQL语句,进行数据统计分析。Apache Hive是做什么的? 很简单,将SQL语句翻译成MapReduce程序,从而提供用户分布式SQL计算的能力。传统MapRed…

[2023] 14届

1.日期统计 题意 1.日期统计 - 蓝桥云课 (lanqiao.cn) 思路 用dfs扫 对每一个位进行限制 花了一个小时 注意把答案枚举出来 对应一下看到底对不对 code #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<al…

一文看懂算法交易(二)

国内T0算法哪家强&#xff1f;算法交易费用是多少&#xff1f;算法交易哪些平台好&#xff1f; 我们接上文今天给大家继续分享&#xff0c;我们昨天大致了解了什么是算法交易&#xff0c;国内的算法总线大概有些啥&#xff0c;算法交易的类型。那么我们今天再普及下&#xff0c…

neo4j使用详解(三、cypher插入语法——最全参考)

1.插入语法 create, merge, set, delete, remove, create unique, load csv(import) 除插入语法外另外的语法详情请博主其他文章&#xff1a; 查询语法 其他语法 1.1.create语法 创建单个节点: create(n) # (ID:n) 创建带标签的节点: create (n:Person) # (ID:n, label:Perso…

Tableau项目实战-网站流量统计分析

数据介绍 网站流量分析.xlsx 1、页面指标分析 页面指标主要有网站流量指标、用户行为指标、用户浏览网站的方式等。 页面访问次数 访客完整打开网站页面进行访问的次数,访问次数是网站访问速度的衡量标准。 平均停留的时间 平均访问时长是用户访问网站的平均停留时间。 …

力扣HOT100 - 42. 接雨水

解题思路&#xff1a; 动态规划 感觉不是很好想 class Solution {public int trap(int[] height) {int n height.length;if (n 0) return 0;int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i…

基于Springboot Vue医院管理系统+数据库脚本+文档(万字)

项目效果视频: 基于Springboot Vue医院管理系统 一、 项目介绍 角色&#xff1a;管理员、患者、医生 基于springboot vue实现的医院管理系统&#xff0c;有管理员、医生和患者三种角色。系统拥有丰富的功能&#xff0c;能够满足各类用户的需求&#xff0c;系统提供了登录和注册…

javaWeb学生宿舍管理系统

一、摘要 本博客介绍了如何使用Spring Boot和MySQL构建一个功能完善的JavaWeb学生宿舍管理系统。该系统分为三个角色&#xff1a;管理员、宿管和学生。管理员拥有对整个系统的全面管理权限&#xff0c;包括学生管理、宿舍管理、入住管理和管理员管理&#xff1b;宿管负责宿舍的…

线上linux服务器升级nginx

一个nginx版本空包 一个pcre文件 一个zlib文件 ./configure配置文件 make编译 make install复制所有文件到nginx 如果nginx -v无版本号 检查环境变量cat /etc/profile 编辑 环境变量vi /etc/profile 按i进入编辑模式 按esc进入查看模式 因为path中并未使用%JAVA_HOME%字样…