mysql 基础知识

news2024/9/24 19:18:43

46ea8449307d4205b4f988f734b6944a.jpgMySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL的默认端口号是3306。

 

 

 

 

事务相关

 

 

什么是事务?

 

 

事务是逻辑上的一组操作,要么都执行,要么都不执行。

 

 

 

事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。

 

 

事物的四大特性(ACID)介绍一下?

 

 

原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;

 

一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;

 

隔离性: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;

 

持久性: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

 

 

并发事务带来哪些问题?

 

 

在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对统一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题:

 

 

 

脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。

 

丢失修改(Lost to modify): 指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。例如:事务1读取某表中的数据A=20,事务2也读取A=20,事务1修改A=A-1,事务2也修改A=A-1,最终结果A=19,事务1的修改被丢失。

 

不可重复读(Unrepeatableread): 指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。

 

幻读(Phantom read): 幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。

 

 

 

不可重复度和幻读区别:

 

 

 

不可重复读的重点是修改,幻读的重点在于新增或者删除。

 

 

 

例1(同样的条件, 你读取过的数据, 再次读取出来发现值不一样了 ):事务1中的A先生读取自己的工资为 1000的操作还没完成,事务2中的B先生就修改了A的工资为2000,导 致A再读自己的工资时工资变为 2000;这就是不可重复读。

 

 

 

例2(同样的条件, 第1次和第2次读出来的记录数不一样 ):假某工资单表中工资大于3000的有4人,事务1读取了所有工资大于3000的人,共查到4条记录,这时事务2 又插入了一条工资大于3000的记录,事务1再次读取时查到的记录就变为了5条,这样就导致了幻读。

 

 

 

事务隔离级别有哪些?MySQL的默认隔离级别是?

 

 

SQL 标准定义了四个隔离级别:

 

 

 

READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。

 

READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。

 

REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。

 

SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。

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

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

相关文章

HarmonyOS鸿蒙原生应用开发设计- 华为分享图标

HarmonyOS设计文档中,为大家提供了独特的华为分享图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的华为分享图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等&…

大型应用的架构演进--spring家族在其中的作用

01 大型应用的架构演进 带来的挑战: 运维与监控 分布式带来的复杂性 接口的调整成本 测试成本 依赖管理成本 02 Spring家族 在我看来,springboot的3大特点(我常用的):内置的web容器;开箱即用的starter模版;自动配置&…

什么是光学字符识别 (Optical Character Recognition)?

人工智能如何推动光学字符识别OCR的发展 人工智能正在不断改变着光学字符识别(Optical Character Recognition)工具的功能。作为计算机视觉的一个分支领域,OCR主要用于处理文本图像,将图像中的文本转换为机器可读的形式。换言之&…

JS小数运算精度丢失的问题

工作中会不会经常会碰到一些数据指标的计算,比如百分比转化,保留几位小数等,就会出现计算不准确,数据精度丢失的情况。通过这篇分享借助第三方库能够轻松解决数据精度丢失的问题。 一、场景复现 JS数字精度丢失的一些常见问题 /…

Leetcode 18 三数之和

//双指针&#xff0c;不过因为是三个数所以左侧是两个下标class Solution {public List<List<Integer>> threeSum(int[] nums) {int n nums.length;Arrays.sort(nums);List<List<Integer>> ans new ArrayList<List<Integer>>();for(int …

如何制作二维码会议签到系统?

展会电子签到系统是一种通过电子方式进行参会者签到的系统。展会电子签到系统包括多种签到方式&#xff0c;如二维码签到、人脸识别、胸卡等。其中二维码签到制作简单、使用方便&#xff0c;是一种大家比较常用的方式。 二维码系统签到的优势主要有以下几点&#xff1a; 1、省…

《Spring Boot源码解读与原理分析》带你走入框架的世界

Java被称为最热门的语言。 而Spring Boot为我们提供了一种优雅而高效的方式来创建Spring基于的应用程序。它利用了许多Spring项目和第三方库,通过自动配置简化了项目配置。 此书籍不仅带来了许多题例&#xff0c;而且文章简而易懂&#xff0c;适合小白阅读&#xff0c;而且每…

响应式设计与自适应设计有何不同

目录 前言 响应式设计 用法 理解 自适应设计 用法 理解 高质量的设计 响应式设计与自适应设计是两种不同的网页设计方法&#xff0c;它们都旨在提供更好的用户体验&#xff0c;确保网站能够在不同设备和屏幕尺寸上正确显示。虽然这两种设计方法有共同之处&#xff0c;但…

测试员突破瓶颈指南,不看又废了一年

有没有感觉忙忙碌碌&#xff0c;一年又一年&#xff0c;却发现自己在测试的道路上好像没啥长进 测试群、测开群、自动化群&#xff0c;没少加&#xff1b; 文章、公众号、网盘的资源没少关注和搜集&#xff1b; 大佬推荐的书没少买&#xff0c;书上落灰了都没碰过&#xff1…

linux性能分析(七)CPU性能篇(二)怎么理解平均负载

一 怎么理解平均负载 ① 如何查看平均复杂 查看系统负载的命令&#xff1a; top、uptime、w、cat /proc/loadavg、tload /proc/loadavg 思考&#xff1a; uptime每列输出的含义?重点&#xff1a; 当前时间、系统运行时间、正在登录用户数、平均负载 ② 思考&#xff1…

利用 Databend + COS助力 CDH 分析 | 某医药集团

作者&#xff1a; 黄志武 某医药集团信息中心数据库组组长&#xff0c;13 年数据库行业从业经历&#xff0c;Oracle OCM&#xff0c;关注 Oracle、MySQL、Redis、MongoDB、Oceanbase、Tidb、Polardb-X、TDSQL、CDH、Clickhouse、Doris、Databend 等多方面的关键领域技术&#…

JavaScript对象与原型

目录 对象的创建 原型与原型链 原型继承 总结 在JavaScript中&#xff0c;对象是非常重要的概念之一。它们允许我们以一种结构化的方式存储和组织数据&#xff0c;并提供了一种方便的方式来操作和访问这些数据。而对象的行为和属性则通过原型来定义。 对象的创建 在JavaS…

如何集成验证码短信API到你的应用程序

引言 当你需要为你的应用程序增加安全性和用户验证功能时&#xff0c;集成验证码短信API是一个明智的选择。验证码短信API可以帮助你轻松实现用户验证、密码重置和账户恢复等功能&#xff0c;提高用户体验并增强应用程序的安全性。本文将介绍如何将验证码短信API集成到你的应用…

备受欢迎的数字音频工作站 Studio One 新增了对 Linux 的支持

导读音乐制作人们&#xff0c;这是你们翘首以待的消息。备受欢迎的数字音频工作站 Studio One 新增了对 Linux 的支持。 数字音频工作站&#xff08;DAW&#xff09; 已经成为音乐制作专业人士重要工具之一。 遗憾的是&#xff0c;对于 Linux 用户而言&#xff0c;选择十分有…

聚焦生成式AI前沿技术:亚马逊云科技生成式AI构建者大会圆满结束

目前生成式AI应用落地已经从热火朝天的“百模大战”&#xff0c;步入到了少数优秀模型脱颖而出&#xff0c;工具链百花齐放&#xff0c;以及企业主管认真寻找生成式AI落地场景的新阶段。基于这一背景&#xff0c;亚马逊云科技特地举办了亚马逊云科技生成式AI构建者大会&#xf…

Python 深浅拷贝使用与区别

什么是拷贝&#xff1a; python 中拷贝是指创建一个新的对象&#xff0c;其中包含了原始对象的值&#xff0c;以便于在不改变原始对象的情况下进行操作。拷贝在处理数据时非常有用&#xff0c;特别是当我们需要对数据进行修改而又不想影响原始数据时。 2.浅拷贝 浅拷贝的规则…

跨境安全 | 在美国做电商,千万要小心这5类信用卡欺诈手段

信用卡业务在美国早早出现并迅速完善&#xff0c;其支付方式的普及程度也非常高。根美国信用报告中心&#xff08;American Credit Bureau&#xff09;数据显示&#xff0c;截至2021年底&#xff0c;美国共有超过2.5亿信用卡用户&#xff0c;其中超过80%的成年人持有至少一张信…

19 行为型模式-模板方法模式

1 模板方法模式介绍 模板方法模式(template method pattern)原始定义是&#xff1a;在操作中定义算法的框架&#xff0c;将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。 2 模板方法模式原理 模板方法模式的定位很清楚&#xff0c;…

从洋河“一带一路”之行,思考白酒国际化的破题道路

在古老的丝绸之路上&#xff0c;岁月不仅留下了无数行商足迹和边塞诗词&#xff0c;也写下了中国白酒出海最初的篇章。 作为一种文化交流的媒介&#xff0c;白酒曾随着陆上和海上丝绸之路来到世界各地&#xff0c;一度成为“世界潮品”。 千年后的今天&#xff0c;为了寻找新…

测试左移与右移

测试左移 对于需求&#xff0c;代码&#xff0c;质量&#xff0c;效率&#xff0c;《代码大全》很早就从软件工程实践角度说明了一个bug产生的不同阶段&#xff0c;修复一个bug的成本从需求阶段&#xff0c;设计阶段&#xff0c;测试阶段有着天壤差别。不仅从成本上&#xff0…