Mysql理解

关于MySQL的理解? 一,数据库概述? 1,数据库概述 1.1 为什么软件测试工程师还需要学习数据库以及开发方面的知识? 测试工程师的目的是为了找出软件的不足,并告诉开发工程师,出现问题的环境,操作步骤以及输入输出的数据;优秀的测试工程师,需要告诉开发团队,软件的不足,这类不足会导致什么情况,如何避免,以及如何人去修改(这就是高级软件工程师币软件开发人员工资高的原因)。 测试工程师在软件测试过程中,不仅仅需要在界面进行操作,还需要检查数据库中的数据是否正确,从而在软件出现问题的时候,能够定位到问题的原因。 ... 阅读详情

一、事务的基本要素(ACID)

  1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

   2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。

   3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

   4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

 

二、事务的并发问题

  1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

  2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。

  3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

  小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

 

三、MySQL事务隔离级别

事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)是是是
不可重复读(read-committed)否是是
可重复读(repeatable-read)否否是
串行化(serializable)否否否

九、事务四大特性之一————隔离性(isolation)
事物A和事物B之间具有一定的隔离性
隔离性有隔离级别(4个) 
读未提交:read uncommitted
读已提交:read committed  (oracle默认级别)
可重复读:repeatable read(mysql默认级别)
串行化:serializable
1、 read uncommitted
- 事物A和事物B,事物A未提交的数据,事物B可以读取到
- 这里读取到的数据叫做“脏数据”
- 这种隔离级别最低,这种级别一般是在理论上存在,数据库隔离级别一般都高于该级别

2、read committed
- 事物A和事物B,事物A提交的数据,事物B才能读取到
- 这种隔离级别高于读未提交
- 换句话说,对方事物提交之后的数据,我当前事物才能读取到
- 这种级别可以避免“脏数据”
- 这种隔离级别会导致“不可重复读取”
- Oracle默认隔离级别

3、repeatable read
- 事务A和事务B,事务A提交之后的数据,事务B读取不到
- 事务B是可重复读取数据
- 这种隔离级别高于读已提交
- 换句话说,对方提交之后的数据,我还是读取不到
- 这种隔离级别可以避免“不可重复读取”,达到可重复读取
- 比如1点和2点读到数据是同一个
- MySQL默认级别
- 虽然可以达到可重复读取,但是会导致“幻像读”

4、serializable
- 事务A和事务B,事务A在操作数据库时,事务B只能排队等待
- 这种隔离级别很少使用,吞吐量太低,用户体验差
- 这种级别可以避免“幻像读”,每一次读取的都是数据库中真实存在数据,事务A与事务B串行,而不并发

十、隔离级别与一致性关系

十一、设置事务隔离级别
方式一
可以在my.ini文件中使用transaction-isolation选项来设置服务器的缺省事务隔离级别。

该选项值可以是:

– READ-UNCOMMITTED
– READ-COMMITTED
– REPEATABLE-READ
– SERIALIZABLE

•   例如:
[mysqld]
transaction-isolation = READ-COMMITTED

方式二
通过命令动态设置隔离级别 
• 隔离级别也可以在运行的服务器中动态设置,应使用SET TRANSACTION ISOLATION LEVEL语句。 
• 其语法模式为:

        SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL <isolation-level>
        其中的<isolation-level>可以是:
    –   READ UNCOMMITTED
    –   READ COMMITTED
    –   REPEATABLE READ
    –   SERIALIZABLE
    •   例如: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
十二、隔离级别的作用范围
•   事务隔离级别的作用范围分为两种: 
–   全局级:对所有的会话有效 
–   会话级:只对当前的会话有效 
•   例如,设置会话级隔离级别为READ COMMITTED :
mysql> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
或:
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
•   设置全局级隔离级别为READ COMMITTED : 
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
十三、查看隔离级别
•   事务隔离级别的作用范围分为两种: 
–   全局级:对所有的会话有效 
–   会话级:只对当前的会话有效 
•   例如,设置会话级隔离级别为READ COMMITTED :
mysql> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
或:
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
•   设置全局级隔离级别为READ COMMITTED : 
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

mysql默认的事务隔离级别为repeatable-read

MySQL 是怎样运行的:从根儿上理解 MySQL MySQL凭借着它还不错的性能、还不错的稳定性常年稳居老二宝座,当然最大的优势就是它不要钱,还开源,这让它成为大部分中小型公司,尤其是互联网公司首选的数据库(近年来,越来越多的大公司也在尝试将业务转移到这种不要钱的数据库上来)。越来越多的DBA和后端同学在工作中少不了和MySQL为什么这个SQL执行的这么慢?为什么明明我建了索引但查询计划显示没用?为什么我的IN查询里的参数一多就不使用索引了?为什么突然我的数据就成了乱码?到底应不应该使用连接查询?吧啦吧啦一大堆……在面试中。... 阅读详情

相关推荐

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 317

MySQL——深入理解

MySQL——深入理解主要包括MySQL的存储引擎、索引以及索引对数据库操作的性能优化、SQL优化、视图、存储过程、存储函数、触发器、锁、innoDB引擎的结构原理和数据库的相关管理操作。在这篇文章中,荔枝也是且学且整理,希望能帮助到有需要的小伙伴吧,不用再花时间整理笔记咯~

荔枝当大佬的博客 3218

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 706

MySQL是怎样运行的:从根儿上理解MySQL | 锁

文章目录前言:本博文是对MySQL是怎样运行的:从根儿上理解MySQL这本书的归纳和总结第25章 工作面试老大难-锁1.解决并发事务带来问题的两种基本方式1.1 并发事务访问相同记录的情况的三种情况 前言:本博文是对MySQL是怎样运行的:从根儿上理解MySQL这本书的归纳和总结 第25章 工作面试老大难-锁 1.解决并发事务带来问题的两种基本方式 1.1 并发事务访问相同记录的情况的三种情况 ...

光看不点赞的博客 5968

flink新版本无bat启动文件的解决办法

flink

6 4932

电机转矩、功率与转速:核心关系、公式推导与工程应用指南

在电气传动与自动化控制领域,理解旋转机械的核心物理量是进行设备选型、系统设计和故障诊断的基础。转矩、功率和转速构成了描述电机性能的“铁三角”,它们之间通过经典的物理公式紧密关联。从原理上讲,功率是单位时间内做功的能力,转矩是产生旋转运动的力矩,而转速则决定了运动快慢。这三者的关系(P = T × n / 9550)不仅是理论核心,更是工程实践中的关键计算工具,直接关系到电机的驱动能力、能耗与系统匹配。其技术价值在于,它为从微型伺服电机到大型工业传动系统的设计提供了统一的量化分析框架。在应用场景上,无论是为输

weixin_29184371的博客 255

深入理解MySql数据库

数据库中的索引是提高数据检索效率的重要工具。聚簇索引和非聚簇索引是常见的索引类型。聚簇索引决定了数据行的物理存储顺序,与索引的顺序一致,适合范围查询和按顺序访问数据。非聚簇索引通过索引键值与数据行的对应关系进行索引,适合单个值的查找和特定列的查询。聚簇索引与数据行共享存储空间,更新操作可能导致数据行的重排序;非聚簇索引与数据行的存储分离,更新操作只影响索引本身。聚簇索引的索引键值必须唯一,而非聚簇索引可以是唯一或非唯一。了解和选择合适的索引类型对于优化数据库性能至关重要。

weixin_55010563的博客 169

基于人脸识别的课堂考勤系统 tkinter+openpyxl+face_recognition

基于face_recognition库实现人脸考勤系统功能。利用Python的tkinter模块来设计考勤系统的图形化界面,此外结合openpyxl模块,实现将学生的信息和考勤打卡数据保存到表格中,方便查看和调用。该系统具备“刷脸打卡”、“新学生注册”等功能。............

lyx4949的博客 6965

MySQL是怎样运行的:从根儿上理解MySQL | 查询优化器(二):基于规则的优化

也就是说:在这种情况下:外连接和内连接也就没有什么区别了。

光看不点赞的博客 3619

网络变压器等效电路及网络变压器中间抽头作用详解

       华强盛电子导读:要详细了解网络变压器周边EMC管控及网络变压器BOB-SMITH电路的连接原理,首先我们对网络变压器的认识及其电路各参数影响都要有个简要的认识,本文,对非理想网络变压器等效电路做一个详细的分析,其中重点讨论一下网络变压器中间抽头的作用其影响                          网络变压器等效电路及                        ...

网络变压器专业资料 6005

借助Gemini 3 Pro高效解决课题申报中的五大核心痛点,亲测有效经验分享

之前给大家分享过关于AI辅助课题申报的相关的内容,涵盖了申报书部分撰写技巧,但没针对性拆解各位同仁在实际申报时遇到的卡壳的地方。比如选题范围拿捏不准,定的太大,根本没法落地完成;定的太小,研究价值则体现不了;写综述时,容易单纯罗列文献,缺乏批判性视角,没办法自然融入自己的判断,找不到研究缺口;研究方法部分,可能担心方法设计不够严谨,别人难以复现.....针对这些申报中的高频痛点,接下来七哥会从五个核心要点出发,借助Gemini 3 Pro高效解决这些痛点。

智能AI让学术科研更容易 700

转:MySQL 是怎样运行的:从根儿上理解 MySQL

转:MySQL 是怎样运行的:从根儿上理解 MySQL

baidu_37307156的博客 9181

go语言实现服务器server端与客户client端即时通信(附完整源码)

go语言实现服务器server端与客户client端即时通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 626

从根儿上理解mysql_从根儿上理解 MySQL - 页总结

页结构简介由于 MySQL 的真实数据是存储在磁盘, 因此在读写数据是会涉及磁盘 IO, 为了更高效率的读取, MySQL 设计页结构, 每次交互以页为单位读取到内存. 页的大小一般为 16KB行格式行格式主要分为四种类型Compact、Redundant、Dynamic和Compressed. 主要理解 CompactCompact 行格式 行格式主要分为记录的额外信息, 记录的真实数据变长字段...

weixin_39667801的博客 435

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MySQL 是怎样运行的:从根儿上理解 MySQL(上)

MySQL 是怎样运行的:从根儿上理解 MySQL(上) 【下载地址】MySQL是怎样运行的从根儿上理解MySQL上 《MySQL 是怎样运行的:从根儿上理解 MySQL(上)》是一份深入浅出的教程,全面剖析了MySQL数据库的运行原理。本教程以通俗易懂的语言,帮助读者从源头理解MySQL,为之后的学习和实践打下坚实基础...

gitblog_06708的博客 479

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MySQL 是怎样运行的:从根儿上理解 MySQL(下)

MySQL 是怎样运行的:从根儿上理解 MySQL(下) 【下载地址】MySQL是怎样运行的从根儿上理解MySQL下 《MySQL 是怎样运行的:从根儿上理解 MySQL(下)》是一份深入浅出的学习资料,帮助读者全面理解 MySQL 数据库的内部工作原理。内容涵盖存储引擎、索引原理与优化、SQL 语句执行过程、事务与锁的...

gitblog_06749的博客 472

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MySQL 幻读的理解

MySQL 幻读的理解

sky198989的博客 135

你怎样理解mysql_理解MySQL——索引与优化

原标题:理解MySQL——索引与优化写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O...

weixin_36150816的博客 82

深入理解MySQL主从原理

高鹏(网名八怪),《深入理解MySQL主从原理》系列文的作者。 本系列通过GTID、Event、主库、从库、案例分析,五大块来详细讲解主从原理。

热爱数据库的小胖 869

Mysql的MVCC的理解

面试官:谈谈你对Mysql的MVCC的理解?

zhengjianqi的专栏 164

深入理解MySQL

MySQL逻辑框架 最上层服务并不是MySQL所独有,大多基于网络的客户端/服务器的工具或服务都有类似的架构。如连接处理、授权认证、安全等 第二层架构是MySQL核心服务所在曾,包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现存储过程、触发器、视图等 第三层包含存储引擎 ,负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。存储引擎不会去解析

WN0813的博客 818

MySQL:事务的理解

因为,MySQL里面存的是数据,所以很有可能会被多个客户访问,所以mysqld可能一次会接受到多个关于CURD的请求。(2)且mysql内部是采用多线程来完成数据存储等相关工作的,所以必然会存在对数据并发访问的场景      ——>会导致一些多请求并发可能产生的异常结果

weixin_51142926的博客 4037

MySQL中对于索引的理解

按照物理实现方式,可分为聚簇索引和非聚簇索引,其中非聚簇索引又称为二级索引或者辅助索引。 按照底层数据结构角度可以分为树索引(时间复杂度O(log(n)))和Hash索引(时间复杂度O(log(1))).聚簇索引是一种数据存储方式(所有的用户记录都存储在叶子结点),也就是所谓的索引即数据,数据即索引。“聚簇”表示数据行和相邻的键值聚簇在一起。如下图 聚簇的优点和缺点由于聚簇索引只能在搜索条件是主键值时才能发挥作用,因为B+树中的数据都是按照主键进行排序的。那如果我们想以别的列作为搜索条件该怎么办呢?肯定不

qq_41894176的博客 1299
上一篇: Spring理解
下一篇: Mysql语句性能
XiaoWenJava123
博客等级 码龄9年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值