最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql的行锁与表锁(select*....FORUPDATE)

来源:动视网 责编:小采 时间:2020-11-09 13:58:02
文档

mysql的行锁与表锁(select*....FORUPDATE)

mysql的行锁与表锁(select*....FORUPDATE):mysql中使用select for update的必须针对InnoDb,并且是在一个事务中,才能起作用。 select的条件不一样,采用的是行级锁还是表级锁也不一样。 由于 InnoDB 预设是 Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行 Row lock (
推荐度:
导读mysql的行锁与表锁(select*....FORUPDATE):mysql中使用select for update的必须针对InnoDb,并且是在一个事务中,才能起作用。 select的条件不一样,采用的是行级锁还是表级锁也不一样。 由于 InnoDB 预设是 Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行 Row lock (


mysql中使用select for update的必须针对InnoDb,并且是在一个事务中,才能起作用。 select的条件不一样,采用的是行级锁还是表级锁也不一样。 由于 InnoDB 预设是 Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行 Row lock (只锁住被选取的资

  mysql中使用select for update的必须针对InnoDb,并且是在一个事务中,才能起作用。

  select的条件不一样,采用的是行级锁还是表级锁也不一样。

  由于 InnoDB 预设是 Row-Level Lock,所以只有「明确」的指定主键,,MySQL 才会执行 Row lock (只锁住被选取的资料例) ,否则 MySQL 将会执行 Table Lock (将整个资料表单给锁住)。

  举个例子:

  假设有个表单 products ,裡面有 id 跟 name 二个栏位,id 是主键。

  例1: (明确指定主键,并且有此笔资料,row lock)

  SELECT * FROM products WHERE FOR UPDATE;

  例2: (明确指定主键,若查无此笔资料,无 lock)

  SELECT * FROM products WHERE FOR UPDATE;

  例2: (无主键,table lock)

  SELECT * FROM products WHERE FOR UPDATE;

  例3: (主键不明确,table lock)

  SELECT * FROM products WHERE id<>'3' FOR UPDATE;

  例4: (主键不明确,table lock)

  SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;

  注1:

  FOR UPDATE 仅适用于 InnoDB,且必须在交易区块(BEGIN/COMMIT)中才能生效。

  注2:

  要测试锁定的状况,可以利用 MySQL 的 Command Mode ,开二个视窗来做测试。

文档

mysql的行锁与表锁(select*....FORUPDATE)

mysql的行锁与表锁(select*....FORUPDATE):mysql中使用select for update的必须针对InnoDb,并且是在一个事务中,才能起作用。 select的条件不一样,采用的是行级锁还是表级锁也不一样。 由于 InnoDB 预设是 Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行 Row lock (
推荐度:
标签: 锁住 for update
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top