Use*_*er1 7 postgresql linux performance
我有一个很重的 postgres 查询。运行需要十多分钟。我想升级我的硬件以使其运行得更快。我认为更多的内存会有所帮助,但我的主板已满,所以我需要一个全新的主板。我不想投资,除非我知道我会得到更好的结果。这是我在 iotop 中看到的:
总磁盘读取:46.81 M/s | 总磁盘写入:0.00 B/s
TID PRIO 用户磁盘读磁盘写交换 IO> 命令
27 be/4 根 0.00 B/s 0.00 B/s 0.00 % 99.99 % [kswapd0]
2514 be/4 postgres 46.81 M/s 2.45 M/s 0.00 % 18.36 % postgres: postgres db1 127.0.0.1(55328) SELECT
1 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
4 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0]
5 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u:0]
6 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [迁移/0]
7 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [看门狗/0]
8 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [迁移/1]
9 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0]
10 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]
请注意 kswapd0 如何最大程度地访问硬盘驱动器(99.99% IO)。但是,kswap0 的 DISK READ 和 DISK WRITE 和 SWAPIN 都为零。kswap0 在做什么?它真的击中了我的硬盘吗?向该系统添加更多 RAM 会有帮助吗?
您是否 110% 确定您的 IO 子系统没有问题 - 例如,所有硬盘驱动器都很好 [智能/raid 自检],回写式缓存已启用 [如果您的 raid 卡上有电池支持的缓存]?
postgres 不是以 48MB/s 的读取传输使 IO 饱和吗?