gpt4 book ai didi

postgresql - 外部调用函数时的事务和写入性能

转载 作者:行者123 更新时间:2023-11-29 14:01:56 25 4
gpt4 key购买 nike

我有一个从 python 脚本(使用 psycopg2)调用的存储函数,它平均执行大约 10 个 UPDATE 或 INSERT 语句。 iostat 显示我经常达到每秒 15000 次写入和 100% 的利用率。

我希望我可以改变一些东西来减少这些 iostat 数量,因为我需要该函数尽快运行。

在这种情况下,关于事务和函数的最佳策略是什么?我应该什么时候执行提交?

我记得在某处读到过,像这样调用我存储的函数会自动开始和结束我的交易。做一些其他事情会更好吗,比如将所有函数参数插入一个充当队列的表中,然后我修改我的函数以读取该表并执行它的工作?

从评论中的链接输出,

version                      | PostgreSQL 9.1.3 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51), 64-bit
checkpoint_completion_target | 0.9
checkpoint_segments | 32
client_encoding | UTF8
default_statistics_target | 100
effective_cache_size | 8GB
lc_collate | en_US.UTF-8
lc_ctype | en_US.UTF-8
log_destination | stderr
log_rotation_age | 1d
log_rotation_size | 0
log_truncate_on_rotation | on
logging_collector | on
maintenance_work_mem | 64MB
max_connections | 30
max_stack_depth | 2MB
port | 5432
server_encoding | UTF8
shared_buffers | 4GB
synchronous_commit | off
temp_buffers | 128MB
TimeZone | US/Eastern
wal_buffers | 16MB
work_mem | 128MB

最佳答案

除了 kgrittin 对改进磁盘子系统的建议外,我想就事务提出一个观点。事务在 WAL 上强制进行 fsync,因此提交越少,强制的物理写入就越少。一般来说,事务的逻辑分组比性能更重要,但这确实意味着较长的事务,如果它们不互相等待,将比大量较短的事务执行得更好。

关于postgresql - 外部调用函数时的事务和写入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com