mysql insert锁 innodb_mysql – 处理ON INSERT触发器时如何锁定innodb表?
我有两个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表?相关推荐
- mysql主从同步 忽略表_mysql 主从同步时忽略指定的表
生产环境中mysql主从库同步停止了,不能停服务,在重新开启同步的时候报了错误 Could not execute Update_rows event on table [db_name].[tabl ...
- Mysql乐观锁实战
文章首先介绍乐观锁的概念,然后介绍乐观锁的实现原理,最后用一个springboot项目演示乐观锁的实现方式. 目录 什么是乐观锁 乐观锁实现原理 实战 什么是乐观锁 在进行数据库操作的时候,乐观锁总是 ...
- mysql insert 锁
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 多线程插入mysql时会发生死锁. 数据库test中,id1和id2是联合主键 当前数据库test内容为空.my ...
- mysql insert锁机制
一.前言 上周遇到一个因insert而引发的死锁问题,其成因比较令人费解. 于是想要了解一下insert加锁机制,但是发现网上介绍的文章比较少且零散,挖掘过程比较忙乱. 本以为只需要系统学习一个较完全 ...
- mysql 触发器不能同时 insert or update or delete_MySQL6:触发器
什么是触发器 MySQL的触发器(trigger)和存储过程一样,都是嵌入到MySQL中的一段程序.触发器是由事件来触发某个操作,这些事件包括INSERT.UPDATE和DELETE语句.如果定义了触 ...
- MySQL · 源码分析 · 一条insert语句的执行过程
本文只分析了insert语句执行的主路径,和路径上部分关键函数,很多细节没有深入,留给读者继续分析 create table t1(id int); insert into t1 values(1) ...
- insert时调用本身字段_MySQL RC级别下并发insert锁超时问题 - 案例验证
作者:网易数据库团队 DDB(网易杭研自研的MySQL数据库中间件产品)团队小伙伴发现了一个问题,觉得比较奇怪.于是找到我们,希望解释下.过程中除解释了问题的现象,也通过代码了解了更多的InnoDB ...
- insert 锁表 mysql_mysql insert锁机制【转】
最近再找一些MySQL锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...
- mysql insert 主键冲突_在MySql中建立存储过程和解决insert into select 中主键冲突的有关问题...
首先说需求,我想重复插入大量数据,那么首先想到的,就是用insert into select语句. 但是因为mysql中没有将主键设为自增长,导致每次都会报主键冲突的错误,插入失败. 对于这个问题,就 ...
最新文章
- 美国《时代》周刊公布年度25大最佳发明名单
- vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
- 自编码器(Auto Encoder)原理及其python实现
- 输入法图标也会莫名其妙地丢失?
- Python:图片懒加载技术
- python进程和线程中的两个锁
- thread java 关闭_怎么在java中关闭一个thread
- c语言4钟存储类型关键字用法,求C语言中的32个关键字及其意思? C语言中32个关键字的意思和用法~!...
- Navicat常用快捷键
- 没有lrzsz,怎么传文件到服务器?
- 一道错误答案传遍全网的逻辑面试题
- path和classpath的区别
- 在CentOS6.5上安装/启动PostgreSQL
- 税控盘是服务器系统,税控盘系统参数设置服务器设置
- 分享一个可以提高微信公众号文章阅读率的小工具!公众号运营者必备哦!
- 03_使用决策树预测隐形眼镜类型
- random.seed()的作用(python)
- Deep Learning(深度学习)资料汇总
- php 统计汉字,PHP 统计实时统计汉字个数和区别
- 第七讲:1.物联网敲击桌面打开小台灯