事务概念及存储引擎

1.0 为何要事务?

先来看一个场景,银行转账汇款:

李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元

设计如下表

account表

编号(id)用户名(user)金额(cash)

1李彦宏3000

2周鸿祎2000

传统的做法:

mysql> update account set cash = cash -1000 where id =2;

update account set cash =cash +1000 where id=1;

缺陷:

不安全。比如减少李彦宏钱的指令执行了,但是增加周鸿祎钱的指令却没有执行成功。

这个时候,我们就要使用mysql的事物机制。

1.1事务

1.2事务的使用

事务相关语句 DTL

1.3事务的四种特性:

1.原子性,是一个不可分割的逻辑单元,一组sql语句,要么都执行,要么都不执行。

2.隔离性,事务中的执行过程是不可见的。

3.持久性,事务一旦提交,就不可撤销。

4.一致性,事务在发生之前和发生之后,数据是一致。(能量守恒)

1.4事务的原理:

传统方式:

事务机制:

上面的例子:李彦宏给周鸿祎转钱用事物的代码:

#开启事物

Start transaction;

#执行的代码

Update account set cash=cash-1000 where id=1;

Update account set cash+1000 where id=2;

#提交

commit

# 语句出错 可以回滚

#rollback

1.5事务在哪些场合下应用:

一般来说,对于安全性要求比较的业务,建议使用事务。

2.0 mysql存储引擎

何为存储引擎?

我们说数据库是组织、存储和管理数据的仓库。那么,数据库存储数据的方式,就是存储引擎。

在mysql中,存储引擎是以插件的形式加载的。Mysql的存储引擎种类繁多,对于我们来说,要熟悉两种存储引擎去,MyISAM和inonoDB。

Myisam不支持事务。

Innodb支持事务。

全文索引在mysql5.5以前版本中,innodb是不支持的,但是5.5以后的版本支持。

常见存储引擎

mysql默认的存储引擎,

在mysql5.5以前的版本:MyISAM

在mysql5.5以后的版本:innodb

如果我们要自己声明存储引擎:

Create table()engine=myisam default charset utf8

mysql支持事务的储存引擎_「mysql事务与mysql储存引擎」- 海风纷飞Blog相关推荐

  1. laravel services.php,「Laravel框架中使用Service模式」- 海风纷飞Blog

    若将商业逻辑都写在controller,会造成controller肥大而难以维护,基于SOLID原则,我们应该使用Service模式辅助controller,将相关的商业逻辑封装在不同的service ...

  2. centos7查看当前端口_「Centos7开放及查看端口」- 海风纷飞Blog

    1.开放端口 firewall-cmd --zone=public --add-port=5432/tcp --permanent  # 开放5432端口 firewall-cmd --zone=pu ...

  3. docker项目部署 php_「Docker部署PHP+Vue项目」- 海风纷飞Blog

    创建Docker映射目录-- vue_demo         # Demo项目 -- php_vue -- docker-compose.yaml -- nginx ---- apps        ...

  4. 上海时间戳 php,「PHP的时间戳与具体时间转化」- 海风纷飞Blog

    三个内置函数:time()   //获取UNIX系统时间戳 mktime(hour,minute,second,month,day,year)  //将指定时间转化为时间戳 date(时间格式,时间戳 ...

  5. mysql重复读导致余额不对_我所理解的MySQL之四:事务、隔离级别及MVCC

    mysql教程栏目介绍MySQL相关的事务.隔离级别及MVCC. MySQL 系列的第四篇,主要内容是事务,包括事务 ACID 特性,隔离级别,脏读.不可重复读.幻读的理解以及多版本并发控制(MVCC ...

  6. mysql所选路径已经存在_「mysql第二次安装不了」mysql安装失败怎么清理干净?

    很多朋友装mysql数据库时出现无法安装的情况,更可怕的是删除相关文件仍然无法安装,很伤脑筋,相信很多朋友都有过这种经历. 其实导致数据无法安装的原因大多数是因为之前安装的Mysql数据没有卸载干净, ...

  7. mysql容器化后的缺点_沙场秋点兵——MySQL容器化性能测试对比

    容器技术改变了应用交付.运行的方式,几乎各种Linux环境下的应用程序都可以使用容器来运行.但是否能在容器环境里运行数据库应用,以及数据库应用是否适合在容器里运行,一直都是大家很关注的问题,今天我们就 ...

  8. mysql查询财两个人信息_春 东财《MySQL数据库系统及应用》在线作业二(随机)

    <春 东财<MySQL数据库系统及应用>在线作业二(随机)>由会员分享,可在线阅读,更多相关<春 东财<MySQL数据库系统及应用>在线作业二(随机)(112 ...

  9. e语言mysql怎么放在超级列表框_易语言中的MYSQL操作之超级列表框使用

    .版本 2 .支持库 mysql .支持库 iext .支持库 CnCalendar .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 MySQL句柄, 整数型 .程序集变量 记录集, ...

最新文章

  1. pytorch 常用问题解决
  2. python爬虫代码实例-Python爬虫之urllib示例
  3. 汉王人脸1000万用户后的第一人诞生
  4. 安装Google Object Detection API
  5. 高效管理ASP.NET的JavaScript库
  6. 如何使用Caddy部署Vue项目
  7. 认识 URL 及其编码
  8. C++:在堆上创建对象,还是在栈上?
  9. 浅谈Cglib、Jdk以及ProxyFactory实现动态代理上的区别
  10. 基于javaweb+jsp的超市便利店管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax)
  11. 前端基础(二十一):移动端H5调用摄像头拍照旋转解决方案
  12. 计算机word表格加法公式,如何插入公式以求和Word中表格的一列或一行?
  13. HMC_Hamiltonian Monte Carlo 推导,代码
  14. this java 错误_java异常错误处理
  15. 俄勒冈大学计算机科学专业,俄勒冈大学计算机与信息科学详解 热门专业还等什么...
  16. Iterm2 + zsh 安装教程
  17. 一个字都没写,也能发Nature子刊?
  18. 混合型数据的邻域条件互信息熵属性约简算法
  19. python语法格式
  20. 11.全连接卷积神经网络 FCN

热门文章

  1. CSS(boxshadow+渐变+动画)
  2. 芭蕾挑战(FLAG)第一天
  3. NC63发送消息实例
  4. .net 5 自包含提示选定目标Target Framework设为windows
  5. 一览GitHub上最受程序欢迎的5大Java开源项目
  6. 二十九、pycharm中报错“too many blank lines (3) ”等类似错误
  7. kubenetes(k8s)集群部署使用
  8. K8s云原生存储Rook详解
  9. 如何在步进音序器中制作简单的节奏
  10. Generic Webhook Trigger 实现特定提交触发自动构建