在一个并发写入环境下,每个事务插入新实例到同一表时,序列号通常成为一个瓶颈。这是因为序列号必须被单独地锁定,以免两个事务同时使用同一个序列号。
可以使用以下方法来解决此问题:
直接使用分布式唯一ID生成器,例如,Twitter Snowflake或UUID。
在每个事务上,将目标表锁定以确保每个实例都在该事务中成功。
代码示例:
CREATE TABLE example (id bigint, data text);
CREATE SEQUENCE example_id_seq;
BEGIN;
LOCK TABLE example IN SHARE MODE;
INSERT INTO example (id, data) VALUES (NEXTVAL('example_id_seq'), 'data 1');
INSERT INTO example (id, data) VALUES (NEXTVAL('example_id_seq'), 'data 2');
COMMIT;
上一篇:并发多次运行“Load-test Spock spec”。
下一篇:并发读取大文件