我的问题是 - 是否可以在 Mongo 数据库中定义能够删除数据库的用户?最大用户权限是“dbAdmin”,但该权限不允许用户删除数据库,只能删除集合。
我知道“clusterAdmin”有权删除数据库,但不能在常规数据库中定义该角色,只能在管理数据库中...
我正在对一个包含 3000 万行的表进行批量 UPSERT。该表只有两列(varchar 作为主键和整数)。首先将输入数据导入到临时表中,然后执行批量更新插入(使用 INSERT ... ON CONFLICT DO UPDATE 语句)。批量大小为 4000。
我的问题是 - 您能给我哪些性能建议?当表较小时(5-1000万条记录),性能就足够好了。对于 3000 万行,这还不够好,单批 4000 条记录持续 2 到 30 秒。
当然,我几乎没有并行执行此导入的服务,因此我使用咨询锁来同步它们(一次仅执行一个批量更新插入)。我是否应该删除咨询锁以并行执行更新插入?然后我将不得不处理死锁(并使用较小的批量大小来减少死锁机会?)。
我可以采取哪些措施来提高批量更新插入的性能?
这是我的大表:
CREATE TABLE my_big_table (
sender VARCHAR(30) PRIMARY KEY,
count INTEGER NOT NULL DEFAULT 0
)
WITH (
fillfactor = 80,
autovacuum_vacuum_scale_factor = 0,
autovacuum_vacuum_threshold = 40000
);
Run Code Online (Sandbox Code Playgroud)
这是 UPSERT 查询:
INSERT INTO my_big_table AS MBT (sender, count)
SELECT destination, count(*) as received_count
FROM my_temp_table
GROUP BY destination
ON CONFLICT (sender) DO UPDATE
SET …
Run Code Online (Sandbox Code Playgroud)