我有两个innodb表:

用品

id | title | sum_votes

------------------------------

1 | art 1 | 5

2 | art 2 | 8

3 | art 3 | 35

id | article_id | vote

------------------------------

1 | 1 | 1

2 | 1 | 2

3 | 1 | 2

4 | 2 | 10

5 | 2 | -2

6 | 3 | 10

7 | 3 | 15

8 | 3 | 12

9 | 3 | -2

当一个新记录插入到投票表中时,我想通过计算所有投票的总和来更新articles表中的sum_votes字段.

这个问题

如果SUM()计算本身是一个非常重的(投票表有700K记录),哪种方式更有效.

1.创建一个触发器

CREATE TRIGGER `views_on_insert`

AFTER INSERT

ON `votes`

FOR EACH ROW

BEGIN

UPDATE `articles` SET

sum_votes = (

SELECT SUM(`vote`)

FROM `votes`

WHERE `id` = NEW.article_id

)

WHERE `id` = NEW.article_id;

END;

2.在我的应用程序中使用两个查询

SELECT SUM(`vote`) FROM `votes` WHERE `article_id` = 1;

UPDATE `articles`

SET sum_votes = <1st_query_result>

WHERE `id` = 1;

第一种方式看起来更干净,但是在SELECT查询运行的整个过程中表是否会被锁定?

mysql insert锁 innodb_mysql – 处理ON INSERT触发器时如何锁定innodb表?相关推荐

  1. mysql主从同步 忽略表_mysql 主从同步时忽略指定的表

    生产环境中mysql主从库同步停止了,不能停服务,在重新开启同步的时候报了错误 Could not execute Update_rows event on table [db_name].[tabl ...

  2. Mysql乐观锁实战

    文章首先介绍乐观锁的概念,然后介绍乐观锁的实现原理,最后用一个springboot项目演示乐观锁的实现方式. 目录 什么是乐观锁 乐观锁实现原理 实战 什么是乐观锁 在进行数据库操作的时候,乐观锁总是 ...

  3. mysql insert 锁

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 多线程插入mysql时会发生死锁. 数据库test中,id1和id2是联合主键 当前数据库test内容为空.my ...

  4. mysql insert锁机制

    一.前言 上周遇到一个因insert而引发的死锁问题,其成因比较令人费解. 于是想要了解一下insert加锁机制,但是发现网上介绍的文章比较少且零散,挖掘过程比较忙乱. 本以为只需要系统学习一个较完全 ...

  5. mysql 触发器不能同时 insert or update or delete_MySQL6:触发器

    什么是触发器 MySQL的触发器(trigger)和存储过程一样,都是嵌入到MySQL中的一段程序.触发器是由事件来触发某个操作,这些事件包括INSERT.UPDATE和DELETE语句.如果定义了触 ...

  6. MySQL · 源码分析 · 一条insert语句的执行过程

    本文只分析了insert语句执行的主路径,和路径上部分关键函数,很多细节没有深入,留给读者继续分析 create table t1(id int); insert into t1 values(1) ...

  7. insert时调用本身字段_MySQL RC级别下并发insert锁超时问题 - 案例验证

    作者:网易数据库团队 DDB(网易杭研自研的MySQL数据库中间件产品)团队小伙伴发现了一个问题,觉得比较奇怪.于是找到我们,希望解释下.过程中除解释了问题的现象,也通过代码了解了更多的InnoDB ...

  8. insert 锁表 mysql_mysql insert锁机制【转】

    最近再找一些MySQL锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...

  9. mysql insert 主键冲突_在MySql中建立存储过程和解决insert into select 中主键冲突的有关问题...

    首先说需求,我想重复插入大量数据,那么首先想到的,就是用insert into select语句. 但是因为mysql中没有将主键设为自增长,导致每次都会报主键冲突的错误,插入失败. 对于这个问题,就 ...

最新文章

  1. 美国《时代》周刊公布年度25大最佳发明名单
  2. vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
  3. 自编码器(Auto Encoder)原理及其python实现
  4. 输入法图标也会莫名其妙地丢失?
  5. Python:图片懒加载技术
  6. python进程和线程中的两个锁
  7. thread java 关闭_怎么在java中关闭一个thread
  8. c语言4钟存储类型关键字用法,求C语言中的32个关键字及其意思? C语言中32个关键字的意思和用法~!...
  9. Navicat常用快捷键
  10. 没有lrzsz,怎么传文件到服务器?
  11. 一道错误答案传遍全网的逻辑面试题
  12. path和classpath的区别
  13. 在CentOS6.5上安装/启动PostgreSQL
  14. 税控盘是服务器系统,税控盘系统参数设置服务器设置
  15. 分享一个可以提高微信公众号文章阅读率的小工具!公众号运营者必备哦!
  16. 03_使用决策树预测隐形眼镜类型
  17. random.seed()的作用(python)
  18. Deep Learning(深度学习)资料汇总
  19. php 统计汉字,PHP 统计实时统计汉字个数和区别
  20. 第七讲:1.物联网敲击桌面打开小台灯

热门文章

  1. 别等找工作时才明白:程序员只会敲代码是不行的!不看后悔!
  2. 为什么我选择用 C 编写游戏?
  3. 2019 最新 200 道 Java 面试题
  4. 41 岁蚂蚁金服总裁助理去世; 华为首款 5G 手机欧洲上市;库克首谈 5G iPhone | 极客头条...
  5. 软件正在吞噬整个世界?!
  6. 任正非:美国迟早会爱上华为
  7. 写给社区的回顾和展望:TiDB 2019, Level Up !
  8. 为什么我 11 岁的儿子说要放弃编程,却又转战 Python
  9. @工程师,怎样才能让面试者一眼相中你?
  10. 万恶的华为,落魄的爱立信