我在PostgreSQL中有一张表,它看起来像这样:
create table item_counts {
item string,
view_count int}
我想利用表格来追踪“项”的出现次数,必要时递增计数。初始情况下,表格未填充,因此仅在第一次观察到新值时插入该值,否则将增加“查看次数”。速度和多任务处理都是关注的问题。
我知道可以这样做:
rows_affected = execute("update item_counts set view_count = view_count + 1
where item = ?")
if rows_affected == 0:
execute("insert into item_counts ...")
然而,在多线程环境下,这样做是不安全的,因此我需要将其包装到一个事务中。这反过来会降低速度,因为每次插入/更新后都需要提交。
有没有什么干净高效的建议呢?