您现在的位置是:首页 > 网络趣梗网络趣梗
insert_update和insert区别(es insert update性能比较)
2022-09-02 02:38:13网络趣梗0人已围观
简介 insert_update和insert区别(es insert update性能比较),新营销网红网本栏目通过数据整理汇集了insert_update和insert区别(es insert update性能比较)相关信息,下面一起看看
insert_update和insert区别(es insert update性能比较),新营销网红网本栏目通过数据整理汇集了insert_update和insert区别(es insert update性能比较)相关信息,下面一起看看。
今天在测试中间件的时候,突然想到以前的一些思路也可以借鉴。这一块的内容还是挺有意思的。我来简单剧透一下。如何把drop操作转换成alter操作,如何把alter操作转换成DML操作,其实都是设计上的一些经验法则。今天我要讲另一个,如何把一个更新操作转换成一个插入操作。
先说问题的背景。最近在测试一个业务的时候,业务的并发性很高。在应用架构转换中,根据模型的特点,我们最终降低了事务的维度。本来这个操作和改进带来的好处是显而易见的。结果,在压力测试期间遇到了明显的问题。程序的逻辑是
1)根据id检查对应的userid是否存在。
2.1)如果有更新,
2.2)如果不存在,插入。
看起来这个逻辑已经很清晰了,但是在程序高并发的情况下,在步骤1和步骤2之间发生了一些并发导致的副作用。假设线程1的步骤1的判断userid不存在,在插入的瞬间,线程2也执行同样的插入操作,毫秒级会发生主键冲突,比较频繁。从业务架构来说,其实可以有更好的解决方案,但是在数据库层面能做什么呢?
其实我们也可以想一些办法。MySQL中有两种类型的语句可以支持这种动态逻辑,一种是replace,另一种是insert on duplicate。
所以,既然这两种方法有相似的功能,那就一定有区别。
一般来说,replace原则开销最高的是delete insert,而duplicate上insert开销最高的是select update。两者看起来都差不多,相对来说,on duplicate更推荐。
其实insert duplicate的方式只涉及一个DML,而且从索引维护的角度来看,主键的情况下,不需要索引维护,而replace操作本质上是delete insert中的两个DML,从索引的角度来看维护索引的成本更高。
而在userid存在的情况下,insert on duplicate的更新逻辑和简单更新性能如何?
我们可以写一个程序来模拟测试。
首先,我们可以导出一个数据列表,假设我们有一个文件data.txt
在重复语句上生成insert
cat data.txt
head -100000
awk -F,{ print insert into dbo _ grw _ match time(userid,grwid,value,moddate,crtdate) values(,$1,$2-1,$3,\ $4 \,\ $ 5 \)on duplicate key update value=values(value),mod date=now();} tmp_data.localhost2
生成更新语句
cat data.txt
tail -100000
awk -F,{ print update dbo _ grw _ match time set value=$ 3-1,moddate=\ $4 \,crtdate=\ $5 \其中userid=$1,grwid=$2 } tmp_data.localhost3
经过多次测试,在数据量为10万的情况下,insert on duplicate key的结果基本稳定在99秒,update的结果稳定在89秒。十万量级下,相差10秒。我们来换算一下。
update方法可以在1毫秒内写入1.1行数据,而insert on duplicate方法基本相同,都是在1毫秒内。
选择100000/89/1000;
-
100000/89/1000
-
1.12359551
-
选择100000/99/1000;
-
100000/99/1000
-
1.01010101
-
0.1行数据的差异其实是很低的比例,更新操作与select的逻辑同时存在。按照这个业务场景,insert on duplicate的性能明显优于update。
后续会对线上系统的压力进行更详细的测试,可以持续关注。
相关十大巅峰网游小说(十大公认网游小说推荐)
百度网盘登录入口(百度网盘共享群的正确使用方法)
恶人传(《恶人传》以暴制暴成救赎)
百度网盘登录入口(百度网盘安装方法)
番禺中学排名(番禺区热门学校盘点)
道路标志(完整且有插图的交通安全标志)
哪个是苹果的序列号(iPhone序列号识字)
故宫太和殿介绍(故宫太和殿为什么叫金殿)
东营人均gdp(全国人均GDP前15名城市)
鲁振原型(鲁镇传奇的原型)
硫酸铜是什么颜色(硫酸铜的用途和危害)
小米平板4参数(小米平板4参数全曝光)
更多insert_update和insert区别(es insert update性能比较)相关信息请关注本文章,本文仅仅做为展示!
Tags: 网络趣事
很赞哦! ()
相关文章
随机图文
留言与评论 (共有 条评论) |