diff --git a/src/backend/distributed/Makefile b/src/backend/distributed/Makefile index 8f28b04b0..e0e23dc25 100644 --- a/src/backend/distributed/Makefile +++ b/src/backend/distributed/Makefile @@ -18,7 +18,7 @@ generated_downgrade_sql_files += $(patsubst %,$(citus_abs_srcdir)/build/sql/%,$( DATA_built = $(generated_sql_files) # directories with source files -SUBDIRS = . commands connection ddl deparser executor metadata operations planner progress relay safeclib shardsplit test transaction utils worker clock +SUBDIRS = . commands connection ddl deparser executor metadata operations planner progress relay safeclib shardsplit stats test transaction utils worker clock # enterprise modules SUBDIRS += replication diff --git a/src/backend/distributed/README.md b/src/backend/distributed/README.md index b372d20ff..b4e139a1a 100644 --- a/src/backend/distributed/README.md +++ b/src/backend/distributed/README.md @@ -2718,7 +2718,7 @@ And beside these, Citus itself also provides some additional statistic views to ### Citus stat counters Citus keeps track of several stat counters and exposes them via the `citus_stat_counters` view. The counters are tracked once `citus.enable_stat_counters` is set to true. Also, `citus_stat_counters_reset()` can be used to reset the counters for the given database if a database id different than 0 (default, InvalidOid) is provided, otherwise, it resets the counters for the current database. -Details about the implementation and its caveats can be found in the header comment of [stat_counters.c](/src/backend/distributed/stat_counters.c). However, at the high level; +Details about the implementation and its caveats can be found in the header comment of [stat_counters.c](/src/backend/distributed/stats/stat_counters.c). However, at the high level; 1. We allocate a shared memory array of length `MaxBackends` so that each backend has its own counter slot to reduce the contention while incrementing the counters at the runtime. 2. We also allocate a shared hash, whose entries correspond to individual databases. Then, when a backend exits, it first aggregates its counters to the relevant entry in the shared hash, and then it resets its own counters because the same counter slot might be reused by another backend later. diff --git a/src/backend/distributed/commands/database.c b/src/backend/distributed/commands/database.c index bbc3981b5..3586fa2cd 100644 --- a/src/backend/distributed/commands/database.c +++ b/src/backend/distributed/commands/database.c @@ -35,6 +35,7 @@ #include "distributed/adaptive_executor.h" #include "distributed/commands.h" +#include "distributed/commands/serialize_distributed_ddls.h" #include "distributed/commands/utility_hook.h" #include "distributed/comment.h" #include "distributed/deparse_shard_query.h" @@ -46,7 +47,6 @@ #include "distributed/metadata_utility.h" #include "distributed/multi_executor.h" #include "distributed/relation_access_tracking.h" -#include "distributed/serialize_distributed_ddls.h" #include "distributed/shard_cleaner.h" #include "distributed/worker_protocol.h" #include "distributed/worker_transaction.h" diff --git a/src/backend/distributed/commands/multi_copy.c b/src/backend/distributed/commands/multi_copy.c index d83e7c1fb..1f0abbb56 100644 --- a/src/backend/distributed/commands/multi_copy.c +++ b/src/backend/distributed/commands/multi_copy.c @@ -106,7 +106,7 @@ #include "distributed/resource_lock.h" #include "distributed/shard_pruning.h" #include "distributed/shared_connection_stats.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/stat_counters.h" #include "distributed/transmit.h" #include "distributed/version_compat.h" #include "distributed/worker_protocol.h" diff --git a/src/backend/distributed/serialize_distributed_ddls.c b/src/backend/distributed/commands/serialize_distributed_ddls.c similarity index 99% rename from src/backend/distributed/serialize_distributed_ddls.c rename to src/backend/distributed/commands/serialize_distributed_ddls.c index 11d10905b..2cca64fb0 100644 --- a/src/backend/distributed/serialize_distributed_ddls.c +++ b/src/backend/distributed/commands/serialize_distributed_ddls.c @@ -26,9 +26,9 @@ #include "distributed/adaptive_executor.h" #include "distributed/argutils.h" +#include "distributed/commands/serialize_distributed_ddls.h" #include "distributed/deparse_shard_query.h" #include "distributed/resource_lock.h" -#include "distributed/serialize_distributed_ddls.h" PG_FUNCTION_INFO_V1(citus_internal_acquire_citus_advisory_object_class_lock); diff --git a/src/backend/distributed/connection/connection_management.c b/src/backend/distributed/connection/connection_management.c index 2f78a1ee9..407de776b 100644 --- a/src/backend/distributed/connection/connection_management.c +++ b/src/backend/distributed/connection/connection_management.c @@ -39,7 +39,7 @@ #include "distributed/remote_commands.h" #include "distributed/run_from_same_connection.h" #include "distributed/shared_connection_stats.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/stat_counters.h" #include "distributed/time_constants.h" #include "distributed/version_compat.h" #include "distributed/worker_log_messages.h" diff --git a/src/backend/distributed/executor/adaptive_executor.c b/src/backend/distributed/executor/adaptive_executor.c index b429829a2..895f01ae7 100644 --- a/src/backend/distributed/executor/adaptive_executor.c +++ b/src/backend/distributed/executor/adaptive_executor.c @@ -171,7 +171,7 @@ #include "distributed/repartition_join_execution.h" #include "distributed/resource_lock.h" #include "distributed/shared_connection_stats.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/stat_counters.h" #include "distributed/subplan_execution.h" #include "distributed/transaction_identifier.h" #include "distributed/transaction_management.h" diff --git a/src/backend/distributed/executor/citus_custom_scan.c b/src/backend/distributed/executor/citus_custom_scan.c index 89503b0c9..5ba60b5ad 100644 --- a/src/backend/distributed/executor/citus_custom_scan.c +++ b/src/backend/distributed/executor/citus_custom_scan.c @@ -43,9 +43,9 @@ #include "distributed/multi_executor.h" #include "distributed/multi_router_planner.h" #include "distributed/multi_server_executor.h" -#include "distributed/query_stats.h" #include "distributed/shard_utils.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/query_stats.h" +#include "distributed/stats/stat_counters.h" #include "distributed/subplan_execution.h" #include "distributed/worker_log_messages.h" #include "distributed/worker_protocol.h" diff --git a/src/backend/distributed/executor/insert_select_executor.c b/src/backend/distributed/executor/insert_select_executor.c index d53f60594..9ed1962fa 100644 --- a/src/backend/distributed/executor/insert_select_executor.c +++ b/src/backend/distributed/executor/insert_select_executor.c @@ -50,7 +50,7 @@ #include "distributed/repartition_executor.h" #include "distributed/resource_lock.h" #include "distributed/shardinterval_utils.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/stat_counters.h" #include "distributed/subplan_execution.h" #include "distributed/transaction_management.h" #include "distributed/version_compat.h" diff --git a/src/backend/distributed/executor/local_executor.c b/src/backend/distributed/executor/local_executor.c index d824d8f31..18563c763 100644 --- a/src/backend/distributed/executor/local_executor.c +++ b/src/backend/distributed/executor/local_executor.c @@ -104,8 +104,8 @@ #include "distributed/query_utils.h" #include "distributed/relation_access_tracking.h" #include "distributed/remote_commands.h" /* to access LogRemoteCommands */ +#include "distributed/stats/stat_tenants.h" #include "distributed/transaction_management.h" -#include "distributed/utils/citus_stat_tenants.h" #include "distributed/version_compat.h" #include "distributed/worker_protocol.h" diff --git a/src/backend/distributed/executor/merge_executor.c b/src/backend/distributed/executor/merge_executor.c index 2b2f20451..d0f01dcf2 100644 --- a/src/backend/distributed/executor/merge_executor.c +++ b/src/backend/distributed/executor/merge_executor.c @@ -26,7 +26,7 @@ #include "distributed/multi_partitioning_utils.h" #include "distributed/multi_router_planner.h" #include "distributed/repartition_executor.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/stat_counters.h" #include "distributed/subplan_execution.h" static void ExecuteSourceAtWorkerAndRepartition(CitusScanState *scanState); diff --git a/src/backend/distributed/planner/deparse_shard_query.c b/src/backend/distributed/planner/deparse_shard_query.c index 6b8ad3fde..2542d931a 100644 --- a/src/backend/distributed/planner/deparse_shard_query.c +++ b/src/backend/distributed/planner/deparse_shard_query.c @@ -39,7 +39,7 @@ #include "distributed/multi_physical_planner.h" #include "distributed/multi_router_planner.h" #include "distributed/shard_utils.h" -#include "distributed/utils/citus_stat_tenants.h" +#include "distributed/stats/stat_tenants.h" #include "distributed/version_compat.h" diff --git a/src/backend/distributed/planner/distributed_planner.c b/src/backend/distributed/planner/distributed_planner.c index 7f8f827ea..193e2f250 100644 --- a/src/backend/distributed/planner/distributed_planner.c +++ b/src/backend/distributed/planner/distributed_planner.c @@ -66,7 +66,7 @@ #include "distributed/recursive_planning.h" #include "distributed/shard_utils.h" #include "distributed/shardinterval_utils.h" -#include "distributed/utils/citus_stat_tenants.h" +#include "distributed/stats/stat_tenants.h" #include "distributed/version_compat.h" #include "distributed/worker_shard_visibility.h" diff --git a/src/backend/distributed/shared_library_init.c b/src/backend/distributed/shared_library_init.c index 688e247ca..430eb8555 100644 --- a/src/backend/distributed/shared_library_init.c +++ b/src/backend/distributed/shared_library_init.c @@ -89,7 +89,6 @@ #include "distributed/placement_connection.h" #include "distributed/priority.h" #include "distributed/query_pushdown_planning.h" -#include "distributed/query_stats.h" #include "distributed/recursive_planning.h" #include "distributed/reference_table_utils.h" #include "distributed/relation_access_tracking.h" @@ -105,13 +104,14 @@ #include "distributed/shardsplit_shared_memory.h" #include "distributed/shared_connection_stats.h" #include "distributed/shared_library_init.h" -#include "distributed/stat_counters.h" #include "distributed/statistics_collection.h" +#include "distributed/stats/query_stats.h" +#include "distributed/stats/stat_counters.h" +#include "distributed/stats/stat_tenants.h" #include "distributed/subplan_execution.h" #include "distributed/time_constants.h" #include "distributed/transaction_management.h" #include "distributed/transaction_recovery.h" -#include "distributed/utils/citus_stat_tenants.h" #include "distributed/utils/directory.h" #include "distributed/worker_log_messages.h" #include "distributed/worker_manager.h" diff --git a/src/backend/distributed/sql/udfs/citus_stat_counters/13.1-1.sql b/src/backend/distributed/sql/udfs/citus_stat_counters/13.1-1.sql index 3db1325b1..3792bf7c8 100644 --- a/src/backend/distributed/sql/udfs/citus_stat_counters/13.1-1.sql +++ b/src/backend/distributed/sql/udfs/citus_stat_counters/13.1-1.sql @@ -1,14 +1,14 @@ -- See the comments for the function in --- src/backend/distributed/stat_counters.c for more details. +-- src/backend/distributed/stats/stat_counters.c for more details. CREATE OR REPLACE FUNCTION pg_catalog.citus_stat_counters( database_id oid DEFAULT 0, -- must always be the first column or you should accordingly update - -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stat_counters.c + -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stats/stat_counters.c OUT database_id oid, -- Following stat counter columns must be in the same order as the - -- StatType enum defined in src/include/distributed/stat_counters.h + -- StatType enum defined in src/include/distributed/stats/stat_counters.h OUT connection_establishment_succeeded bigint, OUT connection_establishment_failed bigint, OUT connection_reused bigint, @@ -16,7 +16,7 @@ CREATE OR REPLACE FUNCTION pg_catalog.citus_stat_counters( OUT query_execution_multi_shard bigint, -- must always be the last column or you should accordingly update - -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stat_counters.c + -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stats/stat_counters.c OUT stats_reset timestamp with time zone ) RETURNS SETOF RECORD diff --git a/src/backend/distributed/sql/udfs/citus_stat_counters/latest.sql b/src/backend/distributed/sql/udfs/citus_stat_counters/latest.sql index 3db1325b1..3792bf7c8 100644 --- a/src/backend/distributed/sql/udfs/citus_stat_counters/latest.sql +++ b/src/backend/distributed/sql/udfs/citus_stat_counters/latest.sql @@ -1,14 +1,14 @@ -- See the comments for the function in --- src/backend/distributed/stat_counters.c for more details. +-- src/backend/distributed/stats/stat_counters.c for more details. CREATE OR REPLACE FUNCTION pg_catalog.citus_stat_counters( database_id oid DEFAULT 0, -- must always be the first column or you should accordingly update - -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stat_counters.c + -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stats/stat_counters.c OUT database_id oid, -- Following stat counter columns must be in the same order as the - -- StatType enum defined in src/include/distributed/stat_counters.h + -- StatType enum defined in src/include/distributed/stats/stat_counters.h OUT connection_establishment_succeeded bigint, OUT connection_establishment_failed bigint, OUT connection_reused bigint, @@ -16,7 +16,7 @@ CREATE OR REPLACE FUNCTION pg_catalog.citus_stat_counters( OUT query_execution_multi_shard bigint, -- must always be the last column or you should accordingly update - -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stat_counters.c + -- StoreDatabaseStatsIntoTupStore() function in src/backend/distributed/stats/stat_counters.c OUT stats_reset timestamp with time zone ) RETURNS SETOF RECORD diff --git a/src/backend/distributed/executor/query_stats.c b/src/backend/distributed/stats/query_stats.c similarity index 99% rename from src/backend/distributed/executor/query_stats.c rename to src/backend/distributed/stats/query_stats.c index 319041b56..8e767d9d5 100644 --- a/src/backend/distributed/executor/query_stats.c +++ b/src/backend/distributed/stats/query_stats.c @@ -32,7 +32,7 @@ #include "distributed/hash_helpers.h" #include "distributed/multi_executor.h" #include "distributed/multi_server_executor.h" -#include "distributed/query_stats.h" +#include "distributed/stats/query_stats.h" #include "distributed/tuplestore.h" #include "distributed/version_compat.h" diff --git a/src/backend/distributed/stat_counters.c b/src/backend/distributed/stats/stat_counters.c similarity index 99% rename from src/backend/distributed/stat_counters.c rename to src/backend/distributed/stats/stat_counters.c index 7773b36b2..03151befd 100644 --- a/src/backend/distributed/stat_counters.c +++ b/src/backend/distributed/stats/stat_counters.c @@ -76,7 +76,7 @@ #include "distributed/argutils.h" #include "distributed/metadata_cache.h" -#include "distributed/stat_counters.h" +#include "distributed/stats/stat_counters.h" #include "distributed/tuplestore.h" diff --git a/src/backend/distributed/utils/citus_stat_tenants.c b/src/backend/distributed/stats/stat_tenants.c similarity index 99% rename from src/backend/distributed/utils/citus_stat_tenants.c rename to src/backend/distributed/stats/stat_tenants.c index 1ca4fc6f1..17cd3bf46 100644 --- a/src/backend/distributed/utils/citus_stat_tenants.c +++ b/src/backend/distributed/stats/stat_tenants.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * citus_stat_tenants.c + * stat_tenants.c * Routines related to the multi tenant monitor. * * Copyright (c) Citus Data, Inc. @@ -35,9 +35,9 @@ #include "distributed/log_utils.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" +#include "distributed/stats/stat_tenants.h" #include "distributed/tenant_schema_metadata.h" #include "distributed/tuplestore.h" -#include "distributed/utils/citus_stat_tenants.h" static void AttributeMetricsIfApplicable(void); diff --git a/src/backend/distributed/test/citus_stat_tenants.c b/src/backend/distributed/test/citus_stat_tenants.c index b8fe305c6..000e3fc02 100644 --- a/src/backend/distributed/test/citus_stat_tenants.c +++ b/src/backend/distributed/test/citus_stat_tenants.c @@ -15,7 +15,7 @@ #include "sys/time.h" -#include "distributed/utils/citus_stat_tenants.h" +#include "distributed/stats/stat_tenants.h" PG_FUNCTION_INFO_V1(sleep_until_next_period); diff --git a/src/backend/distributed/utils/maintenanced.c b/src/backend/distributed/utils/maintenanced.c index 9cef13539..e6bf3d00c 100644 --- a/src/backend/distributed/utils/maintenanced.c +++ b/src/backend/distributed/utils/maintenanced.c @@ -54,10 +54,10 @@ #include "distributed/maintenanced.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" -#include "distributed/query_stats.h" #include "distributed/resource_lock.h" #include "distributed/shard_cleaner.h" #include "distributed/statistics_collection.h" +#include "distributed/stats/query_stats.h" #include "distributed/transaction_recovery.h" #include "distributed/version_compat.h" diff --git a/src/include/distributed/serialize_distributed_ddls.h b/src/include/distributed/commands/serialize_distributed_ddls.h similarity index 100% rename from src/include/distributed/serialize_distributed_ddls.h rename to src/include/distributed/commands/serialize_distributed_ddls.h diff --git a/src/include/distributed/query_stats.h b/src/include/distributed/stats/query_stats.h similarity index 100% rename from src/include/distributed/query_stats.h rename to src/include/distributed/stats/query_stats.h diff --git a/src/include/distributed/stat_counters.h b/src/include/distributed/stats/stat_counters.h similarity index 100% rename from src/include/distributed/stat_counters.h rename to src/include/distributed/stats/stat_counters.h diff --git a/src/include/distributed/utils/citus_stat_tenants.h b/src/include/distributed/stats/stat_tenants.h similarity index 99% rename from src/include/distributed/utils/citus_stat_tenants.h rename to src/include/distributed/stats/stat_tenants.h index 573502606..c13ea59e7 100644 --- a/src/include/distributed/utils/citus_stat_tenants.h +++ b/src/include/distributed/stats/stat_tenants.h @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * citus_stat_tenants.h + * stat_tenants.h * Routines related to the multi tenant monitor. * * Copyright (c) Citus Data, Inc.