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

discuz建网站网站开发的三个流程

discuz建网站,网站开发的三个流程,有那些网站可以做担保交易的,谷歌seo优化专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、事务的隔离性和隔离级别 1.1. 什么是隔离性 1.2. 隔离级别 1.3. 不同隔离级别存在的问题 1.3.1. READ UNCOMMITTED——读未提交 1.3.2. READ COMMITTED——读已提交 1.3.3. REPEATABLE READ—…

专栏:MySQL数据库成长记

个人主页:手握风云

目录

一、事务的隔离性和隔离级别

1.1. 什么是隔离性

1.2. 隔离级别

1.3. 不同隔离级别存在的问题

1.3.1. READ UNCOMMITTED——读未提交

1.3.2. READ COMMITTED——读已提交

1.3.3. REPEATABLE READ——可重复读

1.3.4. SERIALIZABLE——串行化

1.4. 不同隔离级别的性能与安全

1.5. 查看和设置隔离级别


一、事务的隔离性和隔离级别

1.1. 什么是隔离性

        MySOL服务可以同时被多个客户端访问,每个客户端执行的DML语句以事务为基本单位,那么不同的客户端在对同一张表中的同一条数据进行修改的时候就可能出现相互影响的情况,为了保证不同的事务之间在执行的过程中不受影响,那么事务之间就需要要相互隔离,这种特性就是隔离性。

1.2. 隔离级别

        事务具有隔离性,那么如何实现事务之间的隔离?隔离到什么程度?如何保证数据安全的同时也要兼顾性能?

        事务间不同程度的隔离,称为事务的隔离级别;不同的隔离级别在性能和安全方面做了取舍,有的隔离级别注重并发性,有的注重安全性,有的则是并发和安全适中;在MySQL的InnoDB引擎中事务的隔离级别有四种,分别是:

  1. READ UNCOMMITTED,读未提交。
  2. READ COMMITTED,读已提交。
  3. REPEATABLE READ,可重复读。
  4. SERIALIZABLE,串行化。

1.3. 不同隔离级别存在的问题

1.3.1. READ UNCOMMITTED——读未提交

        事务A对数据进行了修改,事务B可以访问到事务A还没有提交的数据(也就是可能发生回滚),这个现象叫做“脏读”。

1.3.2. READ COMMITTED——读已提交

        在工作中,程序员需要经常使用git提交项目,如果其他同事在查看的过程中,上传者对其进行了修改。事务A在一个事务对同一条记录查询了两次,在两次查询之间事务B对数据进行了修改并提交了事务,那么事务A就会查询到两条不同的结果,这种现象就是“不可重复读”。

1.3.3. REPEATABLE READ——可重复读

        当一个程序员在去修改项目时,突然领导说先不要上传,看完之后再改,这个过程就相当于加了一把锁。但是程序员还可以对其他文件进行修改(增、删),导致仓库中的文件列表不一样,那么领导第一次查询的列表内容与第二次查询到的列表内容不一致。务A第一次查询到的结果集)与第二次查询到的结果集不一致,这个现象叫“幻读”。

        在Innodb存储引擎中,使用了next-key锁,锁住了目标行与之前的间隙,解决了部分的幻读问题。

1.3.4. SERIALIZABLE——串行化

        可以解决所有的数据安全问题,所有的事务是一个接一个的执行,一个事务必须要等到上一个事务执行完成之后才执行。

1.4. 不同隔离级别的性能与安全

隔离级别(Isolation Level)并发性能隔离力度(安全性)解决的问题存在的问题
READ UNCOMMITTED(读未提交)最高最低无(不解决任何并发问题)存在脏读、不可重复读、幻读
READ COMMITTED(读已提交)较高较低解决脏读存在不可重复读、幻读
REPEATABLE READ(可重复读)中等较高解决脏读、不可重复读(InnoDB 中通过 Next-Key 锁大幅缓解幻读,基本无幻读)
SERIALIZABLE(串行化)最低最高解决脏读、不可重复读、幻读无(完全避免并发问题)

        并发性能指数据库同时处理多个事务的能力,串行化因强制事务排队执行,性能最差。隔离力度(安全性)指事务间相互隔离、避免数据不一致的能力,行化因完全隔绝并发,安全性最高。

1.5. 查看和设置隔离级别

  • 事务的隔离级别分为全局作用域和会话作用域,全局作用域下的事务隔离级别设置会影响后续所有新启动的数据库连接和事务。会话作用域仅对当前数据库会话(即一个客户端与数据库建立的连接期间)内的事务有效。
-- 全局作用域
SELECT @@GLOBAL.transaction_isolation;
-- 会话作用域
SELECT @@SESSION.transaction_isolation;

  • 设置事务的隔离级别和访问模式
SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL level|access_mode;

        方括号 [] 内为可选参数,不指定时默认作用于 “下一个事务”(仅对后续第一个事务生效,之后恢复原有设置)。level:表示事务隔离级别(必选,需从指定选项中选择)。access_mode:表示事务访问模式(可选,控制事务是否允许读写操作)。

-- 1. 设置全局隔离级别为“串行化”(影响后续所有新连接,不影响当前事务)
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;-- 2. 设置会话隔离级别为“串行化”(影响当前会话后续所有事务,不影响其他会话)
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;-- 3. 设置“仅下一个事务”的隔离级别为“串行化”(临时生效,后续事务恢复原级别)
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- 1. 方式一:直接赋值给transaction_isolation变量
-- 设置全局隔离级别为“串行化”
SET GLOBAL transaction_isolation = 'SERIALIZABLE';
-- 设置会话隔离级别为“可重复读”(空格替换为“-”,即REPEATABLE-READ)
SET SESSION transaction_isolation = 'REPEATABLE-READ';-- 2. 方式二:通过@@变量名赋值
-- 设置全局隔离级别为“串行化”
SET @@GLOBAL.transaction_isolation = 'SERIALIZABLE';
-- 设置会话隔离级别为“可重复读”(空格替换为“-”)
SET @@SESSION.transaction_isolation = 'REPEATABLE-READ';
http://www.dtcms.com/a/456420.html

相关文章:

  • 做彩票网站合法吗建筑网红化
  • wordpress换背景seo网站代码优化
  • 找哪些公司做网站什么网站权重快
  • 顺德顺的网站建设域名流量查询工具
  • 弹幕网站开发难么网站免费网站app
  • 福建省建设工程继续教育网站wordpress图片七牛存储
  • 网站建设php文件html文件wordpress 修改链接
  • 微网站定制品牌宣传文案范文
  • 英迈思网站做不下去可以退款吗潍坊做网站建设的公司
  • 在线做炫图网站网站建设300
  • 潍坊企业网站建设外贸营销网站怎么建设
  • 怎样注册电商网站山东东方路桥建设总公司官方网站
  • 制作网站的代码wordpress4.9.6漏洞
  • 隆回网站建设制作网站关闭模板
  • 北京网站设计首选 新鸿儒举报网站建设公司
  • 前端网站论文小说百度风云榜
  • 建站系统破解虚拟主机部署网站
  • 网站seo和sem是什么意思三门峡网站开发
  • 多模室内设计网站域名如何购买
  • 免费一站式网站建设C语言也能干大事网站开发pdf
  • 兴义市住房城乡建设局网站html网站正在建设源码
  • 网站设计和策划的步骤是什么北京seo
  • 怎么用dw英文版做网站宁波网站制作公司
  • 个人免费发布信息胶州网站优化
  • 网站开发年收入做网站要学什么东西
  • 沈阳手机端建站模板阿里云网站301重定向怎么做
  • 南昌网站建设冲浪者如何制作网站地图
  • dede学校网站免费源码有哪些官网做的比较好的网站
  • wordpress水煮鱼网站seo公司哪家好
  • 如何做招聘网站的方案新闻发稿渠道