当前位置: 首页 > news >正文

公司名称大全免费测吉凶抖音视频排名优化

公司名称大全免费测吉凶,抖音视频排名优化,网站开发与设计专业,江西省建设网站一、事务的概念及应用场景 事务就是将一组 SQL 语句打包成一个整体,这个整体要么都执行成功,要么都失败。 假设张三有 1000 元,现张三需取出 100 元,若客户端1、2同时执行操作,造成取出 200,还剩 900 的情况…

一、事务的概念及应用场景

        事务就是将一组 SQL 语句打包成一个整体,这个整体要么都执行成功要么都失败

        假设张三有 1000 元,现张三需取出 100 元,若客户端1、2同时执行操作,造成取出 200,还剩 900 的情况,这不符合业务逻辑。

        为了避免这些因并发操作的交叉执行、网络或服务器问题中断执行等产生的错误,同时让程序员更多地关注于业务实现、减少对于处理这些错误的精力消耗,主流的数据库都支持事务

二、事务的 ACID 特性

  • Atomicity(原子性):要么全部执行成功落盘,要么回滚全部执行失败。(实现:回滚日志会记录事务的执行状态)
  • Consistency(一致性):事务执行前后,数据库符合业务逻辑和数据约束
  • Isolation(隔离性):控制并发执行互相干扰程度,指定不同隔离级别,平衡性能与一致性
  • Durability(持久性):事务提交后,修改的数据永久保存在存储介质,不受系统、断点影响。(先将重做日志写入磁盘,再将更新的数据页写入磁盘)

三、使用事务

1、查看存储引擎是否支持事务

        查看默认使用的存储引擎 InnoDB 是否支持事务:

2、语法

  • start transactionbegin:开始一个新事务。
  • commit:提交事务,落盘。
  • rollback:回滚,恢复到事务开始前的状态。
  • savepoint savepoint_name:设置保存点。
  • rollback to savepoint_name:回滚到保存点。

3、使用示例

3.1、开始事务,提交

3.2、开始事务,回滚

3.3、开始事务,回滚到保存点

4、自动/手动提交事务

        其实每条 SQL 语句,例如增删改,都处于事务当中。只不过默认开启了自动提交事务,执行单句语句后会自动提交。

        设置语法:

        查看自动提交是否开启:

        关闭自动提交,插入一条数据,在另一个客户端查询不到插入的数据:

        手动提交

注意:

  • start transaction 后,必须 commit 或 rollback。
  • 已提交的事务,不能回滚。

四、事务的隔离级别

1、事务的隔离性

        并发执行时,每个客户端执行的 SQL 语句以事务为基本单位。当多个客户端对同一条数据进行修改时,事务的执行可能会互相影响。为了控制这种影响,MySQL 的 InnoDB 存储引擎定义了四种隔离级别,让事务之间具有隔离性

2、读未提交(read uncommitted)

        B 事务查询到 A 事务未提交的修改数据,这叫读未提交。如果 A 事务最后进行了回滚,那么 B 事务查询到的是错误的数据,这叫“脏读”。

3、读已提交(read committed)

        事务 B 只能读取到事务 A 提交后的数据,未提交时数据对 B 不可见,这叫读已提交,避免了“脏读”。其它事务能修改 B 事务正在查询的数据,导致两次查询数据内容不一致,这叫“不可重复读”。

4、可重复读(repeatable read)(默认)

        其它事务不能对 B 事务查询的数据进行修改,这叫可重复读。但是其它事务插入 B 事务没有查询的新数据,导致 B 事务再次查询时读到结果集不一致,这叫“幻读”。

        InnoDB 存储引擎中的 next-key 锁能锁住查询数据与之前数据之间的间隙,导致其它事务不能新增数据,解决了部分“幻读”。

5、串行化(serializable)

        解决所有数据安全问题,事务之间串行执行的。

6、总结

7、查询和设置隔离级别

7.1、查询隔离级别

        作用域分为全局作用域(新建连接会读取全局参数会话作用域(只对当前客户端连接生效)。

7.2、设置隔离级别

        语法:

# 方式一:
SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL 隔离级别|访问模式;level: {READ UNCOMMITTED # 读未提交
| READ COMMITTED   # 读已提交
| REPEATABLE READ  # 可重复读
| SERIALIZABLE     
}access_mode: {READ WRITE  # 可读写       
| READ ONLY   # 只能读    
}# 方式二:
SET [GLOBAL|SESSION] TRANSACTION_ISOLATION = 'REPEATABLE-READ';  # 空格用-代替;# 方式三
SET [@@GLOBAL|@@SESSION].TRANSACTION_ISOLATION = 'REPEATABLE-READ';  # 空格用-代替;

        实验:

8、问题重现

8.1、读未提交(脏读)

  • 如果 A 事务修改的是全局变量,需要重启 B 事务窗口才生效。
  • 如果是修改当前会话,则两个会话都要修改才生效。
  • 所有查询都是在同一个事务中

8.2、读已提交(不可重复读)

8.3、可重复读(幻读)

可重复读:

幻读:由于可重复读隔离级别默认使用了 next-key 锁,为了重现幻读问题,使用读已提交。

        事务的现实使用场景:电商平台,商品支付成功后,要更新订单状态、用户积分、物流记录,都包含在一个事务中。

http://www.cadmedia.cn/news/13474.html

相关文章:

  • b2b网站建设公司站长工具seo综合查询
  • 多用户商城系统哪家好些拼多多seo 优化软件
  • 免费注册公司免费注册长沙正规seo优化价格
  • 培训网站计时怎么破成都网站排名 生客seo
  • 成都个人网站建设自动交换友情链接
  • 名校建设专题网站商品促销活动策划方案
  • 电子商务网站建设与维护期末考试上海关键词优化排名软件
  • 免费的网站或软件石家庄网络推广优化
  • 创建购物网站网站seo检测工具
  • 北京高端网站建设价格企业培训心得
  • 广东建设执业网站收录优美图片找不到了
  • 查询网站建设时间今日国内新闻头条大事
  • 买网站源码的网站网站宣传费用
  • 网站开发毕设论文百度推广关键词优化
  • 株洲网站建设技术公司搜索引擎营销的过程
  • 佛山网络建设推广优化大师 win10下载
  • 西安it培训机构烟台seo
  • 食品 骏域网站建设专家重庆百度推广排名
  • 网站建设 添加本地视频教程2021友情链接qq群
  • 网站集群建设方案百度公司的业务范围
  • 烟台网站建设在哪湘潭网站制作
  • 哪些公司需要网站开发创建网站要钱吗
  • 网站做百度百科的好处网络营销平台推广方案
  • 湖北省随州市建设厅网站苏州网站开发公司
  • 门户网站的基本特征信息与服务泰安网站建设
  • 宜兴网站设计东莞seo网站排名优化
  • 昆山建设局网站查预售自媒体账号申请
  • 北京seo外包 靠谱电商seo搜索引擎优化
  • 网站建设公司dz000中国联通业绩
  • 中标建设集团有限公司 网站外包公司什么意思