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

怎样做diy家具网站企业网站如何做排名

怎样做diy家具网站,企业网站如何做排名,商业空间设计网站大全,网站服务公司哪个好一、MySQL锁 当多个用户或进程并发操作数据库时,为了避免数据冲突、脏读、不可重复读、幻读等问题,数据库通过锁机制来保证数据的一致性和完整性。 MySQL 锁的总体分类: 分类维度类型说明按作用对象表级锁(Table Lock&#xff…

一、MySQL锁

当多个用户或进程并发操作数据库时,为了避免数据冲突、脏读、不可重复读、幻读等问题,数据库通过锁机制来保证数据的一致性完整性

MySQL 锁的总体分类:

分类维度类型说明
按作用对象表级锁(Table Lock)锁住整张表
行级锁(Row Lock)锁住一行数据
按锁粒度全局锁、数据库锁、表锁、行锁粒度逐级细化
按加锁方式共享锁(S锁)允许读,不允许写
排他锁(X锁)允许写,其他读写都被阻塞
按使用方式显式锁、隐式锁手动加锁 or 自动加锁
按存储引擎实现不同引擎的锁实现机制不同InnoDB vs MyISAM

二、MySQL 中的锁类型

1. 表级锁(Table Lock)

  • 作用于整张表
  • 典型场景:MyISAM 存储引擎、ALTER TABLELOCK TABLES
  • 效率高、开销小,但并发性差。

示例:

-- 给表 user 加上 写锁(WRITE LOCK)。
LOCK TABLES user WRITE;
-- 操作
UNLOCK TABLES;

2. 行级锁(Row Lock)

  • 作用于某一行数据
  • InnoDB 引擎支持,适合高并发读写场景;
  • 粒度小,并发性好,但管理成本高。

示例——隐式加锁:

BEGIN;
SELECT * FROM orders WHERE id = 10 FOR UPDATE; -- X锁
COMMIT;

3. InnoDB 的事务级锁(最常用)

(1)共享锁(S锁, Shared Lock)

  • 多个事务可以并发加 S 锁,读取数据;
  • 但不能加 X 锁,写操作会被阻塞。

示例:

SELECT * FROM products WHERE id=1 LOCK IN SHARE MODE;

注意:

  • 为查询到的行加上共享锁(S锁),直到事务结束(提交或回滚)。

(2)排他锁(X锁, Exclusive Lock)

  • 独占锁:读写都阻塞其他事务;
  • 常用于修改数据。

示例:

SELECT * FROM products WHERE id=1 FOR UPDATE;

注意:

  • 查询的同时,对满足条件的记录加排他锁,防止其他事务对该记录进行修改或加锁读取。

(3)意向锁(Intention Lock)

  • InnoDB 自动加的表级锁,用于指示事务是否准备加行锁;
  • 无需手动操作;
  • 分为:意向共享锁(IS)意向排他锁(IX)

4. 其他特殊类型

(1)Gap Lock(间隙锁)

  • 锁住的是数据之间的“间隙”防止幻读
  • 例如:SELECT * FROM t WHERE age > 30 FOR UPDATE;

(2)Next-Key Lock(记录锁 + 间隙锁)

  • InnoDB 默认的锁,避免幻读;
  • 锁住“记录本身 + 相邻间隙”。

(3)自增长锁(Auto-Inc Lock)

  • 针对 AUTO_INCREMENT 字段的内部锁
  • 防止并发插入冲突。

三、锁的工作原理(以 InnoDB 为例)

  • 当事务执行写操作时,InnoDB 会在相关行上加排他锁(X锁)
  • 读操作默认不加锁(基于 MVCC 实现快照读),除非使用 SELECT ... FOR UPDATELOCK IN SHARE MODE 强制加锁。
  • 当一个事务对某行加了 X 锁,其他事务必须等待锁释放后才能访问该行。

四、常见锁相关语句

  • SELECT ... FOR UPDATE:对查询到的行加排他锁。
  • SELECT ... LOCK IN SHARE MODE:对查询到的行加共享锁。
  • LOCK TABLESUNLOCK TABLES:对表加锁和解锁(表锁)。

五、常见问题

1. 死锁(Deadlock)

  • 多个事务互相等待对方持有的锁,导致程序无限等待。

  • InnoDB 能自动检测死锁,并回滚其中一个事务。

  • 解决策略:

    • 保持事务尽量短小
    • 尽量避免长时间锁住资源
    • 按照固定顺序访问表和行。

2. 脏写(Dirty Write)

定义:
一个事务写入了另一个未提交事务修改的数据,这会导致数据污染或逻辑错误

示例:

-- 事务A:
BEGIN;
UPDATE users SET name = 'Alice' WHERE id = 1;-- 事务B 在事务A未提交时:
BEGIN;
UPDATE users SET name = 'Bob' WHERE id = 1;

注意:

  • 如果数据库允许这样操作,就是脏写。
  • 假如事务A回滚了,但事务B的修改已提交,数据将不一致。

解决:

  • MySQL InnoDB 的默认隔离级别 REPEATABLE READ 已避免脏写。
  • 即使设置为 READ COMMITTED,也不允许脏写。

3. 幻读(Phantom Read)

定义:
在同一个事务中,前后两次相同条件的查询,返回的记录数不一样,即第二次出现了“幻影”数据。

示例:

-- 事务A:
BEGIN;
SELECT * FROM orders WHERE amount > 1000;-- 事务B 插入新数据:
INSERT INTO orders(amount) VALUES(2000); -- 满足条件-- 事务A 再次执行:
SELECT * FROM orders WHERE amount > 1000;
-- 返回了比上次多一行

注意:

  • READ COMMITTEDREPEATABLE READ 级别下会出现幻读。

六、锁的隔离级别

隔离级别说明是否使用行锁
READ UNCOMMITTED允许脏读无锁或极少
READ COMMITTED不允许脏读读操作不加锁(快照读)
REPEATABLE READ可重读InnoDB 默认隔离级别读操作快照读,写操作加行锁
SERIALIZABLE串行化,最高隔离级别,所有读操作加锁读写都加锁

文章转载自:

http://apYi6fba.mzjbz.cn
http://v1JZJUKB.mzjbz.cn
http://NuS0XKI9.mzjbz.cn
http://7X6sLw4F.mzjbz.cn
http://vt5pM6tk.mzjbz.cn
http://X6NhXvOb.mzjbz.cn
http://L8Re1GBA.mzjbz.cn
http://jQZXC8C9.mzjbz.cn
http://eOP8yTXR.mzjbz.cn
http://F5bY6R5N.mzjbz.cn
http://ZlhVOJkP.mzjbz.cn
http://nd4rQhaM.mzjbz.cn
http://y8lKofI5.mzjbz.cn
http://EsuxIrp1.mzjbz.cn
http://HkBGZCnH.mzjbz.cn
http://3HclQNuG.mzjbz.cn
http://PmqOEBfC.mzjbz.cn
http://8xS8lVm4.mzjbz.cn
http://KFyZ6HJ1.mzjbz.cn
http://4bUqnzq3.mzjbz.cn
http://9B9PvZl0.mzjbz.cn
http://JFtk96wU.mzjbz.cn
http://Zuotlf6f.mzjbz.cn
http://nIAIHZvC.mzjbz.cn
http://xmwEUYon.mzjbz.cn
http://0YhkAen9.mzjbz.cn
http://VaX0r9pO.mzjbz.cn
http://w69l3hmT.mzjbz.cn
http://tUKdMBM1.mzjbz.cn
http://d0KsF3gy.mzjbz.cn
http://www.dtcms.com/wzjs/697558.html

相关文章:

  • 网站搭建语言网页设计分为几个部分
  • WordPress建站 用插件威海做网站优化
  • 公司网站建设需要多少钱培训网页设计机构
  • 上海联通 网站备案网站开发服务承诺书
  • 最好用的软件网页优化包括
  • 镇江网站建设远航网络免费做电脑网站吗
  • 如何建设教师网上授课网站淄博网站建设卓迅
  • 给公司申请网站用自己的账号徐州在线网
  • 销售网站有哪些做软件开发
  • 网站建设属于什么领域seo网站建设视频
  • 博州住房和城乡建设部网站公司网站建设的范文
  • 成品网站建设流程网站备案要求企业 个人
  • 厦门市城市建设档案馆的网站wordpress pro版
  • 南通网站建设公司哪个好免费建站网站自助建站的网站建站
  • 宝塔建设网站域名进不去WordPress 处理表单
  • 网站建站公司订单多吗wordpress可视化菜单
  • 示范校建设验收网站wordpress文章导航
  • 网站平台建设什么意思ae模板免费网站
  • 网站素材 按钮济南做网站费用
  • 做背景音乐的版权网站wordpress标题序号
  • 公司网站建设意见和建议做宠物网站导航应该写什么字
  • 开发一个软件app需要多少钱游戏网站怎么做seo
  • wamp 网站开发首先做什么网站怎么做移动的图片
  • 开锁换锁做网站网站群建设原则
  • 局域网怎么建设网站网站建设与推广是什么
  • 中山企业做网站沈阳网站开发技术公司
  • 空间网站建设为什么大网站的百度快照更新速度慢还排第一
  • 用wex5 网站开发系统软件开发服务
  • 辽宁省建设监理协会网站国外的响应式网站模板
  • 外贸出口平台网站深圳苍松大厦 网站建设