gpt4 book ai didi

database - 数据库中的 CPU 利用率究竟意味着什么?

转载 作者:行者123 更新时间:2023-11-29 14:19:51 24 4
gpt4 key购买 nike

我运行了两种查询,

1. 有意引入查询以在大约 10 列中执行排序(排序依据)。这会占用 CPU,因为排序是 CPU 密集型操作。

该场景涉及运行查询,该查询耗时 30 秒,并在 100 个不同的表上使用同时连接运行了大约 100 个查询。32 核计算机上的 CPU 使用率在所有 32 个核上约为 85%,并且所有 100 个查询并行运行。

2.在表中插入一百万行。

我不明白为什么这会消耗 CPU,因为这纯粹是磁盘 I/O。但是我使用 100 个并发连接/线程在单个表上插入了 100 万行,并且这些表上没有索引,现在插入这不是加载数据的最快方式,但这里的要点是它在大约 10 个内核上消耗了大约 32% 的 CPU 时间。这比上面的要少,但我仍然只是好奇。

我可能是错的,因为 Wal 归档和查询日志都打开了——这对 CPU 有贡献吗?我假设没有,因为这些也是磁盘 IO。

除了 postgres 之外,这台机器上没有运行/安装其他进程/应用程序。

最佳答案

许多不同的东西:

  • 查询计划的 CPU 时间和执行器中查询执行的逻辑
  • 将元组的文本表示形式转换为磁盘格式。解析日期等。
  • 日志输出
  • 处理事务日志
  • 插入要写入的页面时写入 shared_buffers,扫描 shard_buffers 以查找要写入的页面
  • 用于锁管理的进程间通信
  • 在检查唯一性、在索引中插入新键等时扫描内存中缓存的索引副本
  • ....

如果您真的想知道有趣的细节,请启动 perf 并启用堆栈跟踪以查看 CPU 时间花在了哪里。

关于database - 数据库中的 CPU 利用率究竟意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847425/

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