首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Tarantool上批量上传?

如何在Tarantool上批量上传?
EN

Stack Overflow用户
提问于 2021-06-21 22:09:21
回答 2查看 70关注 0票数 1

在MySQL中,我可以这样做:

代码语言:javascript
复制
-- post_id-user_id is unique pair
INSERT INTO userviews(post_id, user_id, view_count) 
VALUES(1,1,1),(2,1,1),(3,1,1),(4,1,1)
ON DUPLICATE KEY UPDATE 
view_count = view_count + 1;

或者在PostgreSQL中:

代码语言:javascript
复制
INSERT INTO userviews(post_id, user_id, view_count)
VALUES(1,1,1),(2,1,1),(3,1,1),(4,1,1)
ON CONFLICT DO UPDATE SET view_count = view_count + 1;

如何在Tarantool中做这样的事情?(目前我正在使用Tarantool的库在循环中进行upsert ):

代码语言:javascript
复制
import "github.com/tarantool/go-tarantool"
type AX []interface{}
...
for ... {
   conn.Upsert(`userviews`, tuple, AX{AX{`+`,viewCountColumn, 1}})
}
EN

Stack Overflow用户

发布于 2021-06-22 02:35:51

我猜你要解决的问题是关于性能的。朴素的变体(执行一个操作,等待响应,继续下一个操作)将最多提供大约(1 /网络RTT) RPS :对于1ms RTT,它大约是1000RPS。

有以下选项:

  1. 使用异步操作(go-tarantool支持)并等待批处理,而不是每个操作。(您甚至可以在等待前一个批处理的同时发送一个批处理。)SQL
  2. 定义一个Lua函数,该函数接受一批请求并返回一批响应(如果您需要每个响应,course).
  3. (Don't肯定知道,但也许您也可以使用tarantool /

,从版本2开始就可以使用它。)

你也可以在服务器端不使用函数的情况下使用'eval‘操作,但它需要’server‘上的'execute’权限,因此通常不鼓励使用(除了测试和实验目的)。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68069443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档