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

匿名网站建设自媒体是如何赚钱的

匿名网站建设,自媒体是如何赚钱的,自适应网站开发资源,织梦珠宝网站模板MySQL 中的事务隔离级别有哪些? 1. 读未提交(Read Uncommitted) 特点:一个事务可以读取另一个事务未提交的数据。如果一个事务对数据进行了修改但尚未提交,其他事务仍能读取到这些未提交的修改。优缺点: …

MySQL 中的事务隔离级别有哪些?

1. 读未提交(Read Uncommitted)

  • 特点:一个事务可以读取另一个事务未提交的数据。如果一个事务对数据进行了修改但尚未提交,其他事务仍能读取到这些未提交的修改。
  • 优缺点
    • 优点:能够最大程度地实现并发性,减少锁定数据的时间。
    • 缺点:容易导致「脏读」问题,即读取到未提交的错误数据。
  • 适用场景:一般不常用,适用于对数据一致性要求不高且需要高并发的场景。

2. 读已提交(Read Committed)

  • 特点:一个事务只能读取另一个事务已经提交的数据。每次读取时,都会获取最新的数据版本。
  • 优缺点
    • 优点:避免了脏读问题,能读取到已提交的最新数据。
    • 缺点:可能会出现不可重复读问题,即多次读取同一数据时结果不一致。
  • 适用场景:适用于需要避免脏读但能接受不可重复读的场景。

3. 可重复读(Repeatable Read,InnoDB 默认级别)

  • 特点:在一个事务中多次读取同一数据时,结果一致。这通过多版本并发控制(MVCC)实现,确保事务开始后看到的数据是事务开始时的快照。
  • 优缺点
    • 优点:避免了脏读和不可重复读问题。
    • 缺点:可能会出现幻读问题,即插入或删除操作导致事务内查询结果不一致。
  • 适用场景
    • 是 MySQL InnoDB 的默认隔离级别,适用于大多数需要保证数据一致性的场景。
    • 通过锁定机制(如间隙锁、临键锁)可以一定程度上避免幻读。

4. 串行化(Serializable)

  • 特点:强制事务串行执行,确保事务执行时其他事务无法插入或更新数据。它通过在读取数据时加共享锁实现。
  • 优缺点
    • 优点:避免了脏读、不可重复读和幻读问题,事务隔离性最强。
    • 缺点:降低了并发性能,可能导致死锁或事务等待。
  • 适用场景:适用于对数据一致性要求极高且能接受低并发的场景。

各隔离级别支持的功能对比

以下是不同隔离级别在功能支持上的对比表格:

功能/隔离级别读取未提交数据(脏读)不可重复读幻读是否加共享锁(共享锁允许多个事务读取同一数据)
Read Uncommitted否(可能使用快照隔离)
Read Committed是(按需加锁)
Repeatable Read否(通常使用 MVCC,InnoDB 不加共享锁,而用快照)
Serializable是(加共享锁)

如何设置隔离级别

可以通过以下语句设置事务的隔离级别:

  • 临时设置(当前会话)

    SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    

    支持的级别包括:READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE

  • 全局设置

    SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    

通过选择合适的隔离级别,可以在数据一致性和并发性能之间找到平衡,以满足具体的业务需求。

MySQL 默认的事务隔离级别是什么?为什么选择这个级别?

为什么选择可重复读作为默认隔离级别

1.平衡一致性和并发性能

  • 可重复读 在一致性和并发性能之间提供了合理的折中。它避免了脏读和不可重复读问题,同时通过多版本并发控制(MVCC)机制,允许多个事务并发执行,而不会互相阻塞。

2.避免常见并发问题

  • 脏读:一个事务读取了另一个事务未提交的数据,如果该事务回滚,会导致数据不一致。
  • 不可重复读:一个事务在多次读取同一数据时,结果不一致,因为其他事务修改了数据。
  • 可重复读 隔离级别通过 MVCC 机制,确保在一个事务中多次读取同一数据时结果一致,从而避免了这些问题。

3.适用于大多数应用场景

  • 可重复读 是一个较为严格的隔离级别,适用于大多数需要保证数据一致性的场景,如金融交易、库存管理等。它在保证数据一致性的同时,仍然能提供较高的并发性能。

4.实现机制

  • MVCC(多版本并发控制):在可重复读隔离级别下,MySQL 使用 MVCC 机制,允许多个版本的数据同时存在。每个事务看到的数据版本是事务开始时的快照,从而避免了数据不一致的问题。
  • ReadView:在事务开始时创建一个 ReadView,事务中的查询都基于这个 ReadView,确保多次查询结果一致。

总结

MySQL 默认的事务隔离级别是 可重复读,因为它在数据一致性和并发性能之间提供了合理的折中,避免了脏读和不可重复读问题,适用于大多数需要保证数据一致性的场景。通过 MVCC 和 ReadView 机制,可重复读隔离级别实现了高效的数据一致性和并发性能。

数据库的脏读、不可重复读和幻读分别是什么?

1. 脏读(Dirty Read)
  • 定义:一个事务读取了另一个事务尚未提交的数据。如果这个未提交的事务后来被回滚,那么第一个事务读取到的数据就是无效的(脏数据)。
  • 原因:事务隔离级别设置较低,如 未提交读(Read Uncommitted),导致读取到了未提交的数据。
  • 示例:假设两个事务 T1 和 T2:
    • T1 开始,并更新表中某条记录,但尚未提交。
    • T2 开始,读取了 T1 更新后的数据。
    • T1 回滚,T2 读取到的数据就变成了无效的。
2. 不可重复读(Non-Repeatable Read)
  • 定义:一个事务在两次读取同一数据时,因其他事务的修改,导致两次读取的结果不一致。包括数据被更新和删除两种情况。
  • 原因:事务隔离级别设置为 提交读(Read Committed)未提交读,其他事务在当前事务两次读取之间提交了对数据的修改或删除操作。
  • 示例:假设两个事务 T1 和 T2:
    • T1 开始,第一次读取某条记录。
    • T2 开始,修改该记录并提交。
    • T1 第二次读取时,发现数据已发生变化。
3. 幻读(Phantom Read)
  • 定义:一个事务在两次查询同一个范围的数据时,因其他事务插入或删除记录,导致前后两次查询的记录集合不一致。例如,第一次查询得到 10 条记录,第二次查询得到 11 条记录,多出的那一条记录被称为幻影行。
  • 原因:其他事务在当前事务两次查询之间插入或删除了符合条件的记录。
  • 示例:假设两个事务 T1 和 T2:
    • T1 开始,查询某个范围的记录,得到 10 条。
    • T2 开始,在该范围内插入一条新记录并提交。
    • T1 再次查询时,发现结果变为 11 条。

总结

  • 脏读 是读取到未提交的数据。
  • 不可重复读 是读取到已提交的更新或删除数据,导致两次读取结果不同。
  • 幻读 是读取到已提交的插入或删除数据,导致记录集合前后不一致。
http://www.dtcms.com/a/459586.html

相关文章:

  • 正规的合肥网站建设价格苏州网站建设排名
  • 怎样自己做qq网站建设充值网站多钱
  • 网站建设与管理职责棋牌网站
  • 58同城推广能免费做网站吗网页版qq邮箱登陆登录入口
  • 网站建设的淘宝模板wordpress 后台文章
  • 做公司网站的多少钱wordpress 主域名
  • 桂城网站制作专业公司建设银行网站首页打不开
  • 九江市做网站的公司东莞社保官方网站
  • 科技公司网站设手机搭建网站教程视频教程
  • 大气精美网站设计工作室织梦模板关于班组建设管理的网站
  • 咨询北京国互网网站建设石家庄又开始管控了
  • 家乡网站建设企业网站开发 流程
  • 福田网站建设wordpress免
  • 怎样在网做旅游网站做网站用什么配置的vps
  • PHP MySQL 网站开发实例wordpress 转织梦
  • 如何与别的网站做友情链接企业为什么做网站 图片
  • 建设一个电商网站的流程能不能上传网站再备案
  • 锦州哪家做网站怎么建立官网
  • 网站模糊设计西安网站制作多少钱
  • 网页制作网站制作步骤成都网站推广优化公司
  • 对于协会的新年祝贺语网站模板100部禁用app
  • 手机网站导航按钮淘宝网站的建设情况
  • 站长工具手机综合查询seo关键词优化怎么做
  • 怎样用模板做网站主流的网站开发语言
  • 哪家做网站最便宜用自己的计算机做服务器建网站
  • 做网站视频网站福州商城网站
  • 怎样做网站标题优化电商培训机构哪家强
  • 建设网站的企业有哪些农村电商网站建设计划书
  • 广州建设工程安全质量监督网站视频制作公司价格表
  • 临海网站建设公司哪个网站查公司信息比较准