IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql数据库(五)事务,PowerDesigner 建模工具 -> 正文阅读

[大数据]mysql数据库(五)事务,PowerDesigner 建模工具

一. 事务定义和基础

1. 事务:事务是一条 或 多条sql语句, 这些sql要么都执行要么都不执行

? ?例:转账:?
?? ??? ?张三 ?给 李四 ?转账 1000元?,这时数据库应该的操作?
?? ??? ? update account set balance = balance - 1000?
? ? ? ? ? ? ? ? ? ? ?where name = '张三';
?? ??? ? update account set balance = balance + 1000
? ? ? ? ? ? ? ? ? ? ?where name = '李四';
? ? ??这两条sql语句要么都执行要么都不执行,不然实现不了这个操作。

? ?注意:(1)mysql数据库的事务 是自动提交 ,? oracle数据库是手动提交

? ? ? ? ? ? ? (2)show variables like 'autocommit';? 显示提交方式。?

? ? ? ? ? ? ? (3)在正式开发中事务必须改成手动提交

2.事务的sql语句:?

? ? ? ?(1)begin;
? ? ? ? ? ? ? ? start transaction;开启一个事务
? ? ? ?(2)set autocommit = 0; 设置手动提交
? ? ? ?(3)savepoint a; 设置保存点
? ? ? ?(4)commit;执行
? ? ? ?(5)rollback to a;回滚至保护点a

? ? 注意:手动提交的好处:手动提交更灵活,可以控制回滚和提交,保证了数据的安? ? ? ? ? ? ? ? 全和程序的灵活。

二.事务的特性

? ? ? 1.原子性: ?? ?
?? ??? ??? ?事务是最小的执行单位,不可在分,
?? ??? ??? ?事务由一条 或多条sql语句组成一个完整的事务
?? ??? ??? ?这些sql语句组成后不可以拆分;
?? ??? ??? ?那么这个事务也不可在分
?? ??? ??? ?
?? ??? ?2.一致性: ?? ?
?? ??? ??? ?|-- 事务中包含的sql语句在修改之前 和修改之后的状态要一致
?? ??? ??? ?
? ? ? ? ? ? ||-- 两个表上:?
?? ??? ??? ???体现在持久外键的表上,和主表的关系;
? ? ? ? ? ? ? 如果主表的主键值修改了,那么从表的外键字段值要跟主表的主键值保持一致;

? ? ? ?3.持久性:
?? ??? ??? ? 如果一个事务 执行了 commit操作
?? ??? ??? ? 那么它对数据库的影响永久有效,不可回滚;
?? ??? ?
?? ??? ?4.隔离性: ?互斥的
?? ??? ??? ?指的是并发情况下的事务,
?? ??? ??? ?事务和事务之间在执行时 相互不干扰,
?? ??? ??? ?具有互斥性;

三.MySQL中的四个隔离级别:

? ? ?1.读未提交数据 ?read uncommited?
? ? ?2.读已提交数据 ?read commited? ?oracle默认的
? ? ?3.可重复读 repeatable read? ?mysql默认的
? ? ?4.串行化 serialize

假设数据库的事务不具备 隔离性,那么就会出现事务并发问题 :

1.脏读
?? ??? ? 现在有 T1事务 , T2事务 两个事务,?假设T1修改了一条记录, 没提交 ,这时T2读取了这条记录,?这时T1 遇到问题,没有执行,回滚了,这时T2 读取到的数据9000,和数据库表中的数据 不一致,那T2读到的数据就是脏数据
? ? ?例:
?? ??? ?假设当前余额为10000,张三修改了余额改成了 9000 ?, 没提交,这时李四 读取了这条记录 为 9000 ,?这时张三遇到问题,回滚了,余额为10000 ,那么李四读到的数据是 9000 , 和数据库中数据不一致,那么李四读到的数据就是脏数据。

2.不可重复读?

? ? ? ? 体现的是update操作,?commit就是事务的终结,即 执行
?? ??? ?假设有两个事务 T1 , T2 ,假设T1 一直 读取了 一条记录,没提交 ,没读完但是在T1读取 这条记录时,T2事务进来了,修改了记录并提交了,那么T1在多次读取数据结果时不一致,那么就是不可重复读

?3.幻读? ( insert into , delete语句)?
?? ??? ? 两个事务T1 ,T2,?T1读取了当前表的总记录数10条记录; ?没提交,?这时T2 insert into (或者delete)记录 ?T1 又读取一边发现总记录变成11条记录了,T1两次读取的总记录数一直吗? 不一致,那么就是幻读

隔离级别的作用是用来解决 事务的并发问题:

查看mysql默认的隔离级别:? select @@tx_isolation;? ?运行结果:repeatable -read

修改mysql的隔离级别为:读未提交数据
? ? ? ? ? ? ? ? ?set session transaction isolation level read uncommitted; ?

(1)如果mysql中的隔离级别是读未提交数据数据?就会出现 脏读,不可重复读 ,幻读
?? ??
(2)如果mysql中的隔离级别是 读已提交数据,会解决脏读,但是会出现不可重复读 ?和幻读
?? ??
(3)如果mysql的隔离级别是 可重复读,可以解决 脏读,不可重复读, 会出现幻读
?? ?
(4)如果mysql的隔离级别是 串行化 ,可以解决 脏读, 不可重复读, 幻读

数据库中 处理事务并发问题的方式有几种:?
?? ? ?1.默认是通过隔离级别来解决
?? ? ?2.通过锁的方式:
? ? ? ? ?(1)悲观锁: select * from ?xxx for update;

? ? ? ? ? ? ? ?悲观锁:
? ? ? ? ? ? ? ? ? ? 共享锁: 读锁 select ?,一个门多个钥匙开
? ? ? ? ? ? ? ? ? ? 排他锁: 写锁 insert into ,delete ,update?一个门,一个钥匙。
? ? ? ? ?(2)乐观锁: 没有锁的概念 使用版本号 和 时间戳来判断

四.PowerDesigner: 建模工具

? ? ? ? 1.E-R : Entity 实体 public class Person?
?? ??? ? ?Relationship ?关系,可以画实体关系图 , 属于概念图?? ?Conceptual
? ? ? ? 2.物理数据图: 针对数据库表关系的图 ,就是Navicat中的图
? ? ? ?

? ? ? ? 两种方式:?使用Navcat 画图,导出sql脚本;
? ? ? ? ? ? ? ? ? ? ? ? ? ?使用PowerDesigner软件,画物理图,生成sql脚本

? ? ? ??画: 包括 一对一,?一对多,?多对多.

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:09:35  更:2021-10-03 17:10:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:04:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码