Vertica "metadata" 资源池有什么用?

What is the use of Vertica "metadata" resource pool?

在 Vertica 8 中,引入了 "metadata" 资源池。 The documentation describes it as :

The pool that tracks memory allocated for catalog data and storage data structures.

这似乎不是必需的,因为文档说明了如何使用 EnableMetadataMemoryTracking 参数禁用它。

这个池是做什么用的?由于它消耗大量 RAM(在我们的服务器上为 4Gb),我可以安全地禁用它吗?

metadata RAM 它是vertica目录大小,动态保留vertica进程分配给目录的RAM。

例如,您总共有 32GB RAM,vertica 将使用总 ram 的 95% ~30.5 GB,但你有大目录 ~3GB(大量对象)并且 vertica 进程消耗几 GB -> vertica 进程使用 RAM根据一般池必须免费查询 -> 可能导致饥饿。

如果您使用从目录所需的通用 RAM 动态借用的元数据池,您的资源管理会更好。

顺便说一句,为什么你有 4GB RAM 目录?? vertica 进程在 IDLE 中消耗了多少 RAM?是不是重启后消耗少了会随着时间增长?

创建了一个简单的脚本,它创建了 1000 个具有 100 个 int 列的表,插入 1 行并分析统计信息。您可以看到目录大小如何随对象数量增长以及它如何影响元数据池和 Vertica 进程 RAM :

dbadmin=> select (select count(1) from tables),node_name,memory_size_kb,memory_size_actual_kb from resource_pool_status where pool_name ilike 'metadata';
 ?column? |      node_name       | memory_size_kb | memory_size_actual_kb
----------+--------------------+----------------+-----------------------
      218 | v_vertica_node0001 |         108622 |                108622
      218 | v_vertica_node0002 |         119596 |                119596
      218 | v_vertica_node0003 |         122374 |                122374
(3 rows)

dbadmin=> select (select count(1) from tables),node_name,memory_size_kb,memory_size_actual_kb from resource_pool_status where pool_name ilike 'metadata'; \! top -n 1  | grep vertica
 ?column? |      node_name       | memory_size_kb | memory_size_actual_kb
----------+--------------------+----------------+-----------------------
      513 | v_vertica_node0001 |         229210 |                229210
      513 | v_vertica_node0002 |         281601 |                281601
      513 | v_vertica_node0003 |         289407 |                289407
(3 rows)

476260 dbadmin   20   0 5391m 407m  39m S 109.2  2.6  21:25.64 vertica
dbadmin=> select (select count(1) from tables),node_name,memory_size_kb,memory_size_actual_kb from resource_pool_status where pool_name ilike 'metadata'; \! top -n 1  | grep vertica
 ?column? |      node_name       | memory_size_kb | memory_size_actual_kb
----------+--------------------+----------------+-----------------------
      825 | v_vertica_node0001 |         352359 |                352359
      825 | v_vertica_node0002 |         448032 |                448032
      825 | v_vertica_node0003 |         456439 |                456439
(3 rows)

476260 dbadmin   20   0 5564m 554m  39m S 79.2  3.5  38:16.91 vertica
dbadmin=> select (select count(1) from tables),node_name,memory_size_kb,memory_size_actual_kb from resource_pool_status where pool_name ilike 'metadata'; \! top -n 1  | grep vertica
 ?column? |      node_name       | memory_size_kb | memory_size_actual_kb
----------+--------------------+----------------+-----------------------
     1143 | v_vertica_node0001 |         489867 |                489867
     1143 | v_vertica_node0002 |         627409 |                627409
     1143 | v_vertica_node0003 |         635616 |                635616
(3 rows)

476260 dbadmin   20   0 5692m 711m  39m S  0.7  4.5  58:13.61 vertica