From f2dff6eeed54f36170579bbec889fda0b7e41f25 Mon Sep 17 00:00:00 2001 From: ebembi-crdb Date: Thu, 22 Jan 2026 21:35:19 +0530 Subject: [PATCH 1/4] Fix cross-version links in v25.3 documentation --- .../backups/locality-aware-multi-tenant.md | 2 +- .../v25.3/backward-incompatible/alpha.1.md | 14 +++++------ .../_includes/v25.3/misc/movr-schema.md | 2 +- .../check-rebalancing-after-partitioning.md | 2 +- .../v25.3/performance/check-rebalancing.md | 2 +- .../v25.3/sql/macos-terminal-configuration.md | 4 ++-- .../v25.3/start-in-docker/mac-linux-steps.md | 4 ++-- .../multi-region-cluster-setup.md | 2 +- .../v25.3/ui/active-statement-executions.md | 2 +- .../v25.3/ui/active-transaction-executions.md | 2 +- src/current/_includes/v25.3/ui/insights.md | 18 +++++++------- src/current/_includes/v25.3/ui/jobs.md | 4 ++-- src/current/_includes/v25.3/ui/refresh.md | 2 +- src/current/_includes/v25.3/ui/sessions.md | 6 ++--- .../_includes/v25.3/ui/statement-details.md | 22 ++++++++--------- .../_includes/v25.3/ui/statements-filter.md | 2 +- .../_includes/v25.3/ui/statements-views.md | 8 +++---- .../_includes/v25.3/ui/transactions-filter.md | 2 +- .../_includes/v25.3/ui/transactions-views.md | 8 +++---- .../_includes/v25.3/ui/ui-summary-events.md | 2 +- .../_includes/v25.3/upgrade-requirements.md | 2 +- .../architecture/reads-and-writes-overview.md | 8 +++---- .../v25.3/architecture/storage-layer.md | 6 ++--- src/current/v25.3/aws-dms.md | 22 ++++++++--------- src/current/v25.3/backup-architecture.md | 6 ++--- src/current/v25.3/changefeed-messages.md | 2 +- .../v25.3/changefeed-monitoring-guide.md | 2 +- .../v25.3/cloud-storage-authentication.md | 24 +++++++++---------- .../v25.3/configure-replication-zones.md | 2 +- src/current/v25.3/data-resilience.md | 2 +- src/current/v25.3/datadog.md | 12 +++++----- src/current/v25.3/dbeaver.md | 12 +++++----- src/current/v25.3/dbmarlin.md | 2 +- .../v25.3/demo-automatic-cloud-migration.md | 6 ++--- .../v25.3/demo-cockroachdb-resilience.md | 18 +++++++------- ...emo-low-latency-multi-region-deployment.md | 8 +++---- src/current/v25.3/demo-serializable.md | 2 +- .../v25.3/deploy-cockroachdb-on-aws.md | 2 +- ...y-cockroachdb-with-kubernetes-openshift.md | 10 ++++---- src/current/v25.3/detect-hotspots.md | 6 ++--- .../v25.3/disaster-recovery-overview.md | 2 +- src/current/v25.3/enable-node-map.md | 16 ++++++------- src/current/v25.3/explain.md | 4 ++-- src/current/v25.3/geojson.md | 2 +- src/current/v25.3/geoserver.md | 2 +- .../v25.3/how-does-a-changefeed-work.md | 2 +- src/current/v25.3/kibana.md | 6 ++--- .../v25.3/log-sql-activity-to-datadog.md | 2 +- .../logical-data-replication-overview.md | 4 ++-- src/current/v25.3/map-sql-activity-to-app.md | 2 +- ...itor-and-analyze-transaction-contention.md | 12 +++++----- .../v25.3/monitor-cockroachdb-kubernetes.md | 12 +++++----- .../v25.3/monitor-cockroachdb-operator.md | 12 +++++----- src/current/v25.3/monitoring-and-alerting.md | 2 +- src/current/v25.3/node-shutdown.md | 10 ++++---- ...erformance-benchmarking-with-tpcc-large.md | 2 +- src/current/v25.3/performance-recipes.md | 8 +++---- src/current/v25.3/performance.md | 4 ++-- ...-cluster-replication-technical-overview.md | 4 ++-- .../v25.3/query-behavior-troubleshooting.md | 10 ++++---- src/current/v25.3/query-spatial-data.md | 2 +- src/current/v25.3/secure-a-cluster.md | 8 +++---- .../v25.3/set-up-logical-data-replication.md | 2 +- src/current/v25.3/show-trace.md | 2 +- src/current/v25.3/spatial-indexes.md | 12 +++++----- src/current/v25.3/spatial-tutorial.md | 12 +++++----- src/current/v25.3/st_contains.md | 4 ++-- src/current/v25.3/st_convexhull.md | 2 +- src/current/v25.3/st_coveredby.md | 4 ++-- src/current/v25.3/st_covers.md | 4 ++-- src/current/v25.3/st_disjoint.md | 4 ++-- src/current/v25.3/st_equals.md | 4 ++-- src/current/v25.3/st_intersects.md | 4 ++-- src/current/v25.3/st_overlaps.md | 4 ++-- src/current/v25.3/st_touches.md | 4 ++-- src/current/v25.3/st_union.md | 2 +- src/current/v25.3/st_within.md | 4 ++-- ...start-a-local-cluster-in-docker-windows.md | 8 +++---- src/current/v25.3/start-a-local-cluster.md | 10 ++++---- ...feed-to-a-confluent-cloud-kafka-cluster.md | 4 ++-- .../v25.3/take-locality-restricted-backups.md | 4 ++-- .../v25.3/topology-basic-production.md | 10 ++++---- src/current/v25.3/topology-development.md | 6 ++--- .../v25.3/topology-follow-the-workload.md | 10 ++++---- src/current/v25.3/topology-follower-reads.md | 8 +++---- .../v25.3/troubleshoot-lock-contention.md | 14 +++++------ src/current/v25.3/ui-cdc-dashboard.md | 22 ++++++++--------- src/current/v25.3/ui-cluster-overview-page.md | 8 +++---- .../v25.3/ui-custom-chart-debug-page.md | 4 ++-- src/current/v25.3/ui-key-visualizer.md | 6 ++--- src/current/v25.3/ui-network-latency-page.md | 6 ++--- ...-physical-cluster-replication-dashboard.md | 4 ++-- src/current/v25.3/ui-queues-dashboard.md | 4 ++-- src/current/v25.3/ui-replication-dashboard.md | 24 +++++++++---------- src/current/v25.3/ui-runtime-dashboard.md | 8 +++---- src/current/v25.3/ui-schedules-page.md | 4 ++-- src/current/v25.3/ui-ttl-dashboard.md | 8 +++---- src/current/v25.3/understand-hotspots.md | 20 ++++++++-------- src/current/v25.3/wal-failover.md | 6 ++--- src/current/v25.3/window-functions.md | 2 +- 100 files changed, 330 insertions(+), 330 deletions(-) diff --git a/src/current/_includes/v25.3/backups/locality-aware-multi-tenant.md b/src/current/_includes/v25.3/backups/locality-aware-multi-tenant.md index 896d29db2d6..dfa68c855e8 100644 --- a/src/current/_includes/v25.3/backups/locality-aware-multi-tenant.md +++ b/src/current/_includes/v25.3/backups/locality-aware-multi-tenant.md @@ -1 +1 @@ -Both CockroachDB {{ site.data.products.standard }} and CockroachDB {{ site.data.products.basic }} clusters operate with a different architecture compared to CockroachDB {{ site.data.products.core }}. These architectural differences have implications for how locality-aware backups can run. {{ site.data.products.standard }} and {{ site.data.products.basic }} clusters will scale resources depending on whether they are actively in use. This makes it less likely to have a SQL pod available in every locality. As a result, your Serverless cluster may not have a SQL pod in the locality where the data resides, which can lead to the cluster uploading that data to a storage bucket in a locality where you do have active SQL pods. You should consider this as you plan a backup strategy that must comply with [data domiciling]({% link v23.2/data-domiciling.md %}) requirements. +Both CockroachDB {{ site.data.products.standard }} and CockroachDB {{ site.data.products.basic }} clusters operate with a different architecture compared to CockroachDB {{ site.data.products.core }}. These architectural differences have implications for how locality-aware backups can run. {{ site.data.products.standard }} and {{ site.data.products.basic }} clusters will scale resources depending on whether they are actively in use. This makes it less likely to have a SQL pod available in every locality. As a result, your Serverless cluster may not have a SQL pod in the locality where the data resides, which can lead to the cluster uploading that data to a storage bucket in a locality where you do have active SQL pods. You should consider this as you plan a backup strategy that must comply with [data domiciling]({% link {{ page.version.version }}/data-domiciling.md %}) requirements. diff --git a/src/current/_includes/v25.3/backward-incompatible/alpha.1.md b/src/current/_includes/v25.3/backward-incompatible/alpha.1.md index b8b1f37d137..8d4004422ad 100644 --- a/src/current/_includes/v25.3/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v25.3/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ - CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] +- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.3/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] +- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] +- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] - Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] - Removed the deprecated `GRANT` privilege. [#81310][#81310] - Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] - Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.3/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] diff --git a/src/current/_includes/v25.3/misc/movr-schema.md b/src/current/_includes/v25.3/misc/movr-schema.md index e838bcf4572..ac481a7ea31 100644 --- a/src/current/_includes/v25.3/misc/movr-schema.md +++ b/src/current/_includes/v25.3/misc/movr-schema.md @@ -9,4 +9,4 @@ Table | Description `user_promo_codes` | Promotional codes in use by users. `vehicle_location_histories` | Vehicle location history. -Geo-partitioning schema +Geo-partitioning schema diff --git a/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md b/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md index c7e19142bd4..2cb90851883 100644 --- a/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md +++ b/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md @@ -2,7 +2,7 @@ Over the next minutes, CockroachDB will rebalance all partitions based on the co To check this at a high level, access the Web UI on any node at `:8080` and look at the **Node List**. You'll see that the range count is still close to even across all nodes but much higher than before partitioning: -Perf tuning rebalancing +Perf tuning rebalancing To check at a more granular level, SSH to one of the instances not running CockroachDB and run the `SHOW EXPERIMENTAL_RANGES` statement on the `vehicles` table: diff --git a/src/current/_includes/v25.3/performance/check-rebalancing.md b/src/current/_includes/v25.3/performance/check-rebalancing.md index 32e3d98f8f1..0e8a8434120 100644 --- a/src/current/_includes/v25.3/performance/check-rebalancing.md +++ b/src/current/_includes/v25.3/performance/check-rebalancing.md @@ -2,7 +2,7 @@ Since you started each node with the `--locality` flag set to its GCE zone, over To check this, access the DB Console on any node at `:8080` and look at the **Node List**. You'll see that the range count is more or less even across all nodes: -Perf tuning rebalancing +Perf tuning rebalancing For reference, here's how the nodes map to zones: diff --git a/src/current/_includes/v25.3/sql/macos-terminal-configuration.md b/src/current/_includes/v25.3/sql/macos-terminal-configuration.md index 5b636259ce1..84895385a13 100644 --- a/src/current/_includes/v25.3/sql/macos-terminal-configuration.md +++ b/src/current/_includes/v25.3/sql/macos-terminal-configuration.md @@ -3,12 +3,12 @@ In **Apple Terminal**: 1. Navigate to "Preferences", then "Profiles", then "Keyboard". 1. Enable the checkbox "Use Option as Meta Key". -Apple Terminal Alt key configuration +Apple Terminal Alt key configuration In **iTerm2**: 1. Navigate to "Preferences", then "Profiles", then "Keys". 1. Select the radio button "Esc+" for the behavior of the Left Option Key. -iTerm2 Alt key configuration +iTerm2 Alt key configuration diff --git a/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md b/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md index 9de4428329d..90ac9e1943a 100644 --- a/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md +++ b/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md @@ -276,7 +276,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -286,7 +286,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. 1. Optionally verify that DB Console instances for `roach2` and `roach3` are reachable on ports 8081 and 8082 and show the same information as port 8080. diff --git a/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md b/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md index cf8bf46a9a1..ba89e910e23 100644 --- a/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md +++ b/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md @@ -1,6 +1,6 @@ Each [multi-region pattern]({% link {{ page.version.version }}/topology-patterns.md %}#multi-region) assumes the following setup: -Multi-region hardware setup +Multi-region hardware setup #### Hardware diff --git a/src/current/_includes/v25.3/ui/active-statement-executions.md b/src/current/_includes/v25.3/ui/active-statement-executions.md index e2254c2ac02..c7bd323f23d 100644 --- a/src/current/_includes/v25.3/ui/active-statement-executions.md +++ b/src/current/_includes/v25.3/ui/active-statement-executions.md @@ -30,7 +30,7 @@ The statement execution details page provides the following details on the state If a statement execution is waiting, the statement execution details are followed by Contention Insights and details of the statement execution on which the blocked statement execution is waiting. For more information about contention, see [Understanding and avoiding transaction contention]({{ link_prefix }}performance-best-practices-overview.html#understanding-and-avoiding-transaction-contention). -Movr rides transactions +Movr rides transactions ## See also diff --git a/src/current/_includes/v25.3/ui/active-transaction-executions.md b/src/current/_includes/v25.3/ui/active-transaction-executions.md index ee2ee069ad1..31bbfdd376b 100644 --- a/src/current/_includes/v25.3/ui/active-transaction-executions.md +++ b/src/current/_includes/v25.3/ui/active-transaction-executions.md @@ -35,7 +35,7 @@ The transaction execution details page provides the following details on the tra If a transaction execution is waiting, the transaction execution details are followed by Contention Insights and details of the transaction execution on which the blocked transaction execution is waiting. For more information about contention, see [Transaction contention]({{ link_prefix }}performance-best-practices-overview.html#transaction-contention). -Movr rides transactions +Movr rides transactions ## See also diff --git a/src/current/_includes/v25.3/ui/insights.md b/src/current/_includes/v25.3/ui/insights.md index c18ca8897a7..60e11eb53f6 100644 --- a/src/current/_includes/v25.3/ui/insights.md +++ b/src/current/_includes/v25.3/ui/insights.md @@ -164,7 +164,7 @@ To test this functionality, you can generate a SQL query with a [Slow Execution] ~~~ 1. On the Insights page, in the **Columns** selector, check **Query Tags** and click **Apply**. 1. For the row where **Statement Execution** is `SELECT pg_sleep()`, scroll to the right to see the key-value pairs from the SQL comment displayed in the **Query Tags** column. - Query tags + Query tags 1. On the same row, click on the **Latest Statement Execution ID** (the first column on the left) to open the [**Statement Execution** details](#statement-execution-details) page. These key-value pairs also appear on the **Overview** tab under **Query Tags**. ### Statement Execution details @@ -222,11 +222,11 @@ The Workload Insights tab surfaces the following type of insights: The transaction or statement execution failed. The following screenshot shows a failed transaction execution: -Failed transaction execution +Failed transaction execution The following screenshot shows the default details of the preceding failed transaction execution. -Failed transaction execution details +Failed transaction execution details The **Insights** column shows the name of the insight, in this case **Failed Execution**. The **Details** column provides the **Error Code** and **Error Message**. CockroachDB uses [PostgreSQL Error Codes](https://www.postgresql.org/docs/current/errcodes-appendix.html). In this example, Error Code `40001` is a `serialization_failure`. @@ -234,7 +234,7 @@ The **Insights** column shows the name of the insight, in this case **Failed Exe The following screenshot shows the conditional details of the preceding failed transaction execution. In this case, there was a *serialization conflict*, also known as an *isolation conflict*, due to [transaction contention]({{ link_prefix }}performance-recipes.html#transaction-contention). (For transaction contention that causes *lock contention*, see [High Contention](#high-contention)). -Failed transaction execution details conditional +Failed transaction execution details conditional To capture more information in the event of a failed transaction execution due to a serialization conflict, set the [`sql.contention.record_serialization_conflicts.enabled`]({{ link_prefix }}cluster-settings.html#setting-sql-contention-record-serialization-conflicts-enabled) cluster setting to `true` (default). With this setting enabled, when the **Error Code** is `40001` and the **Error Message** specifically has [`RETRY_SERIALIZABLE - failed preemptive refresh`]({{ link_prefix }}transaction-retry-error-reference.html#failed_preemptive_refresh)` due to conflicting locks`, a conditional **Failed Execution** section is displayed with **Conflicting Transaction** and **Conflicting Location** information. @@ -248,11 +248,11 @@ To troubleshoot, refer to the performance tuning recipe for [identifying and unb The following screenshot shows the execution of a transaction flagged with **High Contention**: -Transaction execution +Transaction execution The following screenshot shows the execution details of the preceding transaction execution: -Transaction execution details +Transaction execution details ### High Retry Count @@ -273,11 +273,11 @@ The statement execution has resulted in one or more [index recommendations](#sch The following screenshot shows the statement execution of the query described in [Use the right index]({{ link_prefix }}apply-statement-performance-rules.html#rule-2-use-the-right-index): -Statement execution +Statement execution The following screenshot shows the execution details of the preceding statement execution: -Statement execution details +Statement execution details The **Insights** column shows the name of the insight, in this case **Suboptimal Plan**. The **Details** column provides details on the insight, such as a **Description** with the cause of the suboptimal plan and a **Recommendation** with a `CREATE INDEX` statement. The final column contains a **Create Index** button. Click the **Create Index** button to execute the recommended statement to mitigate the cause of the insight. @@ -299,7 +299,7 @@ This view lists the [indexes]({{ link_prefix }}indexes.html) that have not been The following screenshot shows the insight that displays after you run the query described in [Use the right index]({{ link_prefix }}apply-statement-performance-rules.html#rule-2-use-the-right-index) six or more times: -Schema insight +Schema insight CockroachDB uses the threshold of six executions before offering an insight because it assumes that you are no longer merely experimenting with a query at that point. diff --git a/src/current/_includes/v25.3/ui/jobs.md b/src/current/_includes/v25.3/ui/jobs.md index c67c55d9a0c..7f56a5bfbb5 100644 --- a/src/current/_includes/v25.3/ui/jobs.md +++ b/src/current/_includes/v25.3/ui/jobs.md @@ -8,7 +8,7 @@ The Jobs list is designed for you to manage pending work. It is not intended to Use the **Jobs** table to see recently created and completed jobs. -DB Console Jobs Page +DB Console Jobs Page ### Filter jobs @@ -66,7 +66,7 @@ The details show: - **User Name** - error messages (if any) -DB Console Jobs Page +DB Console Jobs Page ## See also diff --git a/src/current/_includes/v25.3/ui/refresh.md b/src/current/_includes/v25.3/ui/refresh.md index d34c28da080..956cf4825e7 100644 --- a/src/current/_includes/v25.3/ui/refresh.md +++ b/src/current/_includes/v25.3/ui/refresh.md @@ -6,7 +6,7 @@ To control refresh of the data on the Active Executions views of the SQL Activit - A manual **Refresh** button: When clicked, refreshes data immediately. - An **Auto Refresh** toggle: When toggled **On** (default), refreshes data immediately and then automatically every 10 seconds. When toggled **Off**, stops automatic data refresh. The toggle setting is shared by both the Statements and the Transactions pages. Changing the setting on one page changes it on the other page. -Active executions view refresh +Active executions view refresh If **Auto Refresh** is toggled **On**, navigating to the Active Executions view on either the Statements page or Transactions page refreshes the data. diff --git a/src/current/_includes/v25.3/ui/sessions.md b/src/current/_includes/v25.3/ui/sessions.md index 8803337459b..f516525c979 100644 --- a/src/current/_includes/v25.3/ui/sessions.md +++ b/src/current/_includes/v25.3/ui/sessions.md @@ -1,10 +1,10 @@ {% if page.cloud != true %} -Sessions Page +Sessions Page {% endif %} To filter the sessions, click the **Filters** field. -Session filter +Session filter - To filter by [application]({{ link_prefix }}connection-parameters.html#additional-connection-parameters), select **Application Name** and choose one or more applications. @@ -40,7 +40,7 @@ To view details of a session, click a **Session Start Time (UTC)** to display se If a session is idle, the **Transaction** and **Most Recent Statement** panels will display **No Active [Transaction | Statement]**. {% if page.cloud != true %} -Sessions Details Page +Sessions Details Page {% endif %} The **Cancel statement** button ends the SQL statement. The session running this statement will receive an error. diff --git a/src/current/_includes/v25.3/ui/statement-details.md b/src/current/_includes/v25.3/ui/statement-details.md index 4c846eed9fa..75fc7ae1adc 100644 --- a/src/current/_includes/v25.3/ui/statement-details.md +++ b/src/current/_includes/v25.3/ui/statement-details.md @@ -35,7 +35,7 @@ The **Overview** section also displays the SQL statement fingerprint statistics The following screenshot shows the statement fingerprint of the query described in [Use the right index]({{ link_prefix }}apply-statement-performance-rules.html#rule-2-use-the-right-index): -Statement fingerprint overview +Statement fingerprint overview #### Insights @@ -47,7 +47,7 @@ The **Insights** table is displayed when CockroachDB has detected a problem with The following screenshot shows the insights of the statement fingerprint illustrated in [Overview](#overview): -Statement fingerprint overview +Statement fingerprint overview #### Charts @@ -65,7 +65,7 @@ Charts following the execution attributes display statement fingerprint statisti The following charts summarize the executions of the statement fingerprint illustrated in [Overview](#overview): -Statement fingerprint charts +Statement fingerprint charts ### Explain Plans @@ -73,7 +73,7 @@ The **Explain Plans** tab displays statement plans for an [explainable statement The following screenshot shows an execution of the query discussed in [Overview](#overview): -Plan table +Plan table The plan table shows the following details: @@ -94,7 +94,7 @@ Vectorized | Whether the execution used the [vectorized execution engine]({{ lin To display the plan that was executed, click the plan gist. For the plan gist `AgHUAQIABQAAAAHYAQIAiA...`, the following plan displays: -Plan table +Plan table #### Insights @@ -102,7 +102,7 @@ The plan table displays the number of insights related to the plan. If a plan ha The following screenshot shows 1 insight found after running the query discussed in [Overview](#overview) 6 or more times: -Plan with insight +Plan with insight {{site.data.alerts.callout_info}} CockroachDB uses the threshold of 6 executions before offering an insight because it assumes that you are no longer merely experimenting with a query at that point. @@ -114,7 +114,7 @@ If you click **Create Index**, a confirmation dialog displays a warning about th If you click **Apply** to create the index and then execute the statement again, the **Explain Plans** tab will show that the second execution (in this case at `19:40`), which uses the index and has no insight, takes less time than the first 6 executions. -Plan table after index +Plan table after index ### Diagnostics @@ -134,7 +134,7 @@ Diagnostics will be collected a maximum of *N* times for a given activated finge #### Activate diagnostics collection and download bundles -Activate statement diagnostics +Activate statement diagnostics {{site.data.alerts.callout_danger}} Collecting diagnostics has an impact on performance. All executions of the statement fingerprint will run slower until diagnostics are collected. @@ -156,11 +156,11 @@ To activate diagnostics collection: When the statement fingerprint is executed according to the statement diagnostic options selected, a row with the activation time and collection status is added to the **Statement diagnostics** table. -Statement diagnostics table +Statement diagnostics table The collection status values are: -- **READY**: indicates that the diagnostics have been collected. To download the diagnostics bundle, click Down arrow **Bundle (.zip)**. +- **READY**: indicates that the diagnostics have been collected. To download the diagnostics bundle, click Down arrow **Bundle (.zip)**. - **WAITING**: indicates that a SQL statement matching the fingerprint has not yet been recorded. To cancel diagnostics collection, click the **Cancel request** button. - **ERROR**: indicates that the attempt at diagnostics collection failed. @@ -173,4 +173,4 @@ Although fingerprints are periodically cleared from the Statements page, all dia - Click **Advanced Debug** in the left-hand navigation and click [Statement Diagnostics History]({% link {{ page.version.version }}/ui-debug-pages.md %}#reports). {% endif %} -Click Down arrow **Bundle (.zip)** to download any diagnostics bundle. +Click Down arrow **Bundle (.zip)** to download any diagnostics bundle. diff --git a/src/current/_includes/v25.3/ui/statements-filter.md b/src/current/_includes/v25.3/ui/statements-filter.md index 34305a565e4..238b287bcc0 100644 --- a/src/current/_includes/v25.3/ui/statements-filter.md +++ b/src/current/_includes/v25.3/ui/statements-filter.md @@ -72,4 +72,4 @@ To filter the statements: The following screenshot shows the statements that contain the string `rides` for the `movr` application filtered by `Statement Type: DML`: -Movr rides statements +Movr rides statements diff --git a/src/current/_includes/v25.3/ui/statements-views.md b/src/current/_includes/v25.3/ui/statements-views.md index 607e05528f2..4d9437fbdce 100644 --- a/src/current/_includes/v25.3/ui/statements-views.md +++ b/src/current/_includes/v25.3/ui/statements-views.md @@ -41,11 +41,11 @@ The **Statements** tab is selected. The **Statement Fingerprints** radio button The following screenshot shows the statement fingerprint for `SELECT city, id FROM vehicles WHERE city = $1` while running the [`movr` workload]({{ link_prefix}}cockroach-workload.html#run-the-movr-workload): -Statement fingerprint +Statement fingerprint If you click the statement fingerprint in the **Statements** column, the [**Statement Fingerprint** page](#statement-fingerprint-page) displays. -Statement details +Statement details ## Active Executions view @@ -66,11 +66,11 @@ When Auto [Refresh](#refresh) is On, active executions are polled every 10 secon The following screenshot shows the active statement execution for `INSERT INTO users VALUES ($1, $2, $3, $4, $5)` while running the [`movr` workload]({{ link_prefix }}cockroach-workload.html#run-the-movr-workload): -Statement execution +Statement execution If you click the execution ID in the **Statement Execution ID** column, the [**Statement Execution** details page](#statement-execution-details-page) displays. -Statement execution details +Statement execution details {% if page.cloud != true %} {% include {{ page.version.version }}/ui/refresh.md %} diff --git a/src/current/_includes/v25.3/ui/transactions-filter.md b/src/current/_includes/v25.3/ui/transactions-filter.md index 57330f05477..ceebf0501ee 100644 --- a/src/current/_includes/v25.3/ui/transactions-filter.md +++ b/src/current/_includes/v25.3/ui/transactions-filter.md @@ -69,4 +69,4 @@ To filter the transactions: The following screenshot shows the transactions that contain the string `rides` for the `movr` application filtered by `Runs Longer Than: 300 milliseconds`: -Movr rides transactions +Movr rides transactions diff --git a/src/current/_includes/v25.3/ui/transactions-views.md b/src/current/_includes/v25.3/ui/transactions-views.md index 37774b75fb6..24589a757d9 100644 --- a/src/current/_includes/v25.3/ui/transactions-views.md +++ b/src/current/_includes/v25.3/ui/transactions-views.md @@ -41,11 +41,11 @@ Click the **Transactions** tab. The **Transaction Fingerprints** radio button is The following screenshot shows the transaction fingerprint for `SELECT city, id FROM vehicles WHERE city = $1` while running the [`movr` workload]({{ link_prefix }}cockroach-workload.html#run-the-movr-workload): -Transaction fingerprint +Transaction fingerprint If you click the transaction fingerprint in the **Transactions** column, the [**Transaction Details** page](#transaction-details-page) displays. -Transaction details +Transaction details ## Active Executions view @@ -66,11 +66,11 @@ When Auto [Refresh](#refresh) is On, active executions are polled every 10 secon The following screenshot shows the active statement execution for `UPSERT INTO vehicle_location_histories VALUES ($1, $2, now(), $4, $5)` while running the [`movr` workload]({{ link_prefix }}cockroach-workload.html#run-the-movr-workload): -Transaction execution +Transaction execution If you click the execution ID in the **Transaction Execution ID** column, the [**Transaction Execution** details page](#transaction-execution-details-page) displays. -Transaction execution details +Transaction execution details {% if page.cloud != true %} {% include {{ page.version.version }}/ui/refresh.md %} diff --git a/src/current/_includes/v25.3/ui/ui-summary-events.md b/src/current/_includes/v25.3/ui/ui-summary-events.md index f074d5584d6..e27e1fcd298 100644 --- a/src/current/_includes/v25.3/ui/ui-summary-events.md +++ b/src/current/_includes/v25.3/ui/ui-summary-events.md @@ -20,7 +20,7 @@ P99 Latency | The 99th percentile of service latency. Underneath the [Summary](#summary-panel) panel, the **Events** panel lists the 5 most recent events logged for all nodes across the cluster. To list all events, click **View all events**. -DB Console Events +DB Console Events The following types of events are listed: diff --git a/src/current/_includes/v25.3/upgrade-requirements.md b/src/current/_includes/v25.3/upgrade-requirements.md index 2d28309a2be..048f5f257fb 100644 --- a/src/current/_includes/v25.3/upgrade-requirements.md +++ b/src/current/_includes/v25.3/upgrade-requirements.md @@ -1,3 +1,3 @@ CockroachDB v25.1 is an Innovation release. To upgrade to it, you must be running v24.3, the previous Regular release. -Before continuing, [upgrade to v24.3]({% link v24.3/upgrade-cockroach-version.md %}). +Before continuing, [upgrade to v24.3]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). diff --git a/src/current/v25.3/architecture/reads-and-writes-overview.md b/src/current/v25.3/architecture/reads-and-writes-overview.md index e1c0d5ee0fa..0292aa9ddd5 100644 --- a/src/current/v25.3/architecture/reads-and-writes-overview.md +++ b/src/current/v25.3/architecture/reads-and-writes-overview.md @@ -30,7 +30,7 @@ First, imagine a simple read scenario where: - Ranges are replicated 3 times (the default). - A query is executed against node 2 to read from table 3. -Perf tuning concepts +Perf tuning concepts In this case: @@ -41,13 +41,13 @@ In this case: If the query is received by the node that has the leaseholder for the relevant range, there are fewer network hops: -Perf tuning concepts +Perf tuning concepts ## Write scenario Now imagine a simple write scenario where a query is executed against node 3 to write to table 1: -Perf tuning concepts +Perf tuning concepts In this case: @@ -60,7 +60,7 @@ In this case: Just as in the read scenario, if the write request is received by the node that has the leaseholder and Raft leader for the relevant range, there are fewer network hops: -Perf tuning concepts +Perf tuning concepts ## Network and I/O bottlenecks diff --git a/src/current/v25.3/architecture/storage-layer.md b/src/current/v25.3/architecture/storage-layer.md index 69c1253ea3f..76201244257 100644 --- a/src/current/v25.3/architecture/storage-layer.md +++ b/src/current/v25.3/architecture/storage-layer.md @@ -63,7 +63,7 @@ Pebble uses a Log-structured Merge-tree (hereafter _LSM tree_ or _LSM_) to manag SSTs are an on-disk representation of sorted lists of key-value pairs. Conceptually, they look something like this (intentionally simplified) diagram: -Structure of an SST file +Structure of an SST file SST files are immutable; they are never modified, even during the [compaction process](#compaction). @@ -78,7 +78,7 @@ The SSTs within each level are guaranteed to be non-overlapping: for example, if - To allow LSM-based storage engines like Pebble to support ingesting large amounts of data, such as when using the [`IMPORT INTO`]({% link {{ page.version.version }}/import-into.md %}) statement. - To allow for easier and more efficient flushes of [memtables](#memtable-and-write-ahead-log). -LSM tree with SST files +LSM tree with SST files ##### Write amplification @@ -155,7 +155,7 @@ Another file on disk called the write-ahead log (hereafter _WAL_) is associated The relationship between the memtable, the WAL, and the SST files is shown in the diagram below. New values are written to the WAL at the same time as they are written to the memtable. From the memtable they are eventually written to SST files on disk for longer-term storage. -Relationship between memtable, WAL, and SSTs +Relationship between memtable, WAL, and SSTs ##### LSM design tradeoffs diff --git a/src/current/v25.3/aws-dms.md b/src/current/v25.3/aws-dms.md index 99a42ac0532..03afd6c277c 100644 --- a/src/current/v25.3/aws-dms.md +++ b/src/current/v25.3/aws-dms.md @@ -93,7 +93,7 @@ As of publishing, AWS DMS supports migrations from these relational databases (f 1. In the AWS Console, open **AWS DMS**. 1. Open **Endpoints** in the sidebar. A list of endpoints will display, if any exist. 1. In the top-right portion of the window, select **Create endpoint**. - AWS-DMS-Create-Endpoint + AWS-DMS-Create-Endpoint A configuration page will open. 1. In the **Endpoint type** section, select **Target endpoint**. @@ -107,10 +107,10 @@ As of publishing, AWS DMS supports migrations from these relational databases (f {{site.data.alerts.callout_info}} To connect to a CockroachDB {{ site.data.products.standard }} or {{ site.data.products.basic }} cluster, set the **Database name** to `{host}.{database}`. For details on how to find these parameters, see [Connect to your cluster]({% link cockroachcloud/connect-to-your-cluster.md %}?filters=connection-parameters#connect-to-your-cluster). Also set **Secure Socket Layer (SSL) mode** to **require**. {{site.data.alerts.end}} - AWS-DMS-Endpoint-Configuration + AWS-DMS-Endpoint-Configuration 1. If needed, you can test the connection under **Test endpoint connection (optional)**. 1. To create the endpoint, select **Create endpoint**. - AWS-DMS-Test-Endpoint + AWS-DMS-Test-Endpoint ## Step 2. Create a database migration task @@ -124,7 +124,7 @@ To conserve CPU, consider migrating tables in multiple replication tasks, rather 1. While in **AWS DMS**, select **Database migration tasks** in the sidebar. A list of database migration tasks will display, if any exist. 1. In the top-right portion of the window, select **Create task**. - AWS-DMS-Create-DB-Migration-Task + AWS-DMS-Create-DB-Migration-Task A configuration page will open. 1. Supply a **Task identifier** to identify the replication task. @@ -135,17 +135,17 @@ To conserve CPU, consider migrating tables in multiple replication tasks, rather {{site.data.alerts.callout_danger}} If you choose **Migrate existing data and replicate ongoing changes** or **Replicate data changes only**, you must first [disable revision history for backups](#setup). {{site.data.alerts.end}} - AWS-DMS-Task-Configuration + AWS-DMS-Task-Configuration ### Step 2.2. Task settings 1. For the **Editing mode** radio button, keep **Wizard** selected. 1. To preserve the schema you manually created, select **Truncate** or **Do nothing** for the **Target table preparation mode**. - AWS-DMS-Task-Settings + AWS-DMS-Task-Settings 1. Optionally check **Enable validation** to compare the data in the source and target rows, and verify that the migration succeeded. You can view the results in the [**Table statistics**](#step-3-verify-the-migration) for your migration task. For more information about data validation, see the [AWS documentation](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html). 1. Check the **Enable CloudWatch logs** option. We highly recommend this for troubleshooting potential migration issues. 1. For the **Target Load**, select **Detailed debug**. - AWS-DMS-CloudWatch-Logs + AWS-DMS-CloudWatch-Logs ### Step 2.3. Table mappings @@ -161,7 +161,7 @@ When specifying a range of tables to migrate, the following aspects of the sourc 1. Select **Add new selection rule**. 1. In the **Schema** dropdown, select **Enter a schema**. 1. Supply the appropriate **Source name** (schema name), **Table name**, and **Action**. - AWS-DMS-Table-Mappings + AWS-DMS-Table-Mappings {{site.data.alerts.callout_info}} Use `%` as an example of a wildcard for all schemas in a PostgreSQL database. However, in MySQL, using `%` as a schema name imports all the databases, including the metadata/system ones, as MySQL treats schemas and databases as the same. @@ -205,7 +205,7 @@ If your migration succeeded, you should now: If your migration failed for some reason, you can check the checkbox next to the table(s) you wish to re-migrate and select **Reload table data**. -AWS-DMS-Reload-Table-Data +AWS-DMS-Reload-Table-Data ## Optional configurations @@ -221,7 +221,7 @@ The `BatchApplyEnabled` setting can improve replication performance and is recom 1. Choose your task, and then choose **Modify**. 1. From the **Task settings** section, switch the **Editing mode** from **Wizard** to **JSON editor**. Locate the `BatchApplyEnabled` setting and change its value to `true`. Information about the `BatchApplyEnabled` setting can be found [here](https://aws.amazon.com/premiumsupport/knowledge-center/dms-batch-apply-cdc-replication/). -AWS-DMS-BatchApplyEnabled +AWS-DMS-BatchApplyEnabled {{site.data.alerts.callout_info}} `BatchApplyEnabled` does not work when using **Drop tables on target** as a target table preparation mode. Thus, all schema-related changes must be manually copied over if using `BatchApplyEnabled`. @@ -277,7 +277,7 @@ The `BatchApplyEnabled` setting can improve replication performance and is recom To prevent this error, set the [`expect_and_ignore_not_visible_columns_in_copy` session variable]({% link {{ page.version.version }}/session-variables.md %}#expect-and-ignore-not-visible-columns-in-copy) in the DMS [target endpoint configuration](#step-1-create-a-target-endpoint-pointing-to-cockroachdb). Under **Endpoint settings**, add an **AfterConnectScript** setting with the value `SET expect_and_ignore_not_visible_columns_in_copy=on`. - AWS-DMS-Endpoint-Settings + AWS-DMS-Endpoint-Settings - The following error in the CockroachDB [logs]({% link {{ page.version.version }}/logging-overview.md %}) indicates that AWS DMS is unable to copy into a table with a [computed column]({% link {{ page.version.version }}/computed-columns.md %}): diff --git a/src/current/v25.3/backup-architecture.md b/src/current/v25.3/backup-architecture.md index 5a653eb6470..9e9c5ecc7f7 100644 --- a/src/current/v25.3/backup-architecture.md +++ b/src/current/v25.3/backup-architecture.md @@ -27,7 +27,7 @@ At a high level, CockroachDB performs the following tasks when running a backup The following diagram illustrates the flow from `BACKUP` statement through to a complete backup in cloud storage: -A flow diagram representing the process of a backup job from statement through to backup data stored. +A flow diagram representing the process of a backup job from statement through to backup data stored. ## Job creation phase @@ -85,7 +85,7 @@ In the following diagram, nodes that contain replicas of the relevant key spans While processing, the nodes emit progress data that tracks their backup work to the coordinator. In the diagram, **Node 3** and **Node 1** will send progress data to **Node 2**. The coordinator node will then aggregate the progress data into checkpoint files in the storage bucket. The checkpoint files provide a marker for the backup to resume after a retryable state, such as when it has been [paused]({% link {{ page.version.version }}/pause-job.md %}). -Three-node cluster exporting backup data from the leaseholders +Three-node cluster exporting backup data from the leaseholders ## Metadata writing phase @@ -112,7 +112,7 @@ For example, in the following diagram there is a three-node cluster split across During a [restore]({% link {{ page.version.version }}/restore.md %}) job, the job creation statement will need access to each of the storage locations to read the metadata files in order to complete a successful restore. -How a locality-aware backup writes to storage buckets in each region +How a locality-aware backup writes to storage buckets in each region #### Job coordination on CockroachDB Standard and Basic clusters diff --git a/src/current/v25.3/changefeed-messages.md b/src/current/v25.3/changefeed-messages.md index 758d8b6c873..1f040ea5475 100644 --- a/src/current/v25.3/changefeed-messages.md +++ b/src/current/v25.3/changefeed-messages.md @@ -237,7 +237,7 @@ A changefeed job cannot confirm that a message has been received by the sink unl When a changefeed must pause and then resume, it will return to the last checkpoint (**A**), which is the last point at which the coordinator confirmed all changes for the given timestamp. As a result, when the changefeed resumes, it will re-emit the messages that were not confirmed in the next checkpoint. The changefeed may not re-emit every message, but it will ensure each change is emitted at least once. -How checkpoints will re-emit messages when a changefeed pauses. The changefeed returns to the last checkpoint and potentially sends duplicate messages. +How checkpoints will re-emit messages when a changefeed pauses. The changefeed returns to the last checkpoint and potentially sends duplicate messages. ### Changefeed encounters an error diff --git a/src/current/v25.3/changefeed-monitoring-guide.md b/src/current/v25.3/changefeed-monitoring-guide.md index 28d0cec6af5..288b0f5e626 100644 --- a/src/current/v25.3/changefeed-monitoring-guide.md +++ b/src/current/v25.3/changefeed-monitoring-guide.md @@ -22,7 +22,7 @@ The changefeed pipeline contains three main sections that start at the [storage - [**Processing**](#processing-aggregation-and-encoding): Prepares the change events from the rangefeed into [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) by encoding messages into the specified [format]({% link {{ page.version.version }}/changefeed-messages.md %}#message-formats). - [**Sink**](#sink): Delivers changefeed messages to the [downstream sink]({% link {{ page.version.version }}/changefeed-sinks.md %}). -An overview of the changefeed pipeline and the metrics that are connected to each stage. +An overview of the changefeed pipeline and the metrics that are connected to each stage. Where noted in the following sections, you can use changefeed [metrics labels]({% link {{ page.version.version }}/monitor-and-debug-changefeeds.md %}#using-changefeed-metrics-labels) to measure metrics per changefeed. diff --git a/src/current/v25.3/cloud-storage-authentication.md b/src/current/v25.3/cloud-storage-authentication.md index 4a7ec43d91d..81da03142e0 100644 --- a/src/current/v25.3/cloud-storage-authentication.md +++ b/src/current/v25.3/cloud-storage-authentication.md @@ -131,7 +131,7 @@ For example, to configure a user to assume an IAM role that allows a bulk operat The `sts:AssumeRole` permission allows the user to obtain a temporary set of security credentials that gives them access to an S3 bucket to which they would not have access with their user-based permissions. - AWS user summary page showing the JSON policy in place + AWS user summary page showing the JSON policy in place 1. Return to your IAM role's **Summary** page, and click on the **Trust Relationships** tab. Add a trust policy into the role, which will define the users that can assume the role. @@ -304,7 +304,7 @@ Once you have an identity role that your CockroachDB nodes can assume, you can c Copy the ARN of the identity role. In the Amazon management console, click on **IAM**, then **Roles**, and select the name of your identity role. From the **Summary** page, copy your ARN. You will need this when configuring the Trust Policy for the IAM role to be assumed. -Role summary page showing the ARN copied +Role summary page showing the ARN copied See [Step 2. Trust the identity role](#step-2-trust-the-identity-role) to add this ARN to an operation role's Trust Policy. @@ -318,21 +318,21 @@ If you already have the role that contains permissions for the operation, ensure 1. To create an operation role, click **Create Role** under the **Roles** menu. Select **Custom trust policy** and then add the ARN of your identity role (from [Step 1](#step-1-set-up-the-identity-role)) to the JSON by clicking `Principal`. This will open a dialog box. Select **IAM Roles** for **Principal Type** and paste the ARN. Click **Add Principal** and then **Next**. - Dialog box to add principal with IAM roles selected + Dialog box to add principal with IAM roles selected 2. On the **Add Permissions** page, search for the permission policies that the role will need to complete the bulk operation. - Filter list to add permissions to IAM roles + Filter list to add permissions to IAM roles Or, use the **Create Policy** button to define the required permissions. You can use the visual editor to select the service, actions, and resources. - Using the visual editor to define S3 service and S3 actions. + Using the visual editor to define S3 service and S3 actions. Or, use the JSON tab to specify the policy. For the JSON editor, see [Storage Permissions]({% link {{ page.version.version }}/use-cloud-storage.md %}#storage-permissions) for an example and detail on the minimum permissions required for each operation to complete. Click **Next**. 3. Finally, give the role a name on the **Name, review, and create** page. The following screenshot shows the selected trust policy and permissions: - Final screen in the create role process to review permissions and name role + Final screen in the create role process to review permissions and name role ### Step 3. Run the operation by assuming the role @@ -447,7 +447,7 @@ For this example, both service accounts have already been created. If you need t - In [Google's Cloud console](https://console.cloud.google.com/getting-started), click **IAM & Admin**, **Roles**, and then **Create Role**. - Add a title for the role and then click **Add Permissions**. Filter for the permissions required for the bulk operation. For example, if you want to enable service account B to run a changefeed, your role will include the `storage.objects.create` permission. See the [Storage permissions]({% link {{ page.version.version }}/use-cloud-storage.md %}#storage-permissions) section on this page for details on the minimum permissions each CockroachDB bulk operation requires. - Adding permissions to a changefeed role when creating a role. + Adding permissions to a changefeed role when creating a role. {{site.data.alerts.callout_success}} Alternately, you can use the [gcloud CLI](https://cloud.google.com/sdk/gcloud/reference/iam/roles/create) to create roles. @@ -457,14 +457,14 @@ For this example, both service accounts have already been created. If you need t - Go to the **Cloud Storage** menu and select the bucket. In the bucket's menu, click **Grant Access**. - Add the service account to the **Add principals** box and select the name of the role you created in step 1 under **Assign roles**. - Adding service account with the created role to the bucket. + Adding service account with the created role to the bucket. 1. Next, service account B needs the "Service Account Token Creator" role for service account A. This enables service account B to create short-lived tokens for A. - Go to the **Service Accounts** menu in the Google Cloud Console. - Select service account B from the list, then the **Permissions** tab, and click **Grant Access** under **Principals with access to this service account**. - Enter the name of service account A into the **New principals** box and select "Service Account Token Creator" under the **Assign roles** dropdown. Click **Save** to complete. - Granting service account A access to service account B with the token creator role. + Granting service account A access to service account B with the token creator role. 1. Finally, you will run the bulk operation from your CockroachDB cluster. If you're using [specified authentication](#google-cloud-storage-specified), pass in the GCS bucket's URL with the IAM user's `CREDENTIALS`. If you're using [implicit authentication](#google-cloud-storage-implicit), specify `AUTH=IMPLICIT` instead. For assuming the role, pass the assumed role's service account name, which you can copy from the **Service Accounts** page: @@ -600,13 +600,13 @@ See [Step 2](#step-2-create-the-operation-service-account) to create an operatio b. In the **Grant this service account access to project** section, select the role you require for the bulk operation, e.g., "Storage Object Creator". See [Storage Permissions]({% link {{ page.version.version }}/use-cloud-storage.md %}#storage-permissions) for detail on the minimum permissions required for each operation to complete. Click **Continue**. - Adding the workload identity role to the service account users role box + Adding the workload identity role to the service account users role box c. In the **Grant users access to this service account** section, paste the name of the identity service account. Then, click **Done**. - Adding the workload identity role to the service account users role box + Adding the workload identity role to the service account users role box ### Step 3. Give the identity service account the token creator role @@ -616,7 +616,7 @@ Next, the operation service account needs to contain the "Service Account Token 1. Select the operation service account from the list, then the **Permissions** tab, and click **Grant Access** under **Principals with access to this service account**. 1. Enter the name of the identity service account into the **New principals** box and select "Service Account Token Creator" under the **Assign roles** dropdown. Click **Save** to complete. - Granting the identity service account access to the operation service account with the token creator role. + Granting the identity service account access to the operation service account with the token creator role. ### Step 4. Run the operation by assuming the service account diff --git a/src/current/v25.3/configure-replication-zones.md b/src/current/v25.3/configure-replication-zones.md index 02752f39314..c6a173df604 100644 --- a/src/current/v25.3/configure-replication-zones.md +++ b/src/current/v25.3/configure-replication-zones.md @@ -129,7 +129,7 @@ The following diagram presents the same set of schema objects as the previous ou Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). -zone config inheritance diagram +zone config inheritance diagram #### Zone config inheritance - example SQL session diff --git a/src/current/v25.3/data-resilience.md b/src/current/v25.3/data-resilience.md index 73306f0289f..57583e90e84 100644 --- a/src/current/v25.3/data-resilience.md +++ b/src/current/v25.3/data-resilience.md @@ -9,7 +9,7 @@ CockroachDB provides built-in [**high availability (HA)**](#high-availability) f - HA features ensure continuous access to data without interruption even in the presence of [failures]({% link {{ page.version.version }}/demo-cockroachdb-resilience.md %}) or disruptions to maximize uptime. - DR tools allow for recovery from major incidents to minimize downtime and data loss. -Diagram showing how HA features and DR tools create a resilient CockroachDB deployment. +Diagram showing how HA features and DR tools create a resilient CockroachDB deployment. You can balance required SLAs and recovery objectives with the cost and management of each of these features to build a resilient deployment. diff --git a/src/current/v25.3/datadog.md b/src/current/v25.3/datadog.md index e57514ae471..316de0a111a 100644 --- a/src/current/v25.3/datadog.md +++ b/src/current/v25.3/datadog.md @@ -30,7 +30,7 @@ Before you can follow the steps presented in this tutorial, you must have: To enable the CockroachDB check for your installed Datadog Agent, navigate to the [Integrations page](https://app.datadoghq.com/account/settings#integrations) and find CockroachDB in the list of available integrations. Hover over the icon and click **+ Install**. -CockroachDB integration for Datadog installation +CockroachDB integration for Datadog installation Note that you must restart the Datadog Agent for the change to take effect. CockroachDB will then be listed as an installed integration. @@ -122,11 +122,11 @@ cockroachdb (1.6.0) Open your Datadog [Dashboard List](https://app.datadoghq.com/dashboard/lists) and click on `CockroachDB Overview`: -CockroachDB Overview dashboard in Datadog Dashboard List +CockroachDB Overview dashboard in Datadog Dashboard List This sample dashboard presents metrics on cluster availability, query performance, and resource usage: -CockroachDB Overview dashboard for Datadog +CockroachDB Overview dashboard for Datadog {{site.data.alerts.callout_info}} If you wish to customize your CockroachDB dashboard, it's recommended that you clone the default `CockroachDB Overview` dashboard before adding and removing widgets. If you leave the default dashboard intact, Datadog will update it when new versions of the integration's dashboard are released. @@ -152,7 +152,7 @@ cockroach workload run movr --duration=5m 'postgresql://root@localhost:26257?ssl The query metrics will appear on the dashboard: -CockroachDB Overview dashboard for Datadog with SQL metrics +CockroachDB Overview dashboard for Datadog with SQL metrics ## Step 6. Add monitoring and alerting @@ -162,14 +162,14 @@ Select **Threshold Alert** as the detection method. You can use this option to c The example alert below will trigger when [a node has less than 15% of storage capacity remaining]({% link {{ page.version.version }}/monitoring-and-alerting.md %}#node-is-running-low-on-disk-space): -CockroachDB Threshold Alert in Datadog +CockroachDB Threshold Alert in Datadog - `cockroachdb.capacity.available` is divided by `cockroachdb.capacity.total` to determine the fraction of available capacity on the node's [store]({% link {{ page.version.version }}/architecture/storage-layer.md %}) (the directory on each node where CockroachDB reads and writes its data). - The alert threshold is set to `0.15`. The timeseries graph at the top of the page indicates the configured metric and threshold: -CockroachDB Threshold Alert in Datadog +CockroachDB Threshold Alert in Datadog ## Known limitations diff --git a/src/current/v25.3/dbeaver.md b/src/current/v25.3/dbeaver.md index ee645c9ef67..dcf58e8e231 100644 --- a/src/current/v25.3/dbeaver.md +++ b/src/current/v25.3/dbeaver.md @@ -32,19 +32,19 @@ To work through this tutorial, take the following steps: 1. Start DBeaver, and select **Database > New Connection** from the menu. In the dialog that appears, select **CockroachDB** from the list. - DBeaver - Select CockroachDB + DBeaver - Select CockroachDB 1. Click **Next**. The **Connection Settings** dialog displays. 1. In the **Database** field, enter `movr`. - DBeaver - CockroachDB connection settings + DBeaver - CockroachDB connection settings ## Step 2. Update the connection settings 1. Click the **SSL** tab. - DBeaver - SSL tab + DBeaver - SSL tab 1. Check the **Use SSL** checkbox as shown, and fill in the text areas as follows: - **Root certificate**: Use the `ca.crt` file you generated for your secure cluster. @@ -61,13 +61,13 @@ To work through this tutorial, take the following steps: 1. Click **Test Connection ...**. If you need a driver, the following dialog displays: - DBeaver - download driver dialog + DBeaver - download driver dialog 1. Click **Download**. After the driver downloads, if the connection was successful, you will see a **Connected** dialog. - DBeaver - connection success dialog + DBeaver - connection success dialog 1. Click **OK** to dismiss the dialog. @@ -75,7 +75,7 @@ To work through this tutorial, take the following steps: Expand the **movr** database node and navigate to the **rides** table. -DBeaver - CockroachDB with the movr database +DBeaver - CockroachDB with the movr database For more information about using DBeaver, see the [DBeaver documentation](https://dbeaver.io/docs/). diff --git a/src/current/v25.3/dbmarlin.md b/src/current/v25.3/dbmarlin.md index 4f754a8966c..e267b187ec8 100644 --- a/src/current/v25.3/dbmarlin.md +++ b/src/current/v25.3/dbmarlin.md @@ -50,7 +50,7 @@ Follow the steps in [Instance Dashboard](https://docs.dbmarlin.com/docs/Using-DB When you open the dashboard you'll see : -CockroachDB Overview dashboard for DBmarlin +CockroachDB Overview dashboard for DBmarlin ## See also diff --git a/src/current/v25.3/demo-automatic-cloud-migration.md b/src/current/v25.3/demo-automatic-cloud-migration.md index c3003bd87e8..78e0d0273a4 100644 --- a/src/current/v25.3/demo-automatic-cloud-migration.md +++ b/src/current/v25.3/demo-automatic-cloud-migration.md @@ -171,7 +171,7 @@ Now open the DB Console at `http://localhost:8080` and click **Metrics** in the Scroll down a bit and hover over the **Replicas per Node** graph. Because CockroachDB replicates each piece of data 3 times by default, the replica count on each of your 3 nodes should be identical: -DB Console +DB Console ## Step 7. Add 3 nodes on "cloud 2" @@ -223,7 +223,7 @@ $ cockroach start \ Back on the **Overview** dashboard in DB Console, hover over the **Replicas per Node** graph again. Because you used [`--locality`]({% link {{ page.version.version }}/configure-replication-zones.md %}#descriptive-attributes-assigned-to-nodes) to specify that nodes are running on 2 clouds, you'll see an approximately even number of replicas on each node, indicating that CockroachDB has automatically rebalanced replicas across both simulated clouds: -DB Console +DB Console Note that it takes a few minutes for the DB Console to show accurate per-node replica counts on hover. This is why the new nodes in the screenshot above show 0 replicas. However, the graph lines are accurate, and you can click **View node list** in the **Summary** area for accurate per-node replica counts as well. @@ -242,7 +242,7 @@ $ cockroach sql --execute="ALTER RANGE default CONFIGURE ZONE USING constraints= Back on the **Overview** dashboard in the DB Console, hover over the **Replicas per Node** graph again. Very soon, you'll see the replica count double on nodes 4, 5, and 6 and drop to 0 on nodes 1, 2, and 3: -DB Console +DB Console This indicates that all data has been migrated from cloud 1 to cloud 2. In a real cloud migration scenario, at this point you would update the load balancer to point to the nodes on cloud 2 and then stop the nodes on cloud 1. But for the purpose of this local simulation, there's no need to do that. diff --git a/src/current/v25.3/demo-cockroachdb-resilience.md b/src/current/v25.3/demo-cockroachdb-resilience.md index d07d3f9df57..4fb76c098b4 100644 --- a/src/current/v25.3/demo-cockroachdb-resilience.md +++ b/src/current/v25.3/demo-cockroachdb-resilience.md @@ -187,25 +187,25 @@ Initially, the workload creates a new database called `ycsb`, creates the table 1. To check the SQL queries getting executed, click **Metrics** on the left, and hover over the **SQL Statements** graph at the top: - DB Console SQL Statements + DB Console SQL Statements 1. To check the client connections from the load generator, select the **SQL** dashboard and hover over the **Open SQL Sessions** graph: - DB Console Open Sessions + DB Console Open Sessions You'll notice 3 client connections from the load generator. If you want to check that HAProxy balanced each connection to a different node, you can change the **Graph** dropdown from **Cluster** to specific nodes. 1. To see more details about the `ycsb` database and the `public.usertable` table, click **Databases** in the upper left and click **ycsb**: - DB Console Databases + DB Console Databases You can also view the schema and other table details of `public.usertable` by clicking the table name: - DB Console usertable + DB Console usertable 1. By default, CockroachDB replicates all data 3 times and balances it across all nodes. To see this balance, click **Overview** and check the replica count across all nodes: - DB Console Overview + DB Console Overview ## Step 5. Simulate a single node failure @@ -246,7 +246,7 @@ When a node fails, the cluster waits for the node to remain offline for 5 minute Go back to the DB Console, click **Metrics** on the left, and verify that the cluster as a whole continues serving data, despite one of the nodes being unavailable and marked as **Suspect**: -DB Console Suspect Node +DB Console Suspect Node This shows that when all ranges are replicated 3 times (the default), the cluster can tolerate a single node failure because the surviving nodes have a majority of each range's replicas (2/3). @@ -254,7 +254,7 @@ This shows that when all ranges are replicated 3 times (the default), the cluste Click **Overview** on the left: -DB Console Cluster Repair +DB Console Cluster Repair Because you reduced the time it takes for the cluster to consider the down node dead, after 1 minute or so, the cluster will consider the down node "dead", and you'll see the replica count on the remaining nodes increase and the number of under-replicated ranges decrease to 0. This shows the cluster repairing itself by re-replicating missing replicas. @@ -286,7 +286,7 @@ To be able to tolerate 2 of 5 nodes failing simultaneously without any service i 1. In the DB Console **Overview** dashboard, watch the replica count increase and even out across all 6 nodes: - DB Console Cluster Restore + DB Console Cluster Restore This shows the cluster up-replicating so that each range has 5 replicas, one on each node. @@ -303,7 +303,7 @@ kill -TERM {process IDs} 1. Click **Overview** on the left, and verify the state of the cluster: - DB Console Cluster Health + DB Console Cluster Health 1. To verify that the cluster still serves data, use the `cockroach sql` command to interact with the cluster. diff --git a/src/current/v25.3/demo-low-latency-multi-region-deployment.md b/src/current/v25.3/demo-low-latency-multi-region-deployment.md index 2025a5d8c49..e6747ba9c0a 100644 --- a/src/current/v25.3/demo-low-latency-multi-region-deployment.md +++ b/src/current/v25.3/demo-low-latency-multi-region-deployment.md @@ -121,7 +121,7 @@ node 9: And here is the view on the **Network Latency Page**, which shows which nodes are in which cluster regions: -Geo-partitioning network latency +Geo-partitioning network latency You can see by referring back and forth between `\demo ls` and the **Network Latency Page** that the cluster has the following region/node/port correspondences, which we can use to determine how to connect MovR from various regions: @@ -251,13 +251,13 @@ Now that you have load hitting the cluster from different regions, check how the In the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) at http://127.0.0.1:8080, click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) on the left and hover over the [**Service Latency: SQL, 99th percentile**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}#service-latency-sql-99th-percentile) timeseries graph. You should see the effects of network latency on this workload. -Geo-partitioning SQL latency +Geo-partitioning SQL latency For each of the 3 nodes that you are pointing the movr workload at, the max latency of 99% of queries are in the 1-2 seconds range. The SQL latency is high because of the network latency between regions. To see the network latency between any two nodes in the cluster, click [**Network Latency**]({% link {{ page.version.version }}/ui-network-latency-page.md %}) in the left-hand navigation. -Geo-partitioning network latency +Geo-partitioning network latency Within a single region, round-trip latency is under 6 ms (milliseconds). Across regions, round-trip latency is significantly higher. @@ -314,7 +314,7 @@ As the multi-region schema changes complete, you should see changes to the follo The small demo cluster used in this example is essentially in a state of overload from the start. The performance numbers shown here only reflect the direction of the performance improvements. You should expect to see much better absolute performance numbers than those described here [in a production deployment]({% link {{ page.version.version }}/recommended-production-settings.md %}). {{site.data.alerts.end}} -Geo-partitioning SQL latency +Geo-partitioning SQL latency ## See also diff --git a/src/current/v25.3/demo-serializable.md b/src/current/v25.3/demo-serializable.md index f867f225b6a..40da08d0bda 100644 --- a/src/current/v25.3/demo-serializable.md +++ b/src/current/v25.3/demo-serializable.md @@ -33,7 +33,7 @@ When write skew happens, a transaction reads something, makes a decision based o ### Schema -Schema for serializable transaction tutorial +Schema for serializable transaction tutorial ## Step 1. Set up the scenario on PostgreSQL diff --git a/src/current/v25.3/deploy-cockroachdb-on-aws.md b/src/current/v25.3/deploy-cockroachdb-on-aws.md index 58f4e2fe26b..badc8a9a52b 100644 --- a/src/current/v25.3/deploy-cockroachdb-on-aws.md +++ b/src/current/v25.3/deploy-cockroachdb-on-aws.md @@ -56,7 +56,7 @@ CockroachDB is supported in all [AWS regions](https://docs.aws.amazon.com/AWSEC2 In this basic deployment, 3 CockroachDB nodes are each deployed on an Amazon EC2 instance across 3 availability zones. These are grouped within a single VPC and security group. Users are routed to the cluster via [Amazon Route 53](https://aws.amazon.com/route53/) (which is not used in this tutorial) and a load balancer. -Architecture diagram for a three-node CockroachDB cluster deployed on AWS +Architecture diagram for a three-node CockroachDB cluster deployed on AWS ## Step 1. Create instances diff --git a/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md b/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md index 0ea67eb1c8d..d07e38ccef3 100644 --- a/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md +++ b/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md @@ -67,7 +67,7 @@ This article assumes you have already installed the OpenShift Container Platform 1. Enter "cockroach" in the search box. There are two tiles called **CockroachDB Operator**. Find the tile _without_ the `Marketplace` label (which requires a subscription). - OpenShift OperatorHub + OpenShift OperatorHub Click the **CockroachDB Operator** tile and then **Install**. @@ -93,7 +93,7 @@ This article assumes you have already installed the OpenShift Container Platform 1. In the **CockroachDB Operator** tile, click **Create instance**. - OpenShift OperatorHub + OpenShift OperatorHub 1. Make sure **CockroachDB Version** is set to a valid CockroachDB version. For a list of compatible image names, see `spec.containers.env` in the [pulic operator manifest](https://raw.github.com/cockroachdb/cockroach-operator/v{{ latest_operator_version }}/install/operator.yaml) on GitHub. @@ -101,7 +101,7 @@ This article assumes you have already installed the OpenShift Container Platform 1. Navigate to **Workloads** > **Pods** and observe the pods being created: - OpenShift OperatorHub + OpenShift OperatorHub 1. You can also use the command line to view the pods: @@ -317,7 +317,7 @@ To run a sample [CockroachDB workload]({% link {{ page.version.version }}/cockro 1. Select one of the CockroachDB pods on the **Pods** page and click **Logs**. This will reveal the JDBC URL that your application can use to connect to CockroachDB: - OpenShift OperatorHub + OpenShift OperatorHub ## Step 8. Delete the cluster @@ -327,7 +327,7 @@ If you want to continue using this cluster, see the documentation on [configurin 1. Go to the **Installed Operators** page and find the cluster name of the CockroachDB cluster. Select **Delete CrdbCluster** from the menu. - OpenShift OperatorHub + OpenShift OperatorHub This will delete the CockroachDB cluster being run by the operator. It will *not* delete: diff --git a/src/current/v25.3/detect-hotspots.md b/src/current/v25.3/detect-hotspots.md index 361d1ce6a45..158fe92e8db 100644 --- a/src/current/v25.3/detect-hotspots.md +++ b/src/current/v25.3/detect-hotspots.md @@ -15,7 +15,7 @@ This page provides practical guidance on identifying common [hotspots]({% link { The following sections provide detailed instructions for identifying potential hotspots and applying mitigations. -Troubleshoot hotspots workflow +Troubleshoot hotspots workflow ## Step 1. Check for a node outlier in metrics @@ -27,7 +27,7 @@ To identify a [hotspot]({% link {{ page.version.version }}/understand-hotspots.m 1. Create a custom chart to monitor the `kv.concurrency.latch_conflict_wait_durations-avg` metric, which tracks time spent on [latch acquisition]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#latch-manager) waiting for conflicts with other latches. For example, a [sequence]({% link {{ page.version.version }}/understand-hotspots.md %}#hot-sequence) that writes to the same row must wait to acquire the latch. 1. To display the metric per node, select the `PER NODE/STORE` checkbox as shown: - kv.concurrency.latch_conflict_wait_durations-avg + kv.concurrency.latch_conflict_wait_durations-avg 1. Is there a node with a maximum value that is a clear outlier in the cluster for the latch conflict wait durations metric? - If **Yes**, note the ID of the [hot node]({% link {{ page.version.version }}/understand-hotspots.md %}#hot-node) and the time period when it was hot. Proceed to check for a [`popular key detected `log](#a-popular-key-detected). @@ -39,7 +39,7 @@ To identify a [hotspot]({% link {{ page.version.version }}/understand-hotspots.m 1. Monitor the [**CPU Percent** graph]({% link {{ page.version.version }}/ui-hardware-dashboard.md %}#cpu-percent). CPU usage typically increases with traffic volume. 1. Check if the CPU usage of the hottest node is 20% or more above the cluster average. For example, node `n5`, represented by the green line in the following **CPU Percent** graph, hovers at around 87% at time 17:35 compared to other nodes that hover around 20% to 25%. - graph of CPU Percent utilization per node showing hot key + graph of CPU Percent utilization per node showing hot key 1. Is there a node with a maximum value that is a clear outlier in the cluster for the CPU percent metric? - If **Yes**, note the ID of the [hot node]({% link {{ page.version.version }}/understand-hotspots.md %}#hot-node) and the time period when it was hot. Proceed to check for a [`popular key detected `log](#a-popular-key-detected). diff --git a/src/current/v25.3/disaster-recovery-overview.md b/src/current/v25.3/disaster-recovery-overview.md index e919d0dd4b6..42f98b8f908 100644 --- a/src/current/v25.3/disaster-recovery-overview.md +++ b/src/current/v25.3/disaster-recovery-overview.md @@ -12,7 +12,7 @@ As you evaluate CockroachDB's disaster recovery features, consider your organiza When you use backups, RPO and RTO can be visualized as follows: -Simulating RPO and RTO. With RPO representing the tolerable data loss, and RTO representing the tolerable time to recovery. +Simulating RPO and RTO. With RPO representing the tolerable data loss, and RTO representing the tolerable time to recovery. {{site.data.alerts.callout_info}} For an overview of resiliency features in CockroachDB, refer to [Data Resilience]({% link {{ page.version.version }}/data-resilience.md %}). diff --git a/src/current/v25.3/enable-node-map.md b/src/current/v25.3/enable-node-map.md index 8d8dea4b7b9..a9be5a10e49 100644 --- a/src/current/v25.3/enable-node-map.md +++ b/src/current/v25.3/enable-node-map.md @@ -15,7 +15,7 @@ This page guides you through the process of setting up and enabling the Node Map -DB Console +DB Console ## Set up and enable the Node Map @@ -99,17 +99,17 @@ To start a new cluster with the correct `--locality` flags: 1. [Access the DB Console]({% link {{ page.version.version }}/ui-overview.md %}#db-console-access). -1. If the node list displays, click the selector Node map selector and select **Node Map**. +1. If the node list displays, click the selector Node map selector and select **Node Map**. The following page is displayed: -DB Console +DB Console ### Step 2. Set the Enterprise license and refresh the DB Console The Node Map should now be displaying the highest-level localities you defined: -DB Console +DB Console {{site.data.alerts.callout_info}} To be displayed on the world map, localities must be assigned a corresponding latitude and longitude. @@ -140,7 +140,7 @@ For the latitudes and longitudes of AWS, Azure, and Google Cloud regions, see [L Refresh the DB Console to see the updated Node Map: -DB Console +DB Console ### Step 5. Navigate the Node Map @@ -148,11 +148,11 @@ To navigate to Node 2, which is in datacenter `us-east-1a` in the `us-east-1` re 1. Click the map component marked as **region=us-east-1** on the Node Map. The [locality component]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}#locality-component) for the datacenter is displayed. - DB Console + DB Console 1. Click the datacenter component marked as **datacenter=us-east-1a**. The individual [node components]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}#node-component) are displayed. - DB Console + DB Console 1. To navigate back to the cluster view, either click **Cluster** in the breadcrumb trail at the top of the Node Map, or click **Up to REGION=US-EAST-1** and then click **Up to CLUSTER** in the lower left-hand side of the Node Map. @@ -165,7 +165,7 @@ To navigate to Node 2, which is in datacenter `us-east-1a` in the `us-east-1` re To verify all requirements, navigate to the [**Localities**]({% link {{ page.version.version }}/ui-debug-pages.md %}#configuration) debug page in the DB Console. -DB Console +DB Console The **Localities** debug page displays the following: diff --git a/src/current/v25.3/explain.md b/src/current/v25.3/explain.md index 4d7d62e83a1..68aea1fc386 100644 --- a/src/current/v25.3/explain.md +++ b/src/current/v25.3/explain.md @@ -886,7 +886,7 @@ The output of `EXPLAIN (DISTSQL)` is a URL for a graphical diagram that displays To view the [DistSQL plan diagram]({% link {{ page.version.version }}/explain-analyze.md %}#distsql-plan-diagram), open the URL. You should see the following: -EXPLAIN (DISTSQL) +EXPLAIN (DISTSQL) To include the data types of the input columns in the physical plan, use `EXPLAIN(DISTSQL, TYPES)`: @@ -903,7 +903,7 @@ EXPLAIN (DISTSQL, TYPES) SELECT l_shipmode, AVG(l_extendedprice) FROM lineitem G Open the URL. You should see the following: -EXPLAIN (DISTSQL) +EXPLAIN (DISTSQL) ### Find the indexes and key ranges a query uses diff --git a/src/current/v25.3/geojson.md b/src/current/v25.3/geojson.md index 859223f7ad1..28699449288 100644 --- a/src/current/v25.3/geojson.md +++ b/src/current/v25.3/geojson.md @@ -189,7 +189,7 @@ The JSON below is modified from the output above: it is grouped into a GeoJSON ` Here is the geometry described above as shown on [geojson.io](http://geojson.io): -GeoJSON.io output +GeoJSON.io output ## See also diff --git a/src/current/v25.3/geoserver.md b/src/current/v25.3/geoserver.md index 8753fd6be84..9c394a084f1 100644 --- a/src/current/v25.3/geoserver.md +++ b/src/current/v25.3/geoserver.md @@ -174,7 +174,7 @@ In the row for the `roads` layer, click the **OpenLayers** button under the **Co Your browser should open a new tab with the title **OpenLayers map preview**. It should show a map view that looks like the following: -GeoServer U.S. National Atlas preview +GeoServer U.S. National Atlas preview ## See also diff --git a/src/current/v25.3/how-does-a-changefeed-work.md b/src/current/v25.3/how-does-a-changefeed-work.md index b58be3b1303..412c11011af 100644 --- a/src/current/v25.3/how-does-a-changefeed-work.md +++ b/src/current/v25.3/how-does-a-changefeed-work.md @@ -9,7 +9,7 @@ When a changefeed that will emit changes to a sink is started on a node, that no Each node uses its _aggregator processors_ to send back checkpoint progress to the coordinator, which gathers this information to update the _high-water mark timestamp_. The high-water mark acts as a checkpoint for the changefeed’s job progress, and guarantees that all changes before (or at) the timestamp have been emitted. In the unlikely event that the changefeed’s coordinating node were to fail during the job, that role will move to a different node and the changefeed will restart from the last checkpoint. If restarted, the changefeed may [re-emit messages]({% link {{ page.version.version }}/changefeed-messages.md %}#duplicate-messages) starting at the high-water mark time to the current time. Refer to [Ordering Guarantees]({% link {{ page.version.version }}/changefeed-messages.md %}#ordering-and-delivery-guarantees) for detail on CockroachDB's at-least-once-delivery-guarantee and how per-key message ordering is applied. -Changefeed process in a 3-node cluster +Changefeed process in a 3-node cluster With [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) specified when a changefeed is started, the coordinator will send the resolved timestamp (i.e., the high-water mark) to each endpoint in the sink. For example, when using [Kafka]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka) this will be sent as a message to each partition; for [cloud storage]({% link {{ page.version.version }}/changefeed-sinks.md %}#cloud-storage-sink), this will be emitted as a resolved timestamp file. diff --git a/src/current/v25.3/kibana.md b/src/current/v25.3/kibana.md index c20560244ee..a0e77c7c1ad 100644 --- a/src/current/v25.3/kibana.md +++ b/src/current/v25.3/kibana.md @@ -83,11 +83,11 @@ Open the Kibana web interface and click **Dashboard**. Search for the CockroachDB dashboard: -CockroachDB dashboard selection for Metricbeat +CockroachDB dashboard selection for Metricbeat Click the dashboard title to open the dashboard, which presents metrics on replicas and query performance: -CockroachDB Overview dashboard for Metricbeat +CockroachDB Overview dashboard for Metricbeat ## Step 4. Run a sample workload @@ -109,7 +109,7 @@ cockroach workload run movr --duration=5m 'postgresql://root@localhost:26257?ssl Click **Refresh**. The query metrics will appear on the dashboard: -CockroachDB Overview dashboard for Metricbeat with SQL metrics +CockroachDB Overview dashboard for Metricbeat with SQL metrics ## See also diff --git a/src/current/v25.3/log-sql-activity-to-datadog.md b/src/current/v25.3/log-sql-activity-to-datadog.md index 2de0943083b..0e077b86506 100644 --- a/src/current/v25.3/log-sql-activity-to-datadog.md +++ b/src/current/v25.3/log-sql-activity-to-datadog.md @@ -145,7 +145,7 @@ Each `sampled_query` and `sampled_transaction` event has an `event.TransactionID 1. Navigate to [**Datadog > Logs**](https://app.datadoghq.com/logs). 1. Search for `@event.EventType:(sampled_query OR sampled_transaction)` to see the logs for the query and transaction events that are emitted. For example: -Datadog Telemetry Logs +Datadog Telemetry Logs ## See also diff --git a/src/current/v25.3/logical-data-replication-overview.md b/src/current/v25.3/logical-data-replication-overview.md index 8b30500aa76..b1078d55396 100644 --- a/src/current/v25.3/logical-data-replication-overview.md +++ b/src/current/v25.3/logical-data-replication-overview.md @@ -29,13 +29,13 @@ For a comparison of CockroachDB high availability and resilience features and to Maintain [high availability]({% link {{ page.version.version }}/data-resilience.md %}#high-availability) and resilience to region failures with a two-datacenter topology. You can run bidirectional LDR to ensure [data resilience]({% link {{ page.version.version }}/data-resilience.md %}) in your deployment, particularly in datacenter or region failures. If you set up two single-region clusters, in LDR, both clusters can receive application reads and writes with low, single-region write latency. Then, in a datacenter, region, or cluster outage, you can redirect application traffic to the surviving cluster with [low downtime]({% link {{ page.version.version }}/data-resilience.md %}#high-availability). In the following diagram, the two single-region clusters are deployed in US East and West to provide low latency for that region. The two LDR jobs ensure that the tables on both clusters will reach eventual consistency. -Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. +Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. ### Achieve workload isolation between clusters Isolate critical application workloads from non-critical application workloads. For example, you may want to run jobs like [changefeeds]({% link {{ page.version.version }}/change-data-capture-overview.md %}) or [backups]({% link {{ page.version.version }}/backup-and-restore-overview.md %}) from one cluster to isolate these jobs from the cluster receiving the principal application traffic. -Diagram showing unidirectional LDR from a source cluster to a destination cluster with the destination cluster supporting secondary workloads plus jobs and the source cluster accepting the main application traffic. +Diagram showing unidirectional LDR from a source cluster to a destination cluster with the destination cluster supporting secondary workloads plus jobs and the source cluster accepting the main application traffic. ## Features diff --git a/src/current/v25.3/map-sql-activity-to-app.md b/src/current/v25.3/map-sql-activity-to-app.md index 13723f18c88..33ec23e45a4 100644 --- a/src/current/v25.3/map-sql-activity-to-app.md +++ b/src/current/v25.3/map-sql-activity-to-app.md @@ -22,7 +22,7 @@ SET application_name = movr_app; Once you set the application name, the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) lets you [filter database workloads by application name]({% link {{ page.version.version }}/ui-statements-page.md %}#filter). -Movr app filter +Movr app filter If parts of your applications or known microservices are experiencing performance degradation, you can filter for the database workload tracing statements and transactions back to that part of your application directly in the DB Console. You can quickly identify whether there were database performance problems and if so, troubleshoot the issue using [SQL observability touch points](#trace-sql-activity-using-metrics) in the DB Console. diff --git a/src/current/v25.3/monitor-and-analyze-transaction-contention.md b/src/current/v25.3/monitor-and-analyze-transaction-contention.md index 7cbdb016fde..8174f342c0b 100644 --- a/src/current/v25.3/monitor-and-analyze-transaction-contention.md +++ b/src/current/v25.3/monitor-and-analyze-transaction-contention.md @@ -40,7 +40,7 @@ In the DB Console, in the cluster view, this rate is averaged across all nodes, The following image from the DB Console was taken from a cluster running more than 50,000 queries per second with around 2 contention events per second. This contention is unlikely to have an impact on the workload. -DB Console SQL Statement Contention graph +DB Console SQL Statement Contention graph ### SQL Activity pages @@ -54,7 +54,7 @@ The [**Contention Time** column]({% link {{ page.version.version }}/ui-statement The following image shows the **Statements** page with the top 3 statement fingerprints by Contention Time in a cluster containing the test data from the [Analyze using `crdb_internal` tables](#analyze-using-crdb_internal-tables) section. -Statements page by Contention Time +Statements page by Contention Time #### Transactions page @@ -64,7 +64,7 @@ The [**Contention Time** column]({% link {{ page.version.version }}/ui-transacti The following image shows the **Transactions** page with the top 3 transactions fingerprints by Contention Time in a cluster containing the test data in the [Analyze using `crdb_internal` tables](#analyze-using-crdb_internal-tables) section. -Transactions page by Contention Time +Transactions page by Contention Time ### Insights page @@ -377,15 +377,15 @@ This section applies a variation of the previously described analysis process to Review the [DB Console Metrics]({% link {{ page.version.version }}/ui-overview.md %}#metrics) graphs to get a high-level understanding of the contention events. The [SQL Statement Errors]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#sql-statement-errors) graph shows an increase of errors during the time period of 9:16 to 9:23 UTC: -DB Console SQL Statement Errors graph +DB Console SQL Statement Errors graph The [SQL Statement Contention]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#sql-statement-contention) graph shows a corresponding increase between 9:16 and 9:23 UTC: -DB Console SQL Statement Contention graph +DB Console SQL Statement Contention graph The [Transaction Restarts]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#transaction-restarts) graph also shows a corresponding increase between 9:16 and 9:23 UTC: -DB Console Transaction Restarts graph +DB Console Transaction Restarts graph These graphs help to understand the incident at a high-level, but not the specific transactions that are involved. To understand that, query the `crdb_internal.transaction_contention_events` table. diff --git a/src/current/v25.3/monitor-cockroachdb-kubernetes.md b/src/current/v25.3/monitor-cockroachdb-kubernetes.md index e53bde93041..283144ff389 100644 --- a/src/current/v25.3/monitor-cockroachdb-kubernetes.md +++ b/src/current/v25.3/monitor-cockroachdb-kubernetes.md @@ -167,11 +167,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_success}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in {% if page.secure == true %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% else %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% endif %} and then point your browser to the [Prometheus endpoint]({% link {{ page.version.version }}/prometheus-endpoint.md %}). @@ -242,11 +242,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to http://localhost:9093 in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening http://localhost:9090/status. The screen should look like this: - Alertmanager + Alertmanager 1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): @@ -262,11 +262,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening http://localhost:9090/rules. The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening http://localhost:9090/alerts. The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: diff --git a/src/current/v25.3/monitor-cockroachdb-operator.md b/src/current/v25.3/monitor-cockroachdb-operator.md index e44c73c252d..0d8656e4cce 100644 --- a/src/current/v25.3/monitor-cockroachdb-operator.md +++ b/src/current/v25.3/monitor-cockroachdb-operator.md @@ -105,11 +105,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_info}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in [Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-cockroachdb-operator.md %}#step-4-access-the-db-console) and then point your browser to [http://localhost:8080/_status/vars](http://localhost:8080/_status/vars). @@ -174,11 +174,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to [http://localhost:9093](http://localhost:9093/) in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening [http://localhost:9090/status](http://localhost:9090/status). The screen should look like this: - Alertmanager + Alertmanager 1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): @@ -193,11 +193,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening [http://localhost:9090/rules](http://localhost:9090/rules). The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening [http://localhost:9090/alerts](http://localhost:9090/alerts). The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: 1. Use the `kubectl edit` command to open the rules for editing: diff --git a/src/current/v25.3/monitoring-and-alerting.md b/src/current/v25.3/monitoring-and-alerting.md index fb1a926937d..aef34384aa6 100644 --- a/src/current/v25.3/monitoring-and-alerting.md +++ b/src/current/v25.3/monitoring-and-alerting.md @@ -143,7 +143,7 @@ The `/_status/vars` metrics endpoint is in Prometheus format and is not deprecat Several endpoints return raw status meta information in JSON at `http://:/#/debug`. You can investigate and use these endpoints, but note that they are subject to change. -Raw Status Endpoints +Raw Status Endpoints ### Node status command diff --git a/src/current/v25.3/node-shutdown.md b/src/current/v25.3/node-shutdown.md index 6465879950a..9a7f2087c21 100644 --- a/src/current/v25.3/node-shutdown.md +++ b/src/current/v25.3/node-shutdown.md @@ -311,25 +311,25 @@ This can lead to disk utilization imbalance across nodes. **This is expected beh In this scenario, each range is replicated 3 times, with each replica on a different node: -
Decommission Scenario 1
+
Decommission Scenario 1
If you try to decommission a node, the process will hang indefinitely because the cluster cannot move the decommissioning node's replicas to the other 2 nodes, which already have a replica of each range: -
Decommission Scenario 1
+
Decommission Scenario 1
To successfully decommission a node in this cluster, you need to **add a 4th node**. The decommissioning process can then complete: -
Decommission Scenario 1
+
Decommission Scenario 1
#### 5-node cluster with 3-way replication In this scenario, like in the scenario above, each range is replicated 3 times, with each replica on a different node: -
Decommission Scenario 1
+
Decommission Scenario 1
If you decommission a node, the process will run successfully because the cluster will be able to move the node's replicas to other nodes without doubling up any range replicas: -
Decommission Scenario 1
+
Decommission Scenario 1
diff --git a/src/current/v25.3/performance-benchmarking-with-tpcc-large.md b/src/current/v25.3/performance-benchmarking-with-tpcc-large.md index daa4accbb6b..7d687ecce0c 100644 --- a/src/current/v25.3/performance-benchmarking-with-tpcc-large.md +++ b/src/current/v25.3/performance-benchmarking-with-tpcc-large.md @@ -197,7 +197,7 @@ CockroachDB comes with a number of [built-in workloads]({% link {{ page.version. - To monitor the number of lease transfers, open the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}), select the **Replication** dashboard, hover over the **Range Operations** graph, and check the **Lease Transfers** data point. - To check the number of snapshots, open the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}), select the **Replication** dashboard, and hover over the **Snapshots** graph. - TPC-C 140k replication and partitioning dashboards + TPC-C 140k replication and partitioning dashboards ## Step 7. Allocate partitions diff --git a/src/current/v25.3/performance-recipes.md b/src/current/v25.3/performance-recipes.md index 1758d395baa..6aac3ddd7f9 100644 --- a/src/current/v25.3/performance-recipes.md +++ b/src/current/v25.3/performance-recipes.md @@ -113,7 +113,7 @@ These are indicators that lock contention occurred in the past: {{site.data.alerts.end}} - The **SQL Statement Contention** graph ([CockroachDB {{ site.data.products.cloud }} Console]({% link cockroachcloud/metrics-sql.md %}#sql-statement-contention) and [DB Console]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#sql-statement-contention)) is showing spikes over time. - SQL Statement Contention graph in DB Console + SQL Statement Contention graph in DB Console If a long-running transaction is waiting due to [lock contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention): @@ -150,7 +150,7 @@ When running under `SERIALIZABLE` isolation, implement [client-side retry handli If you see many waiting transactions, a single long-running transaction may be blocking transactions that are, in turn, blocking others. In this case, sort the table by **Time Spent Waiting** to find the transaction that has been waiting for the longest amount of time. Unblocking this transaction may unblock the other transactions. {{site.data.alerts.end}} Click the transaction's execution ID and view the following transaction execution details: - Movr rides transactions + Movr rides transactions - **Last Retry Reason** shows the last [transaction retry error](#transaction-retry-error) received for the transaction, if applicable. - The details of the **blocking** transaction, directly below the **Contention Insights** section. Click the blocking transaction to view its details. @@ -158,7 +158,7 @@ When running under `SERIALIZABLE` isolation, implement [client-side retry handli 1. [Identify the **blocking** transaction](#identify-conflicting-transactions) and view its transaction execution details. 1. Click its **Session ID** to open the **Session Details** page. - Sessions Details Page + Sessions Details Page 1. Click **Cancel Statement** to cancel the **Most Recent Statement** and thus the transaction, or click **Cancel Session** to cancel the session issuing the transaction. ##### Identify transactions and objects that experienced lock contention @@ -294,7 +294,7 @@ If the [Overview dashboard]({% link {{ page.version.version }}/ui-overview-dashb In the DB Console, the [Tables List Tab]({% link {{ page.version.version }}/ui-databases-page.md %}#tables-list-tab) of the [Database Details Page]({% link {{ page.version.version }}/ui-databases-page.md %}#database-details-page) for a given database shows the percentage of live data for each table. For example: -Table live data +Table live data In this example, at `37.3%` the `vehicles` table would be considered to have a low percentage of live data. In the worst cases, the percentage can be `0%`. diff --git a/src/current/v25.3/performance.md b/src/current/v25.3/performance.md index 2d19619a625..cb0492b8774 100644 --- a/src/current/v25.3/performance.md +++ b/src/current/v25.3/performance.md @@ -22,7 +22,7 @@ For a refresher on what exactly TPC-C is and how it is measured, see [Benchmark CockroachDB achieves this performance in [`SERIALIZABLE` isolation]({% link {{ page.version.version }}/demo-serializable.md %}), the strongest isolation level in the SQL standard. -TPC-C 140,000 +TPC-C 140,000 | Metric | CockroachDB 19.2 | CockroachDB 21.1 | |-------------------------------------------------+------------------+------------------| @@ -37,7 +37,7 @@ CockroachDB achieves this performance in [`SERIALIZABLE` isolation]({% link {{ p CockroachDB has **no theoretical scaling limit** and, in practice, can achieve near-linear performance at 256 nodes. Because the TPC-C results reflect leaps in scale, to test linear scaling, Cockroach Labs ran a simple benchmark named KV 95 (95% point reads, 5% point writes, all uniformly distributed) on AWS `c5d.4xlarge` machines: -CRDB Linear Scale +CRDB Linear Scale This chart shows that adding nodes increases throughput linearly while holding p50 and p99 latency constant. The concurrency for each scale was chosen to optimize throughput while maintaining an acceptable latency and can be observed in the following table. diff --git a/src/current/v25.3/physical-cluster-replication-technical-overview.md b/src/current/v25.3/physical-cluster-replication-technical-overview.md index cec24c3edb8..07cfea4a2ea 100644 --- a/src/current/v25.3/physical-cluster-replication-technical-overview.md +++ b/src/current/v25.3/physical-cluster-replication-technical-overview.md @@ -27,7 +27,7 @@ The stream initialization proceeds as follows: 1. The initial scan runs on the primary and backfills all data from the primary virtual cluster as of the starting timestamp of the replication stream. 1. Once the initial scan is complete, the primary then begins streaming all changes from the point of the starting timestamp. -Two virtualized clusters with system virtual cluster and application virtual cluster showing the directional stream. +Two virtualized clusters with system virtual cluster and application virtual cluster showing the directional stream. #### Start-up sequence with read on standby @@ -55,7 +55,7 @@ If the primary cluster does not receive replicated time information from the sta The tracked replicated time and the advancing protected timestamp allow the replication stream to also track _retained time_, which is a timestamp in the past indicating the lower bound that the replication stream could fail over to. The retained time can be up to 4 hours in the past, due to the protected timestamp. Therefore, the _failover window_ for a replication job falls between the retained time and the replicated time. -Timeline showing how the failover window is between the retained time and replicated time. +Timeline showing how the failover window is between the retained time and replicated time. _Replication lag_ is the time between the most up-to-date replicated time and the actual time. While the replication keeps as current as possible to the actual time, this replication lag window is where there is potential for data loss. diff --git a/src/current/v25.3/query-behavior-troubleshooting.md b/src/current/v25.3/query-behavior-troubleshooting.md index d13106413fc..2724a877083 100644 --- a/src/current/v25.3/query-behavior-troubleshooting.md +++ b/src/current/v25.3/query-behavior-troubleshooting.md @@ -58,23 +58,23 @@ You can look more closely at the behavior of a statement by visualizing a [state 1. Click **JSON File** in the Jaeger UI and upload `trace-jaeger.json` from the diagnostics bundle. The trace will appear in the list on the right. - Jaeger Trace Upload JSON + Jaeger Trace Upload JSON 1. Click the trace to view its details. It is visualized as a collection of spans with timestamps. These may include operations executed by different nodes. - Jaeger Trace Spans + Jaeger Trace Spans The full timeline displays the execution time and [execution phases]({% link {{ page.version.version }}/architecture/sql-layer.md %}#sql-parser-planner-executor) for the statement. 1. Click a span to view details for that span and log messages. - Jaeger Trace Log Messages + Jaeger Trace Log Messages 1. You can troubleshoot [transaction contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention), for example, by gathering [diagnostics]({% link {{ page.version.version }}/ui-statements-page.md %}#diagnostics) on statements with high latency and looking through the log messages in `trace-jaeger.json` for jumps in latency. In the following example, the trace shows that there is significant latency between a push attempt on a transaction that is holding a [lock]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#writing) (56.85ms) and that transaction being committed (131.37ms). - Jaeger Trace Log Messages + Jaeger Trace Log Messages #### Visualize traces sent directly from CockroachDB @@ -93,7 +93,7 @@ Enabling full tracing is expensive both in terms of CPU usage and memory footpri 1. Go to [`http://localhost:16686`](http://localhost:16686). 1. In the Service field, select **CockroachDB**. - Jaeger Trace Log Messages + Jaeger Trace Log Messages 1. Click **Find Traces**. diff --git a/src/current/v25.3/query-spatial-data.md b/src/current/v25.3/query-spatial-data.md index 6a32054d268..882c95eda5c 100644 --- a/src/current/v25.3/query-spatial-data.md +++ b/src/current/v25.3/query-spatial-data.md @@ -279,7 +279,7 @@ We can see that almost half of all of the tornadoes in this outbreak began in Ok It might be interesting to draw these points on a map. The image below shows the points from the query above drawn as a simple polygon on a map of Oklahoma. The boxes around the polygon show the [spatial index]({% link {{ page.version.version }}/spatial-indexes.md %}) coverings for the polygon. -1999 Oklahoma tornado outbreak map view +1999 Oklahoma tornado outbreak map view (Map data © 2020 Google) diff --git a/src/current/v25.3/secure-a-cluster.md b/src/current/v25.3/secure-a-cluster.md index e2819037b89..84e1d00594c 100644 --- a/src/current/v25.3/secure-a-cluster.md +++ b/src/current/v25.3/secure-a-cluster.md @@ -309,7 +309,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -319,7 +319,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. @@ -349,7 +349,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Back in the DB Console, despite one node being "suspect", notice the continued SQL traffic: - DB Console + DB Console 1. Restart node 3: @@ -393,7 +393,7 @@ Adding capacity is as simple as starting more nodes with `cockroach start`. 1. Back on the **Cluster Overview** in the DB Console, you'll now see 5 nodes listed: - DB Console + DB Console At first, the replica count will be lower for nodes 4 and 5. Very soon, however, you'll see those numbers even out across all nodes, indicating that data is being [automatically rebalanced]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) to utilize the additional capacity of the new nodes. diff --git a/src/current/v25.3/set-up-logical-data-replication.md b/src/current/v25.3/set-up-logical-data-replication.md index 1de5e24d359..f557cf31ef9 100644 --- a/src/current/v25.3/set-up-logical-data-replication.md +++ b/src/current/v25.3/set-up-logical-data-replication.md @@ -15,7 +15,7 @@ In this tutorial, you will set up [**logical data replication (LDR)**]({% link { In the following diagram, **LDR stream 1** creates a unidirectional LDR setup. Introducing **LDR stream 2** extends the setup to bidirectional. -Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. +Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. For more details on use cases, refer to the [Logical Data Replication Overview]({% link {{ page.version.version }}/logical-data-replication-overview.md %}). diff --git a/src/current/v25.3/show-trace.md b/src/current/v25.3/show-trace.md index a7dbeac0131..7c37b929c94 100644 --- a/src/current/v25.3/show-trace.md +++ b/src/current/v25.3/show-trace.md @@ -48,7 +48,7 @@ Concept | Description Consider a visualization of a trace for one statement as [visualized by Jaeger]({% link {{ page.version.version }}/query-behavior-troubleshooting.md %}#visualize-statement-traces-in-jaeger). The image shows spans and log messages. You can see names of operations and sub-operations, along with parent-child relationships and timing information, and it's easy to see which operations are executed in parallel. -Jaeger Trace Log Messages +Jaeger Trace Log Messages ## Response diff --git a/src/current/v25.3/spatial-indexes.md b/src/current/v25.3/spatial-indexes.md index 5ae01fae12b..d7687648ca4 100644 --- a/src/current/v25.3/spatial-indexes.md +++ b/src/current/v25.3/spatial-indexes.md @@ -56,15 +56,15 @@ Whichever approach to indexing is used, when an object is indexed, a "covering" Under the hood, CockroachDB uses the [S2 geometry library](https://s2geometry.io/) to divide the space being indexed into a [quadtree](https://wikipedia.org/wiki/Quadtree) data structure with a set number of levels and a data-independent shape. Each node in the quadtree (really, [S2 cell](https://s2geometry.io/devguide/s2cell_hierarchy.html)) represents some part of the indexed space and is divided once horizontally and once vertically to produce 4 child cells in the next level. The following image shows visually how a location (marked in red) is represented using levels of a quadtree: -Quadtree +Quadtree Visually, you can think of the S2 library as enclosing a sphere in a cube. We map from points on each face of the cube to points on the face of the sphere. As you can see in the following 2-dimensional picture, there is a projection that occurs in this mapping: the lines entering from the left mark points on the cube face, and are "refracted" by the material of the cube face before touching the surface of the sphere. This projection reduces the distortion that would occur if the points on the cube face were projected straight onto the sphere. -S2 Cubed Sphere - 2D +S2 Cubed Sphere - 2D Next, let's look at a 3-dimensional image that shows the cube and sphere more clearly. Each cube face is mapped to the quadtree data structure mentioned, and each node in the quadtree is numbered using a [Hilbert space-filling curve](https://wikipedia.org/wiki/Hilbert_curve) which preserves locality of reference. In the following image, you can imagine the points of the Hilbert curve on the rear face of the cube being projected onto the sphere in the center. The use of a space-filling curve means that two shapes that are near each other on the sphere are very likely to be near each other on the line that makes up the Hilbert curve. This is good for performance. -S2 Cubed Sphere - 3D +S2 Cubed Sphere - 3D When you index a spatial object, a covering is computed using some number of the cells in the quadtree. The number of covering cells can vary per indexed object by passing special arguments to `CREATE INDEX` that tell CockroachDB how many levels of S2 cells to use. The leaf nodes of the S2 quadtree are at level 30, and for `GEOGRAPHY` measure 1cm across the Earth's surface. By default, `GEOGRAPHY` indexes use up to level 30, and get this level of precision. We also use S2 cell coverings in a slightly different way for `GEOMETRY` indexes. The precision you get there is the bounding length of the `GEOMETRY` index divided by 4^30. For more information, see [Tuning spatial indexes](#tuning-spatial-indexes). @@ -99,11 +99,11 @@ We will generate coverings for the following geometry object, which describes a The animated following image shows the S2 coverings that are generated as we increase the `s2_max_cells` parameter from the 1 to 30 (minimum to maximum): -Animated GIF of S2 Coverings - Levels 1 to 30 +Animated GIF of S2 Coverings - Levels 1 to 30 Here are the same images presented in a grid. You can see that as we turn up the `s2_max_cells` parameter, more work is done by CockroachDB to discover a tighter and tighter covering (that is, a covering using more and smaller cells). The covering for this particular shape reaches a reasonable level of accuracy when `s2_max_cells` reaches 10, and stops improving much past 12. -Static image of S2 Coverings - Levels 1 to 30 +Static image of S2 Coverings - Levels 1 to 30 ### Index tuning parameters @@ -149,7 +149,7 @@ SELECT ST_AsGeoJSON(st_collect(geom)) FROM tmp_viz; When you paste the JSON output into [geojson.io](http://geojson.io), it generates the following picture, which shows both the `LINESTRING` and its S2 covering based on the options you passed to `st_s2covering`. -S2 LINESTRING example covering +S2 LINESTRING example covering ### Create a spatial index diff --git a/src/current/v25.3/spatial-tutorial.md b/src/current/v25.3/spatial-tutorial.md index 72d45bf1fdd..6c291c71cfa 100644 --- a/src/current/v25.3/spatial-tutorial.md +++ b/src/current/v25.3/spatial-tutorial.md @@ -158,7 +158,7 @@ FROM Paste the result above into and you should see the following map, with gray markers for each loon sighting from the bird survey. -Common Loon sightings in the years 2000-2019 in NY state +Common Loon sightings in the years 2000-2019 in NY state ### (2) What is the total area of Loon sightings? @@ -561,7 +561,7 @@ WHERE Paste the result above into and you should see the following map: -Convex hull of bookstore locations within Common Loon habitat +Convex hull of bookstore locations within Common Loon habitat ### (10) What is the area of the shape of all bookstore locations that are in the Loon's habitat range within NY state? @@ -702,7 +702,7 @@ The result is a very large chunk of JSON: Paste the result above into and you should see the following map: -What does the route from Mysteries on Main Street in Johnstown, NY to The Book Nook in Saranac Lake, NY look like? +What does the route from Mysteries on Main Street in Johnstown, NY to The Book Nook in Saranac Lake, NY look like? ### (13) What were the 25 most-commonly-sighted birds in 2019 within 10 miles of the route between Mysteries on Main Street in Johnstown, NY and The Bookstore Plus in Lake Placid, NY? @@ -1687,7 +1687,7 @@ The `tutorial` database contains the following tables: Below is an entity-relationship diagram showing the `bookstores` and `bookstore_routes` tables (generated using [DBeaver]({% link {{ page.version.version }}/dbeaver.md %})): -tutorial.bookstores and tutorial.bookstore_routes ER diagrams +tutorial.bookstores and tutorial.bookstore_routes ER diagrams As mentioned above, the `bookstores` table was created by scraping web data from the [American Booksellers Association website's member directory](https://bookweb.org/member_directory/search/ABAmember). In addition, the `geom` column was constructed by doing some [address geocoding](https://wikipedia.org/wiki/Address_geocoding) that converted each bookstore's address to a lon/lat pair and converted to a spatial object using `ST_MakePoint`. For each bookstore, the script did a bit of parsing and geocoding and ran essentially the following query: @@ -1751,7 +1751,7 @@ There are multiple ways to do geocoding. You can use REST API-based services or Meanwhile, the `roads` table has many columns; the most important ones used in this tutorial are `state`, `geom`, `miles`, and `prime_name` (the human-readable name of the road). -tutorial.roads ER diagrams +tutorial.roads ER diagrams For more information about what the other columns in `roads` mean, see the [full data set description](https://www.sciencebase.gov/catalog/file/get/581d052be4b08da350d524ce?f=__disk__60%2F6b%2F4e%2F606b4e564884da8cca57ffeb229cd817006616e0&transform=1&allowOpen=true). @@ -1769,7 +1769,7 @@ The tables in the `birds` database are diagrammed below: - `routes` is a list of ~130 prescribed locations that the birdwatchers helping with the survey visit each year. The `geom` associated with each route is a [Point]({% link {{ page.version.version }}/point.md %}) marking the latitude and longitude of the route's starting point. For details, see the [schema](https://www.sciencebase.gov/catalog/file/get/5ea04e9a82cefae35a129d65?f=__disk__b4%2F2f%2Fcf%2Fb42fcfe28a799db6e8c97200829ea1ebaccbf8ea&transform=1&allowOpen=true) (search for the text "routes.csv"). - `observations` describes the ~85,000 times and places in which birds of various species were actually seen. The `bird_id` is a [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) to the ID in the `birds` table, and the `route_id` points to the ID of the `routes` table. -birds.birds, birds.routes, and birds.observations ER diagrams +birds.birds, birds.routes, and birds.observations ER diagrams Each of these tables were populated using a script that parsed [the CSV files available for download](https://www.sciencebase.gov/catalog/item/52b1dfa8e4b0d9b325230cd9) and added the data using [`INSERT`]({% link {{ page.version.version }}/insert.md %}) statements. For the `routes` table, once again the `ST_MakePoint` function was used to create a geometry from the lon/lat values in the CSV as follows: diff --git a/src/current/v25.3/st_contains.md b/src/current/v25.3/st_contains.md index da76c96dc07..09f0d8fbc68 100644 --- a/src/current/v25.3/st_contains.md +++ b/src/current/v25.3/st_contains.md @@ -53,7 +53,7 @@ SELECT ST_Contains(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Contains - true +ST_Contains - true ### False @@ -75,7 +75,7 @@ SELECT st_contains(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Contains - false +ST_Contains - false ## See also diff --git a/src/current/v25.3/st_convexhull.md b/src/current/v25.3/st_convexhull.md index 4a22d3a97ac..5c42f7bb837 100644 --- a/src/current/v25.3/st_convexhull.md +++ b/src/current/v25.3/st_convexhull.md @@ -235,7 +235,7 @@ In this example, we will generate the convex hull of a single geometry. The geo 1. Paste the JSON emitted in the previous step into [geojson.io](http://geojson.io) and you should see an image like the following, which shows the convex hull surrounding the locations of [most of the independent bookstores in New York State](https://www.bookweb.org/member_directory/search/ABAmember/results/0/0/ny/0): - ST_ConvexHull example + ST_ConvexHull example 1. Finally, drop the temporary table if you no longer need it: diff --git a/src/current/v25.3/st_coveredby.md b/src/current/v25.3/st_coveredby.md index 7983d4c24bd..cda571de62d 100644 --- a/src/current/v25.3/st_coveredby.md +++ b/src/current/v25.3/st_coveredby.md @@ -48,7 +48,7 @@ SELECT ST_CoveredBy(st_geomfromtext('SRID=4326;POLYGON((-87.623177 41.881832, -9 (1 row) ~~~ -ST_CoveredBy - true +ST_CoveredBy - true ### False @@ -68,7 +68,7 @@ SELECT ST_CoveredBy(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -9 (1 row) ~~~ -ST_CoveredBy - false +ST_CoveredBy - false ## See also diff --git a/src/current/v25.3/st_covers.md b/src/current/v25.3/st_covers.md index 4bfb6dedc16..0b670205cda 100644 --- a/src/current/v25.3/st_covers.md +++ b/src/current/v25.3/st_covers.md @@ -50,7 +50,7 @@ SELECT ST_Covers(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Covers - true +ST_Covers - true ### False @@ -70,7 +70,7 @@ SELECT ST_Covers(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Covers - false +ST_Covers - false ## See also diff --git a/src/current/v25.3/st_disjoint.md b/src/current/v25.3/st_disjoint.md index b794f594b46..342258d5bf6 100644 --- a/src/current/v25.3/st_disjoint.md +++ b/src/current/v25.3/st_disjoint.md @@ -49,7 +49,7 @@ SELECT st_disjoint(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Disjoint - true +ST_Disjoint - true ### False @@ -69,7 +69,7 @@ SELECT st_disjoint(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Disjoint - false +ST_Disjoint - false ## See also diff --git a/src/current/v25.3/st_equals.md b/src/current/v25.3/st_equals.md index cfc566ba261..a284cff7e21 100644 --- a/src/current/v25.3/st_equals.md +++ b/src/current/v25.3/st_equals.md @@ -45,7 +45,7 @@ SELECT st_equals(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Equals - true +ST_Equals - true ### False @@ -65,7 +65,7 @@ SELECT st_equals(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Equals - false +ST_Equals - false ## See also diff --git a/src/current/v25.3/st_intersects.md b/src/current/v25.3/st_intersects.md index 89d38cc5565..b1f868d9bd6 100644 --- a/src/current/v25.3/st_intersects.md +++ b/src/current/v25.3/st_intersects.md @@ -46,7 +46,7 @@ SELECT st_intersects(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, - (1 row) ~~~ -ST_Intersects - true +ST_Intersects - true ### False @@ -66,7 +66,7 @@ SELECT st_intersects(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, - (1 row) ~~~ -ST_Intersects - false +ST_Intersects - false ## See also diff --git a/src/current/v25.3/st_overlaps.md b/src/current/v25.3/st_overlaps.md index 47a911ab55d..7b471084e33 100644 --- a/src/current/v25.3/st_overlaps.md +++ b/src/current/v25.3/st_overlaps.md @@ -47,7 +47,7 @@ SELECT st_overlaps(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Overlaps - true +ST_Overlaps - true ### False @@ -67,7 +67,7 @@ SELECT st_overlaps(st_geomfromtext('SRID=4326;POLYGON((-79.995888 40.440624,-74. (1 row) ~~~ -ST_Overlaps - false +ST_Overlaps - false ## See also diff --git a/src/current/v25.3/st_touches.md b/src/current/v25.3/st_touches.md index d579f0f432d..7f4fdd73075 100644 --- a/src/current/v25.3/st_touches.md +++ b/src/current/v25.3/st_touches.md @@ -47,7 +47,7 @@ SELECT st_touches(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95. (1 row) ~~~ -ST_Touches - true +ST_Touches - true ### False @@ -67,7 +67,7 @@ SELECT st_touches(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95. (1 row) ~~~ -ST_Touches - false +ST_Touches - false ## See also diff --git a/src/current/v25.3/st_union.md b/src/current/v25.3/st_union.md index df4a9429bc1..98bd5f5c571 100644 --- a/src/current/v25.3/st_union.md +++ b/src/current/v25.3/st_union.md @@ -236,7 +236,7 @@ In this example, we will generate a single geometry from many individual points 1. Paste the JSON emitted in the previous step into [geojson.io](http://geojson.io) and you should see an image like the following, which shows the location of [most of the independent bookstores in New York State](https://www.bookweb.org/member_directory/search/ABAmember/results/0/0/ny/0): - ST_Union example + ST_Union example 1. Finally, drop the temporary table if you no longer need it: diff --git a/src/current/v25.3/st_within.md b/src/current/v25.3/st_within.md index cad89f59c56..243d79c7d33 100644 --- a/src/current/v25.3/st_within.md +++ b/src/current/v25.3/st_within.md @@ -53,7 +53,7 @@ SELECT ST_Within(st_geomfromtext('SRID=4326;POLYGON((-87.623177 41.881832, -90.1 (1 row) ~~~ -ST_Within - true +ST_Within - true ### False @@ -73,7 +73,7 @@ SELECT ST_Within(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Within - false +ST_Within - false ## See also diff --git a/src/current/v25.3/start-a-local-cluster-in-docker-windows.md b/src/current/v25.3/start-a-local-cluster-in-docker-windows.md index 5d704a7b5d7..4dd8a85eead 100644 --- a/src/current/v25.3/start-a-local-cluster-in-docker-windows.md +++ b/src/current/v25.3/start-a-local-cluster-in-docker-windows.md @@ -300,7 +300,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -310,7 +310,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. 1. Optionally verify that DB Console instances for `roach2` and `roach3` are reachable on ports 8081 and 8082 and show the same information as port 8080. @@ -321,7 +321,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -331,7 +331,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. diff --git a/src/current/v25.3/start-a-local-cluster.md b/src/current/v25.3/start-a-local-cluster.md index a38f33f08a4..335dbe1006e 100644 --- a/src/current/v25.3/start-a-local-cluster.md +++ b/src/current/v25.3/start-a-local-cluster.md @@ -43,7 +43,7 @@ This section shows how to start a cluster interactively. In production, operator {{site.data.alerts.callout_info}} The `--background` flag is not recommended. If you decide to start nodes in the background, you must also pass the `--pid-file` argument. To stop a `cockroach` process running in the background, extract the process ID from the PID file and pass it to the command to [stop the node](#step-7-stop-the-cluster). - In production, operators usually use a process manager like `systemd` to start and manage the `cockroach` process on each node. Refer to [Deploy CockroachDB On-Premises]({% link v23.1/deploy-cockroachdb-on-premises.md %}?filters=systemd). + In production, operators usually use a process manager like `systemd` to start and manage the `cockroach` process on each node. Refer to [Deploy CockroachDB On-Premises]({% link {{ page.version.version }}/deploy-cockroachdb-on-premises.md %}?filters=systemd). {{site.data.alerts.end}} You'll see a message like the following: @@ -254,7 +254,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -264,7 +264,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. @@ -294,7 +294,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. In the DB Console, despite one node being "suspect", notice the continued SQL traffic: - DB Console + DB Console 1. Go to the terminal window for `node3` and restart it: @@ -338,7 +338,7 @@ Adding capacity is as simple as starting more nodes with `cockroach start`. 1. In the DB Console **Cluster Overview** page, confirm that the cluster now has five nodes. - DB Console + DB Console At first, the replica count will be lower for `node4` and `node5`. Very soon, however, you'll see those numbers even out across all nodes, indicating that data is being [automatically rebalanced]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) to utilize the additional capacity of the new nodes. diff --git a/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md b/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md index 73f460242ac..73151a9620f 100644 --- a/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md +++ b/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md @@ -331,11 +331,11 @@ Move to the terminal window in which you started the Kafka consumer. As the chan You can also view the messages for your cluster in the Confluent Cloud console in the **Topics** sidebar under the **Messages** tab. -Users topic messages in the Confluent Cloud console. +Users topic messages in the Confluent Cloud console. You can use the **Schema** tab to view the schema for a specific topic. -Users vale schema in the Confluent Cloud console. +Users vale schema in the Confluent Cloud console. ## See also diff --git a/src/current/v25.3/take-locality-restricted-backups.md b/src/current/v25.3/take-locality-restricted-backups.md index 8d46625ab4a..6b56d1f5a0a 100644 --- a/src/current/v25.3/take-locality-restricted-backups.md +++ b/src/current/v25.3/take-locality-restricted-backups.md @@ -55,7 +55,7 @@ The following diagram shows a CockroachDB cluster where each of the nodes can co Instead, Node 3's locality does match the backup job's `EXECUTION LOCALITY`. Replicas that match a backup job's locality designation and hold the backup job's row data will begin reading and exporting to cloud storage. -Using execution locality when there is a network restriction between locality requirements +Using execution locality when there is a network restriction between locality requirements To execute the backup only on nodes in the same region as the cloud storage location, you can specify [locality filters]({% link {{ page.version.version }}/cockroach-start.md %}#locality) that a node must match to take part in the backup job's execution. @@ -81,7 +81,7 @@ Sometimes the execution of backup jobs can consume considerable resources when r This diagram shows a CockroachDB cluster in four regions. The node used to run the backup job was configured with [non-voting replicas]({% link {{ page.version.version }}/architecture/replication-layer.md %}#non-voting-replicas) to provide low-latency reads. The node in this region will complete the backup job coordination and data export to cloud storage. -Using execution locality to create a non-primary region for backup jobs +Using execution locality to create a non-primary region for backup jobs For details, refer to: diff --git a/src/current/v25.3/topology-basic-production.md b/src/current/v25.3/topology-basic-production.md index 0c3d51afda2..174a0c2698c 100644 --- a/src/current/v25.3/topology-basic-production.md +++ b/src/current/v25.3/topology-basic-production.md @@ -17,7 +17,7 @@ If you haven't already, [review the full range of topology patterns]({% link {{ ## Configuration -Basic production topology +Basic production topology 1. Provision hardware as follows: - 1 region with 3 AZs @@ -56,7 +56,7 @@ For example, in the animation below: 1. The leaseholder retrieves the results and returns to the gateway node. 1. The gateway node returns the results to the client. -Basic production topology reads +Basic production topology reads #### Writes @@ -72,17 +72,17 @@ For example, in the animation below: 1. The leaseholders then return acknowledgement of the commit to the gateway node. 1. The gateway node returns the acknowledgement to the client. -Leaseholder preferences topology writes +Leaseholder preferences topology writes ### Resiliency Because each range is balanced across AZs, one AZ can fail without interrupting access to any data: -Basic production topology single zone failure +Basic production topology single zone failure However, if an additional AZ fails at the same time, the ranges that lose consensus become unavailable for reads and writes: -Basic production topology double zone failure +Basic production topology double zone failure ## See also diff --git a/src/current/v25.3/topology-development.md b/src/current/v25.3/topology-development.md index 3bf9d21906a..0a864df1041 100644 --- a/src/current/v25.3/topology-development.md +++ b/src/current/v25.3/topology-development.md @@ -17,7 +17,7 @@ If you haven't already, [review the full range of topology patterns]({% link {{ ## Configuration -Development topology +Development topology For this pattern, you can either [run CockroachDB locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or [deploy a single-node cluster on a cloud VM]({% link {{ page.version.version }}/manual-deployment.md %}). @@ -27,13 +27,13 @@ For this pattern, you can either [run CockroachDB locally]({% link {{ page.versi With the CockroachDB node in the same region as your client, and without the overhead of replication, both read and write latency are very low: -Development topology read and write latency +Development topology read and write latency ### Resiliency In a single-node cluster, CockroachDB does not replicate data and, therefore, is not resilient to failures. If the machine where the node is running fails, or if the region or availability zone containing the machine fails, the cluster becomes unavailable: -Development topology single failure +Development topology single failure ## See also diff --git a/src/current/v25.3/topology-follow-the-workload.md b/src/current/v25.3/topology-follow-the-workload.md index 431299750f3..7b2c3012b82 100644 --- a/src/current/v25.3/topology-follow-the-workload.md +++ b/src/current/v25.3/topology-follow-the-workload.md @@ -32,7 +32,7 @@ Note that if you start using the [multi-region SQL abstractions]({% link {{ page Aside from [deploying a cluster across three regions](#cluster-setup) properly, with each node started with the [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag specifying its region and zone combination, this behavior requires no extra configuration. CockroachDB will balance the replicas for a table across the three regions and will assign the range lease to the replica in the region with the greatest demand at any given time (the follow-the-workload feature). This means that read latency in the active region will be low while read latency in other regions will be higher due to having to leave the region to reach the leaseholder. Write latency will be higher as well due to always involving replicas in multiple regions. -Follow-the-workload table replication +Follow-the-workload table replication {{site.data.alerts.callout_info}} Follow-the-workload is also used by [system ranges containing important internal data]({% link {{ page.version.version }}/configure-replication-zones.md %}#create-a-replication-zone-for-a-system-range). @@ -54,7 +54,7 @@ For example, in the animation below, the most active region is `us-east` and, th 1. The leaseholder retrieves the results and returns to the gateway node. 1. The gateway node returns the results to the client. In this case, reads in the `us-east` remain in the region and are lower latency than reads in other regions. -Follow-the-workload topology reads +Follow-the-workload topology reads #### Writes @@ -70,17 +70,17 @@ For example, in the animation below, assuming the most active region is still `u 1. The leaseholders then return acknowledgement of the commit to the gateway node. 1. The gateway node returns the acknowledgement to the client. -Follow-the-workload topology writes +Follow-the-workload topology writes ### Resiliency Because this pattern balances the replicas for the table across regions, one entire region can fail without interrupting access to the table: -Follow-the-workload topology region failure +Follow-the-workload topology region failure {% comment %} However, if an additional machine holding a replica for the table fails at the same time as the region failure, the range to which the replica belongs becomes unavailable for reads and writes: -Follow-the-workload topology {% endcomment %} +Follow-the-workload topology {% endcomment %} ## See also diff --git a/src/current/v25.3/topology-follower-reads.md b/src/current/v25.3/topology-follower-reads.md index 362a299e49f..6a799c2d248 100644 --- a/src/current/v25.3/topology-follower-reads.md +++ b/src/current/v25.3/topology-follower-reads.md @@ -30,7 +30,7 @@ If reads can use stale data, use [stale follower reads]({% link {{ page.version. With each node started with the [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag specifying its region and zone combination, CockroachDB will balance the replicas for a table across the three regions: -Follower reads table replication +Follower reads table replication ### Summary @@ -108,7 +108,7 @@ For example, in the following diagram: 1. The replica retrieves the results as of your preferred staleness interval in the past and returns to the gateway node. 1. The gateway node returns the results to the client. -Follower reads topology reads +Follower reads topology reads #### Writes @@ -124,13 +124,13 @@ For example, in the following animation: 1. The leaseholder then returns acknowledgement of the commit to the gateway node. 1. The gateway node returns the acknowledgement to the client. -Follower reads topology writes +Follower reads topology writes ### Resiliency Because this pattern balances the replicas for the table across regions, one entire region can fail without interrupting access to the table: -Follower reads topology region failure +Follower reads topology region failure ## See also diff --git a/src/current/v25.3/troubleshoot-lock-contention.md b/src/current/v25.3/troubleshoot-lock-contention.md index 6e4dfe7f0f6..03d2e735bc3 100644 --- a/src/current/v25.3/troubleshoot-lock-contention.md +++ b/src/current/v25.3/troubleshoot-lock-contention.md @@ -207,18 +207,18 @@ This step assumes you have already run the SQL statements from [Example 1](#exam After executing the transactions in the [previous section](#step-1-understand-lock-contention), open the [DB Console](#db-console) for the demo cluster. Navigate to the **Insights** page and select **Workload Insights** > **Transactions Executions**. -Transaction Executions view +Transaction Executions view Depending on when you [executed the transactions](#example-1), to display the transactions flagged with insights, you may have to select a longer time interval, such as **Past 6 Hours**. -Time interval +Time interval With an adequate time interval, two [**High Contention**]({% link {{ page.version.version }}/ui-insights-page.md %}#high-contention) insights will be listed for [Example 1](#example-1): - **Transaction 2** - **Transaction 3** -High Contention +High Contention ### Waiting statement @@ -226,21 +226,21 @@ To identify the exact statement in the transaction that experienced high content On the **Transaction Execution** page, navigate to the **Statement Executions** tab. In the list of statement executions, in the **Insights** column for `SELECT * FROM t where k = _`, there should be the **High Contention** insight. In [Example 1](#example-1), *Transaction 2* had one statement (other than `SHOW database`). In a transaction with multiple statements, use this page to pinpoint the exact statement that experienced high contention. -Waiting statement +Waiting statement ### Blocking transaction To identify the transaction that blocked **Transaction 2** and caused it to experience high contention, navigate back to the **Overview** tab. -Overview tab +Overview tab Scroll to the bottom of the Overview tab to the **Transaction with ID ... waited on** section that gives information about the blocking transaction. -Blocking transaction +Blocking transaction For more information about the blocking transaction, click the **Transaction Fingerprint ID** to open the [**Transaction Details** page]({% link {{ page.version.version }}/ui-transactions-page.md %}#transaction-details-page). -Blocking transaction details +Blocking transaction details ### Additional practice diff --git a/src/current/v25.3/ui-cdc-dashboard.md b/src/current/v25.3/ui-cdc-dashboard.md index e2c0ee5131b..2d64b68d99c 100644 --- a/src/current/v25.3/ui-cdc-dashboard.md +++ b/src/current/v25.3/ui-cdc-dashboard.md @@ -23,7 +23,7 @@ The **Changefeeds** dashboard displays the following time series graphs: This graph displays the status of all running changefeeds. -DB Console Changefeed Status graph showing running, paused, and failed changefeeds. +DB Console Changefeed Status graph showing running, paused, and failed changefeeds. Metric | Description --------|---- @@ -39,7 +39,7 @@ In the case of a failed changefeed, you may want to use the [`cursor`]({% link { This graph displays the 99th, 90th, and 50th percentile of commit latency for running changefeeds. This is the difference between an event's MVCC timestamp and the time it was acknowledged as received by the [downstream sink]({% link {{ page.version.version }}/changefeed-sinks.md %}). -DB Console Commit Latency graph showing the 99th, 90th, and 50th percentile of commit latency. +DB Console Commit Latency graph showing the 99th, 90th, and 50th percentile of commit latency. If the sink batches events, then the difference between the oldest event in the batch and acknowledgement is recorded. Latency during backfill is excluded. @@ -51,7 +51,7 @@ This graph shows the number of bytes emitted by CockroachDB into the changefeed' In v23.1 and earlier, the **Emitted Bytes** graph was named **Sink Byte Traffic**. If you want to customize charts, including how metrics are named, use the [**Custom Chart** debug page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}). {{site.data.alerts.end}} -DB Console Emitted Bytes Graph showing the time and emitted bites +DB Console Emitted Bytes Graph showing the time and emitted bites Metric | Description --------|---- @@ -64,7 +64,7 @@ This graph displays data relating to the number of messages and flushes at the c - The number of messages that CockroachDB sent to the sink. - The number of flushes that the sink performed for changefeeds. -DB Console Sink Counts graph +DB Console Sink Counts graph Metric | Description --------|---- @@ -79,7 +79,7 @@ This graph displays the most any changefeed's persisted [checkpoint]({% link {{ In v23.1 and earlier, the **Max Checkpoint Latency** graph was named **Max Changefeed Latency**. If you want to customize charts, including how metrics are named, use the [**Custom Chart** debug page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}). {{site.data.alerts.end}} -DB Console Max Checkpoint Latency graph +DB Console Max Checkpoint Latency graph {{site.data.alerts.callout_info}} The maximum checkpoint latency is distinct from, and slower than, the commit latency for individual change messages. For more information about resolved timestamps, refer to the [Changefeed Messages]({% link {{ page.version.version }}/changefeed-messages.md %}#resolved-messages) page. @@ -89,7 +89,7 @@ The maximum checkpoint latency is distinct from, and slower than, the commit lat This graph displays the number of times changefeeds restarted due to [retryable errors]({% link {{ page.version.version }}/monitor-and-debug-changefeeds.md %}#changefeed-retry-errors). -DB Console Changefeed Restarts graph +DB Console Changefeed Restarts graph Metric | Description --------|---- @@ -99,7 +99,7 @@ Metric | Description This graph displays the oldest [protected timestamp]({% link {{ page.version.version }}/architecture/storage-layer.md %}#protected-timestamps) of any running changefeed on the cluster. -DB Console Oldest Protected Timestamp graph +DB Console Oldest Protected Timestamp graph Metric | Description --------|---- @@ -109,7 +109,7 @@ Metric | Description This graph displays the number of ranges being backfilled that are yet to enter the changefeed pipeline. An [initial scan]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) or [schema change]({% link {{ page.version.version }}/online-schema-changes.md %}) can cause a backfill. -DB Console Backfill Pending Ranges graph +DB Console Backfill Pending Ranges graph Metric | Description --------|---- @@ -119,7 +119,7 @@ Metric | Description This graph displays the rate of schema registration requests made by CockroachDB nodes to a configured schema registry endpoint. For example, a [Kafka sink]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka) pointing to a [Confluent Schema Registry]({% link {{ page.version.version }}/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md %}). -DB Console Schema Registry Registrations graph +DB Console Schema Registry Registrations graph Metric | Description --------|---- @@ -129,7 +129,7 @@ Metric | Description This graph displays the total number of ranges with an active [rangefeed]({% link {{ page.version.version }}/create-and-configure-changefeeds.md %}#enable-rangefeeds) that is performing a catchup scan. -DB Console Ranges in Catchup Mode graph +DB Console Ranges in Catchup Mode graph Metric | Description --------|---- @@ -139,7 +139,7 @@ Metric | Description This graph displays the duration of catchup scans that changefeeds are performing. -DB Console Rangefeed Catchup Scans Duration graph +DB Console Rangefeed Catchup Scans Duration graph Metric | Description --------|---- diff --git a/src/current/v25.3/ui-cluster-overview-page.md b/src/current/v25.3/ui-cluster-overview-page.md index 57c4c816de9..657bc8201c0 100644 --- a/src/current/v25.3/ui-cluster-overview-page.md +++ b/src/current/v25.3/ui-cluster-overview-page.md @@ -18,7 +18,7 @@ Enable the [Node Map](#node-map) view for a visual representation of your cluste Use the **Cluster Overview** panel to quickly assess the capacity and health of your cluster. -DB Console cluster overview +DB Console cluster overview Metric | Description --------|---- @@ -110,7 +110,7 @@ The **Node Map** visualizes the geographical configuration of your cluster. It r For guidance on enabling and configuring the node map, see [Enable the Node Map]({% link {{ page.version.version }}/enable-node-map.md %}). -DB Console Summary Panel +DB Console Summary Panel The Node Map uses the longitude and latitude of each locality to position the components on the map. The map is populated with [**locality components**](#locality-component) and [**node components**](#node-component). @@ -122,7 +122,7 @@ The map shows the components for the highest-level locality tier (e.g., region). For details on how **Capacity Usage** is calculated, see [Capacity metrics](#capacity-metrics). -DB Console Summary Panel +DB Console Summary Panel {{site.data.alerts.callout_info}} On multi-core systems, the displayed CPU usage can be greater than 100%. Full utilization of 1 core is considered as 100% CPU usage. If you have _n_ cores, then CPU usage can range from 0% (indicating an idle system) to (_n_ * 100)% (indicating full utilization). @@ -136,7 +136,7 @@ Node components are accessed by clicking on the **Node Count** of the lowest-lev For details on how **Capacity Usage** is calculated, see [Capacity metrics](#capacity-metrics). -DB Console Summary Panel +DB Console Summary Panel {{site.data.alerts.callout_info}} On multi-core systems, the displayed CPU usage can be greater than 100%. Full utilization of 1 core is considered as 100% CPU usage. If you have _n_ cores, then CPU usage can range from 0% (indicating an idle system) to (_n_ * 100)% (indicating full utilization). diff --git a/src/current/v25.3/ui-custom-chart-debug-page.md b/src/current/v25.3/ui-custom-chart-debug-page.md index 0d32554b01b..cb46125999d 100644 --- a/src/current/v25.3/ui-custom-chart-debug-page.md +++ b/src/current/v25.3/ui-custom-chart-debug-page.md @@ -13,7 +13,7 @@ To view the Custom Chart page, [access the DB Console]({% link {{ page.version.v ## Use the Custom Chart page -DB Console +DB Console On the **Custom Chart** page, you can set the time span for all charts, add new custom charts, and customize each chart: @@ -28,7 +28,7 @@ On the **Custom Chart** page, you can set the time span for all charts, add new ### Query user and system CPU usage -DB Console +DB Console To compare system vs. userspace CPU usage, select the following values under **Metric Name**: diff --git a/src/current/v25.3/ui-key-visualizer.md b/src/current/v25.3/ui-key-visualizer.md index 2f35ae23eeb..a545a82126a 100644 --- a/src/current/v25.3/ui-key-visualizer.md +++ b/src/current/v25.3/ui-key-visualizer.md @@ -39,7 +39,7 @@ Once you have enabled the Key Visualizer, CockroachDB will begin monitoring keys When navigating to the **Key Visualizer** page in the DB Console, after a brief loading time, CockroachDB will present the collected data in a visualization designed to help you see data traffic trends at a glance. -Key Visualizer showing hot range +Key Visualizer showing hot range The Key Visualizer presents the following information: @@ -82,7 +82,7 @@ The Key Visualizer was designed to make potentially problematic ranges stand out The following image shows the Key Visualizer highlighting a series of [hotspots]({% link {{ page.version.version }}/understand-hotspots.md %}): ranges with much higher-than-average write rates as compared to the rest of the cluster. -Key Visualizer showing range split +Key Visualizer showing range split **Remediation:** If you've identified a potentially-problematic range as a hotspot, follow the recommended best practices to [reduce hotspots]({% link {{ page.version.version }}/understand-hotspots.md %}#reduce-hotspots). In the case of the screenshot above, the increased write cadence is due to a series of [range splits]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-splits), where a range experiencing a large volume of incoming writes is splitting its keyspace to accommodate the growing range. This is often part of normal operation, but can be indicative of a data modeling issue if the range split is unexpected or causing cluster performance issues. @@ -90,7 +90,7 @@ The following image shows the Key Visualizer highlighting a series of [hotspots] The following image shows the Key Visualizer highlighting a [full-table scan]({% link {{ page.version.version }}/make-queries-fast.md %}), where the lack of an appropriate index causes the query planner to need to scan the entire table to find the requested records in a query. This can be seen most clearly by the cascading series of bright red ranges that proceed in diagonal fashion to each other, such as the series of three shown at the mouse cursor. This cascade represents the sequential scan of contiguous ranges in the keyspace as the query planner attempts to locate requested data without an index. -Key Visualizer showing table scan +Key Visualizer showing table scan **Remediation:** If you've identified a full table scan, follow the guidance to [optimize statement performance]({% link {{ page.version.version }}/make-queries-fast.md %}). You can also [analyze your queries with `EXPLAIN`]({% link {{ page.version.version }}/sql-tuning-with-explain.md %}) to investigate if an index was used in the execution of the query. diff --git a/src/current/v25.3/ui-network-latency-page.md b/src/current/v25.3/ui-network-latency-page.md index eccc8b1f443..c40c0fafb3f 100644 --- a/src/current/v25.3/ui-network-latency-page.md +++ b/src/current/v25.3/ui-network-latency-page.md @@ -20,7 +20,7 @@ Select **Collapse Nodes** to display the mean latencies of each locality, depend Each cell in the matrix displays the round-trip latency in milliseconds between two nodes in your cluster. Round-trip latency includes the return time of a packet. Latencies are color-coded by their standard deviation from the mean latency on the network: green for lower values, and blue for higher. Nodes with the lowest latency are displayed in darker green, and nodes with the highest latency are displayed in darker blue. -DB Console Network Latency matrix +DB Console Network Latency matrix Rows represent origin nodes, and columns represent destination nodes. Hover over a cell to display more details: @@ -34,7 +34,7 @@ On a [typical multi-region cluster]({% link {{ page.version.version }}/demo-low- For instance, the cluster shown above has nodes in `us-west1`, `us-east1`, and `europe-west2`. Latencies are highest between nodes in `us-west1` and `europe-west2`, which span the greatest distance. This is especially clear when sorting by region or availability zone and collapsing nodes: -DB Console Network Latency collapsed nodes +DB Console Network Latency collapsed nodes ### No connections @@ -45,7 +45,7 @@ Nodes that have completely lost connectivity are color-coded depending on connec This information can help you diagnose a network partition in your cluster. -DB Console Network Latency suspect node +DB Console Network Latency suspect node Hover over a cell to display more details: diff --git a/src/current/v25.3/ui-physical-cluster-replication-dashboard.md b/src/current/v25.3/ui-physical-cluster-replication-dashboard.md index 409d791f304..69e2bc08938 100644 --- a/src/current/v25.3/ui-physical-cluster-replication-dashboard.md +++ b/src/current/v25.3/ui-physical-cluster-replication-dashboard.md @@ -21,7 +21,7 @@ The **Physical Cluster Replication** dashboard displays the following time-serie ## Logical bytes -DB Console Logical Bytes graph showing results over the past hour +DB Console Logical Bytes graph showing results over the past hour The **Logical Bytes** graph displays the throughput of the replicated bytes. The graph displays the rate at which the logical bytes (sum of keys + values) are ingested by all replication jobs. @@ -36,7 +36,7 @@ When you [start a replication stream]({% link {{ page.version.version }}/set-up- ## Replication lag -DB Console Replication Lag graph showing results over the past hour +DB Console Replication Lag graph showing results over the past hour The **Replication Lag** graph displays the [replication lag]({% link {{ page.version.version }}/physical-cluster-replication-technical-overview.md %}) between the primary and standby cluster. This is the time between the most up-to-date replicated time and the actual time. diff --git a/src/current/v25.3/ui-queues-dashboard.md b/src/current/v25.3/ui-queues-dashboard.md index 0cb96401158..55be932e741 100644 --- a/src/current/v25.3/ui-queues-dashboard.md +++ b/src/current/v25.3/ui-queues-dashboard.md @@ -171,7 +171,7 @@ Pending Actions | The number of pending replicas in the time series maintenance ## MVCC GC Queue -DB Console GC queue graph +DB Console GC queue graph The **MVCC GC Queue** graph displays various details about the health and performance of the [garbage collection]({% link {{ page.version.version }}/architecture/storage-layer.md %}#garbage-collection) queue. @@ -184,7 +184,7 @@ Pending Actions | The number of pending replicas in the [garbage collection]({% ## Protected Timestamp Records -DB Console GC queue graph +DB Console GC queue graph The **Protected Timestamp Records** graph displays the number of [protected timestamp]({% link {{ page.version.version }}/architecture/storage-layer.md %}#protected-timestamps) records (used by backups, changefeeds, etc. to prevent MVCC GC) per node, as tracked by the `spanconfig.kvsubscriber.protected_record_count` metric. diff --git a/src/current/v25.3/ui-replication-dashboard.md b/src/current/v25.3/ui-replication-dashboard.md index 353af4963e7..d7335f6a64a 100644 --- a/src/current/v25.3/ui-replication-dashboard.md +++ b/src/current/v25.3/ui-replication-dashboard.md @@ -31,7 +31,7 @@ The **Replication** dashboard displays the following time series graphs: ## Ranges -DB Console Ranges +DB Console Ranges The **Ranges** graph shows you various details about the status of ranges. @@ -52,7 +52,7 @@ Under-replicated | The number of under-replicated ranges. Non-voting replicas ar ## Logical Bytes per Store -DB Console Logical Bytes per Store +DB Console Logical Bytes per Store Metric | Description --------|-------- @@ -64,7 +64,7 @@ Metric | Description ## Replicas Per Store -DB Console Replicas per Store +DB Console Replicas per Store - In the node view, the graph shows the number of range replicas on the store. @@ -74,7 +74,7 @@ You can [Replication Controls]({% link {{ page.version.version }}/configure-repl ## Replica Quiescence -DB Console Replica Quiescence +DB Console Replica Quiescence - In the node view, the graph shows the number of replicas on the node. @@ -104,7 +104,7 @@ Load-based Range Rebalances | `rebalancing.range.rebalances` | Number of range r ## Snapshots -DB Console Replica Snapshots +DB Console Replica Snapshots Usually the nodes in a [Raft group]({% link {{ page.version.version }}/architecture/replication-layer.md %}#raft) stay synchronized by following along with the log message by message. However, if a node is far enough behind the log (e.g., if it was offline or is a new node getting up to speed), rather than send all the individual messages that changed the range, the cluster can send it a snapshot of the range and it can start following along from there. Commonly this is done preemptively, when the cluster can predict that a node will need to catch up, but occasionally the Raft protocol itself will request the snapshot. @@ -118,7 +118,7 @@ Reserved | The number of slots reserved per second for incoming snapshots that w ## Snapshot Data Received -DB Console Replica Snapshot Data Received +DB Console Replica Snapshot Data Received The **Snapshot Data Received** graph shows the rate per second of data received in bytes by each node via [Raft snapshot transfers]({% link {{ page.version.version }}/architecture/replication-layer.md %}#snapshots). Data is split into recovery and rebalancing snapshot data received: recovery includes all upreplication due to decommissioning or node failure, and rebalancing includes all other snapshot data received. @@ -131,7 +131,7 @@ Metric | Description ## Receiver Snapshots Queued -DB Console Replica Receiver Snapshots Queued +DB Console Replica Receiver Snapshots Queued The **Receiver Snapshots Queued** graph shows the number of [Raft snapshot transfers]({% link {{ page.version.version }}/architecture/replication-layer.md %}#snapshots) queued to be applied on a receiving node, which can only accept one snapshot at a time per store. @@ -143,7 +143,7 @@ Metric | Description ## Circuit Breaker Tripped Replicas -DB Console Circuit Breaker Tripped Replicas +DB Console Circuit Breaker Tripped Replicas When individual ranges become temporarily unavailable, requests to those ranges are refused by a [per-replica circuit breaker]({% link {{ page.version.version }}/architecture/replication-layer.md %}#per-replica-circuit-breaker-overview) instead of hanging indefinitely. @@ -159,7 +159,7 @@ Metric | Description ## Circuit Breaker Tripped Events -DB Console Circuit Breaker Tripped Events +DB Console Circuit Breaker Tripped Events When individual ranges become temporarily unavailable, requests to those ranges are refused by a [per-replica circuit breaker]({% link {{ page.version.version }}/architecture/replication-layer.md %}#per-replica-circuit-breaker-overview) instead of hanging indefinitely. While a range's per-replica circuit breaker remains tripped, each incoming request to that range triggers a `ReplicaUnavailableError` event until the range becomes available again. @@ -173,7 +173,7 @@ Metric | Description ## Replicate Queue Actions: Successes -DB Console Replicate Queue Actions: Successes +DB Console Replicate Queue Actions: Successes The **Replicate Queue Actions: Successes** graph shows the rate of various successful replication queue actions per second. @@ -194,7 +194,7 @@ Decommissioning Replicas Removed / Sec | The number of successful decommissionin ## Replicate Queue Actions: Failures -DB Console Replicate Queue Actions: Failures +DB Console Replicate Queue Actions: Failures The **Replicate Queue Actions: Failures** graph shows the rate of various failed replication queue actions per second. @@ -215,7 +215,7 @@ Decommissioning Replicas Removed Errors / Sec | The number of failed decommissio ## Decommissioning Errors -DB Console Replica Decommissioning Errors +DB Console Replica Decommissioning Errors The **Decommissioning Errors** graph shows the rate per second of decommissioning replica replacement failures experienced by the replication queue, by node. diff --git a/src/current/v25.3/ui-runtime-dashboard.md b/src/current/v25.3/ui-runtime-dashboard.md index 7e29d3f218b..d6109170c20 100644 --- a/src/current/v25.3/ui-runtime-dashboard.md +++ b/src/current/v25.3/ui-runtime-dashboard.md @@ -17,7 +17,7 @@ The **Runtime** dashboard displays the following time series graphs: ## Live Node Count -DB Console Node Count +DB Console Node Count In the node view as well as the cluster view, the graph shows the number of live nodes in the cluster. @@ -25,7 +25,7 @@ A dip in the graph indicates decommissioned nodes, dead nodes, or nodes that are ## Memory Usage -DB Console Memory Usage +DB Console Memory Usage - In the node view, the graph shows the memory in use for the selected node. @@ -49,7 +49,7 @@ CGo Total | Total memory managed by the C layer. ## CPU Time -DB Console CPU Time +DB Console CPU Time - In the node view, the graph shows the [CPU time](https://wikipedia.org/wiki/CPU_time) used by CockroachDB user and system-level operations for the selected node. - In the cluster view, the graph shows the [CPU time](https://wikipedia.org/wiki/CPU_time) used by CockroachDB user and system-level operations across all nodes in the cluster. @@ -63,7 +63,7 @@ Sys CPU Time | Total CPU seconds per second used for CockroachDB system-level op ## Clock Offset -DB Console Clock Offset +DB Console Clock Offset - In the node view, the graph shows the mean clock offset of the node against the rest of the cluster. - In the cluster view, the graph shows the mean clock offset of each node against the rest of the cluster. diff --git a/src/current/v25.3/ui-schedules-page.md b/src/current/v25.3/ui-schedules-page.md index a04014d08aa..f908ffa2496 100644 --- a/src/current/v25.3/ui-schedules-page.md +++ b/src/current/v25.3/ui-schedules-page.md @@ -27,7 +27,7 @@ Use the **Schedules** list to see your active and paused schedules. The following screenshot shows a list of backups and automated statistics compaction schedules: -Schedules Page UI in the DB Console showing a list of schedules +Schedules Page UI in the DB Console showing a list of schedules Column | Description ---------------------+-------------- @@ -44,7 +44,7 @@ Creation Time (UTC) | The time at which the user originally created the sc Click on a schedule ID to view the full SQL statement that the schedule runs. For example, the following screenshot shows the resulting [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) statement for a full cluster backup recurring every day: -UI for each individual schedule ID displaying the CREATE SCHEDULE SQL statement +UI for each individual schedule ID displaying the CREATE SCHEDULE SQL statement You may also view a `protected_timestamp_record` on this page. This indicates that the schedule is actively managing its own [protected timestamp]({% link {{ page.version.version }}/architecture/storage-layer.md %}#protected-timestamps) records independently of [GC TTL]({% link {{ page.version.version }}/configure-replication-zones.md %}#gc-ttlseconds). See [Protected timestamps and scheduled backups]({% link {{ page.version.version }}/create-schedule-for-backup.md %}#protected-timestamps-and-scheduled-backups) for more detail. diff --git a/src/current/v25.3/ui-ttl-dashboard.md b/src/current/v25.3/ui-ttl-dashboard.md index 4a9e5e95f7d..b885cfb77d8 100644 --- a/src/current/v25.3/ui-ttl-dashboard.md +++ b/src/current/v25.3/ui-ttl-dashboard.md @@ -19,7 +19,7 @@ The **TTL** dashboard displays the following time series graphs: You can monitor the **Processing Rate** graph to see how many rows per second are being processed by [TTL jobs]({% link {{ page.version.version }}/row-level-ttl.md %}#view-running-ttl-jobs). -TTL processing rate graph +TTL processing rate graph | Metric | Description | |---------------+---------------------------------------------| @@ -30,7 +30,7 @@ You can monitor the **Processing Rate** graph to see how many rows per second ar Monitor the **Estimated Rows** graph to see approximately how many rows are on the TTL table. -TTL estimated rows graph +TTL estimated rows graph | Metric | Description | |------------------------------------+-----------------------------------------------------------------| @@ -41,13 +41,13 @@ Monitor the **Estimated Rows** graph to see approximately how many rows are on t Monitor the **Job Latency** graph to see the latency of scanning and deleting within your cluster's [TTL jobs]({% link {{ page.version.version }}/row-level-ttl.md %}#view-running-ttl-jobs). -TTL job latency graph +TTL job latency graph ## Ranges in Progress Monitor the **Ranges in Progress** graph to see the number of ranges currently being processed by [TTL jobs]({% link {{ page.version.version }}/row-level-ttl.md %}#view-running-ttl-jobs). -TTL ranges in progress graph +TTL ranges in progress graph | Metric | Description | |----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/src/current/v25.3/understand-hotspots.md b/src/current/v25.3/understand-hotspots.md index c664dbdee06..63c0930073b 100644 --- a/src/current/v25.3/understand-hotspots.md +++ b/src/current/v25.3/understand-hotspots.md @@ -35,7 +35,7 @@ All hotspot types described on this page will create hot nodes, as long as the c The following image is a graph of [CPU Percent]({% link {{ page.version.version }}/ui-hardware-dashboard.md %}#cpu-percent) utilization per node. Most of the nodes hover around 25%, while one hot node is around 95%. Since the hot node keeps changing, it means the hotspot is moving from one node to another as the [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#range) containing writes fill up and split. For more information, refer to [hot range](#hot-range) and [moving hotspot](#moving-hotspot). -graph of CPU Percent utilization per node showing hot nodes +graph of CPU Percent utilization per node showing hot nodes ### Hot range @@ -106,7 +106,7 @@ An _index hotspot_ is a hotspot on an [index]({% link {{ page.version.version }} Consider a table `users` that contains a [primary key]({% link {{ page.version.version }}/primary-key.md %}) `user_id`, which is an incrementing integer value. Each new key will be the current maximum key + 1. In this way, all writes appear at the index tail. The following image visualizes writes to the `users` table using an incrementing `INT` primary key. Note how all writes are focused at the tail of the index, represented by the red section in Range 4. -incrementing INT primary key +incrementing INT primary key Even if performance degradation in Range 4 is mitigated, the system remains constrained by the number of writes a single range can handle. As a result, CockroachDB could be limited to the performance of a single node, which goes against the purpose of a distributed database. @@ -116,7 +116,7 @@ In the ideal operation of a distributed SQL database, inserts into an index shou Consider a table `users` that contains a primary key `user_uuid` of type [`UUID`]({% link {{ page.version.version }}/uuid.md %}). Because `UUID`s are pseudo-random, new rows are inserted into the keyspace at random locations. The following image visualizes writes to the `users` table using a `UUID` primary key. Red lines indicate an insert into the keyspace. Note how the red lines are distributed evenly. -UUID primary key +UUID primary key Inserts are not the only way that index hotspots can occur. Consider the same table `users` that now has a [secondary index]({% link {{ page.version.version }}/schema-design-indexes.md %}) on a `TIMESTAMP` column: @@ -145,7 +145,7 @@ The resolution of the index hotspot often depends on your requirements for the d If inserting in sequential order is important, the index itself can be [hash-sharded]({% link {{ page.version.version }}/hash-sharded-indexes.md %}), which means that it is still stored in order, albeit in some number of shards. Consider a `users` table, with a primary key `id INT`, which is hash-sharded with 4 shards, and a hashing function of modulo 4. The following image illustrates this example: -Hash-sharded index example +Hash-sharded index example Now the writes are distributed into the tails of the shards, rather than the tail of the whole index. This benefits write performance but makes reads more challenging. If you need to read a subset of the data, you will have to scan each shard of the index. @@ -183,7 +183,7 @@ A _queueing hotspot_ is a type of index hotspot that occurs when a workload trea Queues, such as logs, generally require data to be ordered by write, which necessitates indexing in a way that is likely to create a hotspot. An outbox where data is deleted as it is read has an additional problem: it tends to accumulate an ordered set of [garbage data]({% link {{ page.version.version }}/operational-faqs.md %}#why-is-my-disk-usage-not-decreasing-after-deleting-data) behind the live data. Since the system cannot determine whether any live rows exist within the garbage data, what appears to be a small table scan to the user can actually result in an unexpectedly intensive scan on the garbage data. -Outbox hotspot example +Outbox hotspot example To mitigate this issue, it is advisable to use [Change Data Capture (CDC)]({% link {{ page.version.version }}/cdc-queries.md %}) to ensure subscription to updates instead of using Outbox tables. If using CDC is not possible, sharding the index that the outbox uses for ordering can reduce the likelihood of a hotspot within the cluster. @@ -220,13 +220,13 @@ UPDATE User SET follower_count = follower_count+1 WHERE id=2; This simple design works well until it encounters an unexpected surge in activity. For example, consider user 471, who suddenly gains millions of followers within an hour. This sudden increase in followers causes a significant amount of write traffic to the range responsible for this user, which the system may not be able to handle efficiently. The following image visualizes a hot row in the keyspace. Note how writes are focused on a single point, which cannot be split. -Single row hotspot example +Single row hotspot example Without changing the default behavior of the system, the load will not be distributed because it needs to be served by a single range. This behavior is not just temporary; certain users may consistently experience a high volume of activity compared to the average user. This can result in a system with multiple hotspots, each of which can potentially overload the system at any moment. The following image visualizes a keyspace with multiple hot rows. In a large enough cluster, each of these rows can burden the range they live in, leading to multiple burdened nodes. -Multiple row hotspots example +Multiple row hotspots example ### Hot sequence @@ -248,7 +248,7 @@ Because the primary key index is [hash-sharded]({% link {{ page.version.version The following image visualizes writes in the `products` keyspace using hash-sharded rows. With five shards, the writes are better distributed into the keyspace, but the `id` sequence row becomes the limiting factor. -Multiple row hotspots example +Multiple row hotspots example Because sequences avoid user expressions, optimizations can be made to improve their performance, but unfortunately the write volume on the sequence is still that of the sum total of all its accesses. @@ -278,7 +278,7 @@ country_id UUID REFERENCES countries(id) SELECT * FROM posts p JOIN countries c ON p.country_id=c.id; ~~~ -Table hotspot example +Table hotspot example Reads in the `posts` table may be evenly distributed, but joining the `countries` table becomes a bottleneck, since it exists in so few ranges. Splitting the `countries` table ranges can relieve pressure, but only to a limit as the indivisible rows experience high throughput. [Global tables]({% link {{ page.version.version }}/global-tables.md %}) and [follower reads]({% link {{ page.version.version }}/follower-reads.md %}) can help scaling in this case, especially when write throughput is low. @@ -303,7 +303,7 @@ By doing this, you have limited the traffic from the highest throughput table to The following image visualizes the regional breakout of data in the `orders` table. Because of the domiciling policy, reads and writes to the `orders` table will be focused on the `us-east-1` nodes. -Locality hotspot example +Locality hotspot example ### Temporal hotspot diff --git a/src/current/v25.3/wal-failover.md b/src/current/v25.3/wal-failover.md index d695517a3e5..517df362f67 100644 --- a/src/current/v25.3/wal-failover.md +++ b/src/current/v25.3/wal-failover.md @@ -29,7 +29,7 @@ WAL failover uses a secondary disk to fail over WAL writes to when transient dis The following diagram shows how WAL failover works at a high level. For more information about the WAL, memtables, and SSTables, refer to the [Architecture » Storage Layer documentation]({% link {{ page.version.version }}/architecture/storage-layer.md %}). -WAL failover overview diagram +WAL failover overview diagram ## Create and configure a cluster to be ready for WAL failover @@ -280,7 +280,7 @@ In [DB Console's **Advanced Debug** page]({% link {{ page.version.version }}/ui- Set the source of these metrics to be the node where you are running the disk stall/unstall script. -WAL Failover Metrics Chart +WAL Failover Metrics Chart Notice there is a switchover followed by each stall. The node with the stalled disk continues to perform normal operations during and after WAL failover, as the stalls are transient and shorter than the current value of [`COCKROACH_ENGINE_MAX_SYNC_DURATION_DEFAULT`](#important-environment-variables). @@ -377,7 +377,7 @@ In a [multi-store](#multi-store-config) cluster, if a disk for a store has a tra The following diagram shows the behavior of WAL writes during a disk stall with and without WAL failover enabled. -how long WAL writes take during a disk stall with and without WAL failover enabled +how long WAL writes take during a disk stall with and without WAL failover enabled ## FAQs diff --git a/src/current/v25.3/window-functions.md b/src/current/v25.3/window-functions.md index b56b3c4e4e5..df58d717df1 100644 --- a/src/current/v25.3/window-functions.md +++ b/src/current/v25.3/window-functions.md @@ -94,7 +94,7 @@ Its operation can be described as follows (numbered steps listed here correspond 1. The window function `SUM(revenue) OVER ()` operates on a window frame containing all rows of the query output. 1. The window function `SUM(revenue) OVER (PARTITION BY city)` operates on several window frames in turn; each frame contains the `revenue` columns for a different city [partition]({% link {{ page.version.version }}/partitioning.md %}) (Amsterdam, Boston, L.A., etc.). -Window function diagram +Window function diagram ### Caveats From 8a998e89a9514aebcf036b9a9828f6615c2ee6d8 Mon Sep 17 00:00:00 2001 From: ebembi-crdb Date: Tue, 27 Jan 2026 16:53:43 +0530 Subject: [PATCH 2/4] Fix image syntax in v25.3 documentation Replace broken Liquid syntax with working path format: - From: {{ 'images/{{ page.version.version }}/...' | relative_url }} - To: /docs/images/{{ page.version.version }}/... --- .../_includes/v25.3/misc/movr-schema.md | 2 +- .../check-rebalancing-after-partitioning.md | 2 +- .../v25.3/performance/check-rebalancing.md | 2 +- .../v25.3/sql/macos-terminal-configuration.md | 4 ++-- .../v25.3/start-in-docker/mac-linux-steps.md | 4 ++-- .../multi-region-cluster-setup.md | 2 +- .../v25.3/ui/active-statement-executions.md | 2 +- .../v25.3/ui/active-transaction-executions.md | 2 +- src/current/_includes/v25.3/ui/insights.md | 18 +++++++------- src/current/_includes/v25.3/ui/jobs.md | 4 ++-- src/current/_includes/v25.3/ui/refresh.md | 2 +- src/current/_includes/v25.3/ui/sessions.md | 6 ++--- .../_includes/v25.3/ui/statement-details.md | 22 ++++++++--------- .../_includes/v25.3/ui/statements-filter.md | 2 +- .../_includes/v25.3/ui/statements-views.md | 8 +++---- .../_includes/v25.3/ui/transactions-filter.md | 2 +- .../_includes/v25.3/ui/transactions-views.md | 8 +++---- .../_includes/v25.3/ui/ui-summary-events.md | 2 +- .../architecture/reads-and-writes-overview.md | 8 +++---- .../v25.3/architecture/storage-layer.md | 6 ++--- src/current/v25.3/aws-dms.md | 22 ++++++++--------- src/current/v25.3/backup-architecture.md | 6 ++--- src/current/v25.3/changefeed-messages.md | 2 +- .../v25.3/changefeed-monitoring-guide.md | 2 +- .../v25.3/cloud-storage-authentication.md | 24 +++++++++---------- .../v25.3/configure-replication-zones.md | 2 +- src/current/v25.3/data-resilience.md | 2 +- src/current/v25.3/datadog.md | 12 +++++----- src/current/v25.3/dbeaver.md | 12 +++++----- src/current/v25.3/dbmarlin.md | 2 +- .../v25.3/demo-automatic-cloud-migration.md | 6 ++--- .../v25.3/demo-cockroachdb-resilience.md | 18 +++++++------- ...emo-low-latency-multi-region-deployment.md | 8 +++---- src/current/v25.3/demo-serializable.md | 2 +- .../v25.3/deploy-cockroachdb-on-aws.md | 2 +- ...y-cockroachdb-with-kubernetes-openshift.md | 10 ++++---- src/current/v25.3/detect-hotspots.md | 6 ++--- .../v25.3/disaster-recovery-overview.md | 2 +- src/current/v25.3/enable-node-map.md | 16 ++++++------- src/current/v25.3/explain.md | 4 ++-- src/current/v25.3/geojson.md | 2 +- src/current/v25.3/geoserver.md | 2 +- .../v25.3/how-does-a-changefeed-work.md | 2 +- src/current/v25.3/kibana.md | 6 ++--- .../v25.3/log-sql-activity-to-datadog.md | 2 +- .../logical-data-replication-overview.md | 4 ++-- src/current/v25.3/map-sql-activity-to-app.md | 2 +- ...itor-and-analyze-transaction-contention.md | 12 +++++----- .../v25.3/monitor-cockroachdb-kubernetes.md | 12 +++++----- .../v25.3/monitor-cockroachdb-operator.md | 12 +++++----- src/current/v25.3/monitoring-and-alerting.md | 2 +- src/current/v25.3/node-shutdown.md | 10 ++++---- ...erformance-benchmarking-with-tpcc-large.md | 2 +- src/current/v25.3/performance-recipes.md | 8 +++---- src/current/v25.3/performance.md | 4 ++-- ...-cluster-replication-technical-overview.md | 4 ++-- .../v25.3/query-behavior-troubleshooting.md | 10 ++++---- src/current/v25.3/query-spatial-data.md | 2 +- src/current/v25.3/secure-a-cluster.md | 8 +++---- .../v25.3/set-up-logical-data-replication.md | 2 +- src/current/v25.3/show-trace.md | 2 +- src/current/v25.3/spatial-indexes.md | 12 +++++----- src/current/v25.3/spatial-tutorial.md | 12 +++++----- src/current/v25.3/st_contains.md | 4 ++-- src/current/v25.3/st_convexhull.md | 2 +- src/current/v25.3/st_coveredby.md | 4 ++-- src/current/v25.3/st_covers.md | 4 ++-- src/current/v25.3/st_disjoint.md | 4 ++-- src/current/v25.3/st_equals.md | 4 ++-- src/current/v25.3/st_intersects.md | 4 ++-- src/current/v25.3/st_overlaps.md | 4 ++-- src/current/v25.3/st_touches.md | 4 ++-- src/current/v25.3/st_union.md | 2 +- src/current/v25.3/st_within.md | 4 ++-- ...start-a-local-cluster-in-docker-windows.md | 8 +++---- src/current/v25.3/start-a-local-cluster.md | 8 +++---- ...feed-to-a-confluent-cloud-kafka-cluster.md | 4 ++-- .../v25.3/take-locality-restricted-backups.md | 4 ++-- .../v25.3/topology-basic-production.md | 10 ++++---- src/current/v25.3/topology-development.md | 6 ++--- .../v25.3/topology-follow-the-workload.md | 10 ++++---- src/current/v25.3/topology-follower-reads.md | 8 +++---- .../v25.3/troubleshoot-lock-contention.md | 14 +++++------ src/current/v25.3/ui-cdc-dashboard.md | 22 ++++++++--------- src/current/v25.3/ui-cluster-overview-page.md | 8 +++---- .../v25.3/ui-custom-chart-debug-page.md | 4 ++-- src/current/v25.3/ui-key-visualizer.md | 6 ++--- src/current/v25.3/ui-network-latency-page.md | 6 ++--- ...-physical-cluster-replication-dashboard.md | 4 ++-- src/current/v25.3/ui-queues-dashboard.md | 4 ++-- src/current/v25.3/ui-replication-dashboard.md | 24 +++++++++---------- src/current/v25.3/ui-runtime-dashboard.md | 8 +++---- src/current/v25.3/ui-schedules-page.md | 4 ++-- src/current/v25.3/ui-ttl-dashboard.md | 8 +++---- src/current/v25.3/understand-hotspots.md | 20 ++++++++-------- src/current/v25.3/wal-failover.md | 6 ++--- src/current/v25.3/window-functions.md | 2 +- 97 files changed, 320 insertions(+), 320 deletions(-) diff --git a/src/current/_includes/v25.3/misc/movr-schema.md b/src/current/_includes/v25.3/misc/movr-schema.md index ac481a7ea31..1c51e944d74 100644 --- a/src/current/_includes/v25.3/misc/movr-schema.md +++ b/src/current/_includes/v25.3/misc/movr-schema.md @@ -9,4 +9,4 @@ Table | Description `user_promo_codes` | Promotional codes in use by users. `vehicle_location_histories` | Vehicle location history. -Geo-partitioning schema +Geo-partitioning schema diff --git a/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md b/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md index 2cb90851883..d46472fdfd4 100644 --- a/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md +++ b/src/current/_includes/v25.3/performance/check-rebalancing-after-partitioning.md @@ -2,7 +2,7 @@ Over the next minutes, CockroachDB will rebalance all partitions based on the co To check this at a high level, access the Web UI on any node at `:8080` and look at the **Node List**. You'll see that the range count is still close to even across all nodes but much higher than before partitioning: -Perf tuning rebalancing +Perf tuning rebalancing To check at a more granular level, SSH to one of the instances not running CockroachDB and run the `SHOW EXPERIMENTAL_RANGES` statement on the `vehicles` table: diff --git a/src/current/_includes/v25.3/performance/check-rebalancing.md b/src/current/_includes/v25.3/performance/check-rebalancing.md index 0e8a8434120..3c63a0a2f0e 100644 --- a/src/current/_includes/v25.3/performance/check-rebalancing.md +++ b/src/current/_includes/v25.3/performance/check-rebalancing.md @@ -2,7 +2,7 @@ Since you started each node with the `--locality` flag set to its GCE zone, over To check this, access the DB Console on any node at `:8080` and look at the **Node List**. You'll see that the range count is more or less even across all nodes: -Perf tuning rebalancing +Perf tuning rebalancing For reference, here's how the nodes map to zones: diff --git a/src/current/_includes/v25.3/sql/macos-terminal-configuration.md b/src/current/_includes/v25.3/sql/macos-terminal-configuration.md index 84895385a13..85d5461f8f1 100644 --- a/src/current/_includes/v25.3/sql/macos-terminal-configuration.md +++ b/src/current/_includes/v25.3/sql/macos-terminal-configuration.md @@ -3,12 +3,12 @@ In **Apple Terminal**: 1. Navigate to "Preferences", then "Profiles", then "Keyboard". 1. Enable the checkbox "Use Option as Meta Key". -Apple Terminal Alt key configuration +Apple Terminal Alt key configuration In **iTerm2**: 1. Navigate to "Preferences", then "Profiles", then "Keys". 1. Select the radio button "Esc+" for the behavior of the Left Option Key. -iTerm2 Alt key configuration +iTerm2 Alt key configuration diff --git a/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md b/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md index 90ac9e1943a..d80728b8a62 100644 --- a/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md +++ b/src/current/_includes/v25.3/start-in-docker/mac-linux-steps.md @@ -276,7 +276,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -286,7 +286,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. 1. Optionally verify that DB Console instances for `roach2` and `roach3` are reachable on ports 8081 and 8082 and show the same information as port 8080. diff --git a/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md b/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md index ba89e910e23..88438903d0a 100644 --- a/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md +++ b/src/current/_includes/v25.3/topology-patterns/multi-region-cluster-setup.md @@ -1,6 +1,6 @@ Each [multi-region pattern]({% link {{ page.version.version }}/topology-patterns.md %}#multi-region) assumes the following setup: -Multi-region hardware setup +Multi-region hardware setup #### Hardware diff --git a/src/current/_includes/v25.3/ui/active-statement-executions.md b/src/current/_includes/v25.3/ui/active-statement-executions.md index c7bd323f23d..d2bc1ace62a 100644 --- a/src/current/_includes/v25.3/ui/active-statement-executions.md +++ b/src/current/_includes/v25.3/ui/active-statement-executions.md @@ -30,7 +30,7 @@ The statement execution details page provides the following details on the state If a statement execution is waiting, the statement execution details are followed by Contention Insights and details of the statement execution on which the blocked statement execution is waiting. For more information about contention, see [Understanding and avoiding transaction contention]({{ link_prefix }}performance-best-practices-overview.html#understanding-and-avoiding-transaction-contention). -Movr rides transactions +Movr rides transactions ## See also diff --git a/src/current/_includes/v25.3/ui/active-transaction-executions.md b/src/current/_includes/v25.3/ui/active-transaction-executions.md index 31bbfdd376b..62a4c44ddf0 100644 --- a/src/current/_includes/v25.3/ui/active-transaction-executions.md +++ b/src/current/_includes/v25.3/ui/active-transaction-executions.md @@ -35,7 +35,7 @@ The transaction execution details page provides the following details on the tra If a transaction execution is waiting, the transaction execution details are followed by Contention Insights and details of the transaction execution on which the blocked transaction execution is waiting. For more information about contention, see [Transaction contention]({{ link_prefix }}performance-best-practices-overview.html#transaction-contention). -Movr rides transactions +Movr rides transactions ## See also diff --git a/src/current/_includes/v25.3/ui/insights.md b/src/current/_includes/v25.3/ui/insights.md index 60e11eb53f6..e2eb9ca7379 100644 --- a/src/current/_includes/v25.3/ui/insights.md +++ b/src/current/_includes/v25.3/ui/insights.md @@ -164,7 +164,7 @@ To test this functionality, you can generate a SQL query with a [Slow Execution] ~~~ 1. On the Insights page, in the **Columns** selector, check **Query Tags** and click **Apply**. 1. For the row where **Statement Execution** is `SELECT pg_sleep()`, scroll to the right to see the key-value pairs from the SQL comment displayed in the **Query Tags** column. - Query tags + Query tags 1. On the same row, click on the **Latest Statement Execution ID** (the first column on the left) to open the [**Statement Execution** details](#statement-execution-details) page. These key-value pairs also appear on the **Overview** tab under **Query Tags**. ### Statement Execution details @@ -222,11 +222,11 @@ The Workload Insights tab surfaces the following type of insights: The transaction or statement execution failed. The following screenshot shows a failed transaction execution: -Failed transaction execution +Failed transaction execution The following screenshot shows the default details of the preceding failed transaction execution. -Failed transaction execution details +Failed transaction execution details The **Insights** column shows the name of the insight, in this case **Failed Execution**. The **Details** column provides the **Error Code** and **Error Message**. CockroachDB uses [PostgreSQL Error Codes](https://www.postgresql.org/docs/current/errcodes-appendix.html). In this example, Error Code `40001` is a `serialization_failure`. @@ -234,7 +234,7 @@ The **Insights** column shows the name of the insight, in this case **Failed Exe The following screenshot shows the conditional details of the preceding failed transaction execution. In this case, there was a *serialization conflict*, also known as an *isolation conflict*, due to [transaction contention]({{ link_prefix }}performance-recipes.html#transaction-contention). (For transaction contention that causes *lock contention*, see [High Contention](#high-contention)). -Failed transaction execution details conditional +Failed transaction execution details conditional To capture more information in the event of a failed transaction execution due to a serialization conflict, set the [`sql.contention.record_serialization_conflicts.enabled`]({{ link_prefix }}cluster-settings.html#setting-sql-contention-record-serialization-conflicts-enabled) cluster setting to `true` (default). With this setting enabled, when the **Error Code** is `40001` and the **Error Message** specifically has [`RETRY_SERIALIZABLE - failed preemptive refresh`]({{ link_prefix }}transaction-retry-error-reference.html#failed_preemptive_refresh)` due to conflicting locks`, a conditional **Failed Execution** section is displayed with **Conflicting Transaction** and **Conflicting Location** information. @@ -248,11 +248,11 @@ To troubleshoot, refer to the performance tuning recipe for [identifying and unb The following screenshot shows the execution of a transaction flagged with **High Contention**: -Transaction execution +Transaction execution The following screenshot shows the execution details of the preceding transaction execution: -Transaction execution details +Transaction execution details ### High Retry Count @@ -273,11 +273,11 @@ The statement execution has resulted in one or more [index recommendations](#sch The following screenshot shows the statement execution of the query described in [Use the right index]({{ link_prefix }}apply-statement-performance-rules.html#rule-2-use-the-right-index): -Statement execution +Statement execution The following screenshot shows the execution details of the preceding statement execution: -Statement execution details +Statement execution details The **Insights** column shows the name of the insight, in this case **Suboptimal Plan**. The **Details** column provides details on the insight, such as a **Description** with the cause of the suboptimal plan and a **Recommendation** with a `CREATE INDEX` statement. The final column contains a **Create Index** button. Click the **Create Index** button to execute the recommended statement to mitigate the cause of the insight. @@ -299,7 +299,7 @@ This view lists the [indexes]({{ link_prefix }}indexes.html) that have not been The following screenshot shows the insight that displays after you run the query described in [Use the right index]({{ link_prefix }}apply-statement-performance-rules.html#rule-2-use-the-right-index) six or more times: -Schema insight +Schema insight CockroachDB uses the threshold of six executions before offering an insight because it assumes that you are no longer merely experimenting with a query at that point. diff --git a/src/current/_includes/v25.3/ui/jobs.md b/src/current/_includes/v25.3/ui/jobs.md index 7f56a5bfbb5..b7edf59e935 100644 --- a/src/current/_includes/v25.3/ui/jobs.md +++ b/src/current/_includes/v25.3/ui/jobs.md @@ -8,7 +8,7 @@ The Jobs list is designed for you to manage pending work. It is not intended to Use the **Jobs** table to see recently created and completed jobs. -DB Console Jobs Page +DB Console Jobs Page ### Filter jobs @@ -66,7 +66,7 @@ The details show: - **User Name** - error messages (if any) -DB Console Jobs Page +DB Console Jobs Page ## See also diff --git a/src/current/_includes/v25.3/ui/refresh.md b/src/current/_includes/v25.3/ui/refresh.md index 956cf4825e7..9f1f152b630 100644 --- a/src/current/_includes/v25.3/ui/refresh.md +++ b/src/current/_includes/v25.3/ui/refresh.md @@ -6,7 +6,7 @@ To control refresh of the data on the Active Executions views of the SQL Activit - A manual **Refresh** button: When clicked, refreshes data immediately. - An **Auto Refresh** toggle: When toggled **On** (default), refreshes data immediately and then automatically every 10 seconds. When toggled **Off**, stops automatic data refresh. The toggle setting is shared by both the Statements and the Transactions pages. Changing the setting on one page changes it on the other page. -Active executions view refresh +Active executions view refresh If **Auto Refresh** is toggled **On**, navigating to the Active Executions view on either the Statements page or Transactions page refreshes the data. diff --git a/src/current/_includes/v25.3/ui/sessions.md b/src/current/_includes/v25.3/ui/sessions.md index f516525c979..6194f3ae6c5 100644 --- a/src/current/_includes/v25.3/ui/sessions.md +++ b/src/current/_includes/v25.3/ui/sessions.md @@ -1,10 +1,10 @@ {% if page.cloud != true %} -Sessions Page +Sessions Page {% endif %} To filter the sessions, click the **Filters** field. -Session filter +Session filter - To filter by [application]({{ link_prefix }}connection-parameters.html#additional-connection-parameters), select **Application Name** and choose one or more applications. @@ -40,7 +40,7 @@ To view details of a session, click a **Session Start Time (UTC)** to display se If a session is idle, the **Transaction** and **Most Recent Statement** panels will display **No Active [Transaction | Statement]**. {% if page.cloud != true %} -Sessions Details Page +Sessions Details Page {% endif %} The **Cancel statement** button ends the SQL statement. The session running this statement will receive an error. diff --git a/src/current/_includes/v25.3/ui/statement-details.md b/src/current/_includes/v25.3/ui/statement-details.md index 75fc7ae1adc..66008abe036 100644 --- a/src/current/_includes/v25.3/ui/statement-details.md +++ b/src/current/_includes/v25.3/ui/statement-details.md @@ -35,7 +35,7 @@ The **Overview** section also displays the SQL statement fingerprint statistics The following screenshot shows the statement fingerprint of the query described in [Use the right index]({{ link_prefix }}apply-statement-performance-rules.html#rule-2-use-the-right-index): -Statement fingerprint overview +Statement fingerprint overview #### Insights @@ -47,7 +47,7 @@ The **Insights** table is displayed when CockroachDB has detected a problem with The following screenshot shows the insights of the statement fingerprint illustrated in [Overview](#overview): -Statement fingerprint overview +Statement fingerprint overview #### Charts @@ -65,7 +65,7 @@ Charts following the execution attributes display statement fingerprint statisti The following charts summarize the executions of the statement fingerprint illustrated in [Overview](#overview): -Statement fingerprint charts +Statement fingerprint charts ### Explain Plans @@ -73,7 +73,7 @@ The **Explain Plans** tab displays statement plans for an [explainable statement The following screenshot shows an execution of the query discussed in [Overview](#overview): -Plan table +Plan table The plan table shows the following details: @@ -94,7 +94,7 @@ Vectorized | Whether the execution used the [vectorized execution engine]({{ lin To display the plan that was executed, click the plan gist. For the plan gist `AgHUAQIABQAAAAHYAQIAiA...`, the following plan displays: -Plan table +Plan table #### Insights @@ -102,7 +102,7 @@ The plan table displays the number of insights related to the plan. If a plan ha The following screenshot shows 1 insight found after running the query discussed in [Overview](#overview) 6 or more times: -Plan with insight +Plan with insight {{site.data.alerts.callout_info}} CockroachDB uses the threshold of 6 executions before offering an insight because it assumes that you are no longer merely experimenting with a query at that point. @@ -114,7 +114,7 @@ If you click **Create Index**, a confirmation dialog displays a warning about th If you click **Apply** to create the index and then execute the statement again, the **Explain Plans** tab will show that the second execution (in this case at `19:40`), which uses the index and has no insight, takes less time than the first 6 executions. -Plan table after index +Plan table after index ### Diagnostics @@ -134,7 +134,7 @@ Diagnostics will be collected a maximum of *N* times for a given activated finge #### Activate diagnostics collection and download bundles -Activate statement diagnostics +Activate statement diagnostics {{site.data.alerts.callout_danger}} Collecting diagnostics has an impact on performance. All executions of the statement fingerprint will run slower until diagnostics are collected. @@ -156,11 +156,11 @@ To activate diagnostics collection: When the statement fingerprint is executed according to the statement diagnostic options selected, a row with the activation time and collection status is added to the **Statement diagnostics** table. -Statement diagnostics table +Statement diagnostics table The collection status values are: -- **READY**: indicates that the diagnostics have been collected. To download the diagnostics bundle, click Down arrow **Bundle (.zip)**. +- **READY**: indicates that the diagnostics have been collected. To download the diagnostics bundle, click Down arrow **Bundle (.zip)**. - **WAITING**: indicates that a SQL statement matching the fingerprint has not yet been recorded. To cancel diagnostics collection, click the **Cancel request** button. - **ERROR**: indicates that the attempt at diagnostics collection failed. @@ -173,4 +173,4 @@ Although fingerprints are periodically cleared from the Statements page, all dia - Click **Advanced Debug** in the left-hand navigation and click [Statement Diagnostics History]({% link {{ page.version.version }}/ui-debug-pages.md %}#reports). {% endif %} -Click Down arrow **Bundle (.zip)** to download any diagnostics bundle. +Click Down arrow **Bundle (.zip)** to download any diagnostics bundle. diff --git a/src/current/_includes/v25.3/ui/statements-filter.md b/src/current/_includes/v25.3/ui/statements-filter.md index 238b287bcc0..0daac06c1f8 100644 --- a/src/current/_includes/v25.3/ui/statements-filter.md +++ b/src/current/_includes/v25.3/ui/statements-filter.md @@ -72,4 +72,4 @@ To filter the statements: The following screenshot shows the statements that contain the string `rides` for the `movr` application filtered by `Statement Type: DML`: -Movr rides statements +Movr rides statements diff --git a/src/current/_includes/v25.3/ui/statements-views.md b/src/current/_includes/v25.3/ui/statements-views.md index 4d9437fbdce..4d5fdd5ff30 100644 --- a/src/current/_includes/v25.3/ui/statements-views.md +++ b/src/current/_includes/v25.3/ui/statements-views.md @@ -41,11 +41,11 @@ The **Statements** tab is selected. The **Statement Fingerprints** radio button The following screenshot shows the statement fingerprint for `SELECT city, id FROM vehicles WHERE city = $1` while running the [`movr` workload]({{ link_prefix}}cockroach-workload.html#run-the-movr-workload): -Statement fingerprint +Statement fingerprint If you click the statement fingerprint in the **Statements** column, the [**Statement Fingerprint** page](#statement-fingerprint-page) displays. -Statement details +Statement details ## Active Executions view @@ -66,11 +66,11 @@ When Auto [Refresh](#refresh) is On, active executions are polled every 10 secon The following screenshot shows the active statement execution for `INSERT INTO users VALUES ($1, $2, $3, $4, $5)` while running the [`movr` workload]({{ link_prefix }}cockroach-workload.html#run-the-movr-workload): -Statement execution +Statement execution If you click the execution ID in the **Statement Execution ID** column, the [**Statement Execution** details page](#statement-execution-details-page) displays. -Statement execution details +Statement execution details {% if page.cloud != true %} {% include {{ page.version.version }}/ui/refresh.md %} diff --git a/src/current/_includes/v25.3/ui/transactions-filter.md b/src/current/_includes/v25.3/ui/transactions-filter.md index ceebf0501ee..e9225d4e9e1 100644 --- a/src/current/_includes/v25.3/ui/transactions-filter.md +++ b/src/current/_includes/v25.3/ui/transactions-filter.md @@ -69,4 +69,4 @@ To filter the transactions: The following screenshot shows the transactions that contain the string `rides` for the `movr` application filtered by `Runs Longer Than: 300 milliseconds`: -Movr rides transactions +Movr rides transactions diff --git a/src/current/_includes/v25.3/ui/transactions-views.md b/src/current/_includes/v25.3/ui/transactions-views.md index 24589a757d9..96face0c911 100644 --- a/src/current/_includes/v25.3/ui/transactions-views.md +++ b/src/current/_includes/v25.3/ui/transactions-views.md @@ -41,11 +41,11 @@ Click the **Transactions** tab. The **Transaction Fingerprints** radio button is The following screenshot shows the transaction fingerprint for `SELECT city, id FROM vehicles WHERE city = $1` while running the [`movr` workload]({{ link_prefix }}cockroach-workload.html#run-the-movr-workload): -Transaction fingerprint +Transaction fingerprint If you click the transaction fingerprint in the **Transactions** column, the [**Transaction Details** page](#transaction-details-page) displays. -Transaction details +Transaction details ## Active Executions view @@ -66,11 +66,11 @@ When Auto [Refresh](#refresh) is On, active executions are polled every 10 secon The following screenshot shows the active statement execution for `UPSERT INTO vehicle_location_histories VALUES ($1, $2, now(), $4, $5)` while running the [`movr` workload]({{ link_prefix }}cockroach-workload.html#run-the-movr-workload): -Transaction execution +Transaction execution If you click the execution ID in the **Transaction Execution ID** column, the [**Transaction Execution** details page](#transaction-execution-details-page) displays. -Transaction execution details +Transaction execution details {% if page.cloud != true %} {% include {{ page.version.version }}/ui/refresh.md %} diff --git a/src/current/_includes/v25.3/ui/ui-summary-events.md b/src/current/_includes/v25.3/ui/ui-summary-events.md index e27e1fcd298..abe374c88ab 100644 --- a/src/current/_includes/v25.3/ui/ui-summary-events.md +++ b/src/current/_includes/v25.3/ui/ui-summary-events.md @@ -20,7 +20,7 @@ P99 Latency | The 99th percentile of service latency. Underneath the [Summary](#summary-panel) panel, the **Events** panel lists the 5 most recent events logged for all nodes across the cluster. To list all events, click **View all events**. -DB Console Events +DB Console Events The following types of events are listed: diff --git a/src/current/v25.3/architecture/reads-and-writes-overview.md b/src/current/v25.3/architecture/reads-and-writes-overview.md index 0292aa9ddd5..27a1bbd1c97 100644 --- a/src/current/v25.3/architecture/reads-and-writes-overview.md +++ b/src/current/v25.3/architecture/reads-and-writes-overview.md @@ -30,7 +30,7 @@ First, imagine a simple read scenario where: - Ranges are replicated 3 times (the default). - A query is executed against node 2 to read from table 3. -Perf tuning concepts +Perf tuning concepts In this case: @@ -41,13 +41,13 @@ In this case: If the query is received by the node that has the leaseholder for the relevant range, there are fewer network hops: -Perf tuning concepts +Perf tuning concepts ## Write scenario Now imagine a simple write scenario where a query is executed against node 3 to write to table 1: -Perf tuning concepts +Perf tuning concepts In this case: @@ -60,7 +60,7 @@ In this case: Just as in the read scenario, if the write request is received by the node that has the leaseholder and Raft leader for the relevant range, there are fewer network hops: -Perf tuning concepts +Perf tuning concepts ## Network and I/O bottlenecks diff --git a/src/current/v25.3/architecture/storage-layer.md b/src/current/v25.3/architecture/storage-layer.md index 76201244257..8744e1dc478 100644 --- a/src/current/v25.3/architecture/storage-layer.md +++ b/src/current/v25.3/architecture/storage-layer.md @@ -63,7 +63,7 @@ Pebble uses a Log-structured Merge-tree (hereafter _LSM tree_ or _LSM_) to manag SSTs are an on-disk representation of sorted lists of key-value pairs. Conceptually, they look something like this (intentionally simplified) diagram: -Structure of an SST file +Structure of an SST file SST files are immutable; they are never modified, even during the [compaction process](#compaction). @@ -78,7 +78,7 @@ The SSTs within each level are guaranteed to be non-overlapping: for example, if - To allow LSM-based storage engines like Pebble to support ingesting large amounts of data, such as when using the [`IMPORT INTO`]({% link {{ page.version.version }}/import-into.md %}) statement. - To allow for easier and more efficient flushes of [memtables](#memtable-and-write-ahead-log). -LSM tree with SST files +LSM tree with SST files ##### Write amplification @@ -155,7 +155,7 @@ Another file on disk called the write-ahead log (hereafter _WAL_) is associated The relationship between the memtable, the WAL, and the SST files is shown in the diagram below. New values are written to the WAL at the same time as they are written to the memtable. From the memtable they are eventually written to SST files on disk for longer-term storage. -Relationship between memtable, WAL, and SSTs +Relationship between memtable, WAL, and SSTs ##### LSM design tradeoffs diff --git a/src/current/v25.3/aws-dms.md b/src/current/v25.3/aws-dms.md index 03afd6c277c..df3317f81e3 100644 --- a/src/current/v25.3/aws-dms.md +++ b/src/current/v25.3/aws-dms.md @@ -93,7 +93,7 @@ As of publishing, AWS DMS supports migrations from these relational databases (f 1. In the AWS Console, open **AWS DMS**. 1. Open **Endpoints** in the sidebar. A list of endpoints will display, if any exist. 1. In the top-right portion of the window, select **Create endpoint**. - AWS-DMS-Create-Endpoint + AWS-DMS-Create-Endpoint A configuration page will open. 1. In the **Endpoint type** section, select **Target endpoint**. @@ -107,10 +107,10 @@ As of publishing, AWS DMS supports migrations from these relational databases (f {{site.data.alerts.callout_info}} To connect to a CockroachDB {{ site.data.products.standard }} or {{ site.data.products.basic }} cluster, set the **Database name** to `{host}.{database}`. For details on how to find these parameters, see [Connect to your cluster]({% link cockroachcloud/connect-to-your-cluster.md %}?filters=connection-parameters#connect-to-your-cluster). Also set **Secure Socket Layer (SSL) mode** to **require**. {{site.data.alerts.end}} - AWS-DMS-Endpoint-Configuration + AWS-DMS-Endpoint-Configuration 1. If needed, you can test the connection under **Test endpoint connection (optional)**. 1. To create the endpoint, select **Create endpoint**. - AWS-DMS-Test-Endpoint + AWS-DMS-Test-Endpoint ## Step 2. Create a database migration task @@ -124,7 +124,7 @@ To conserve CPU, consider migrating tables in multiple replication tasks, rather 1. While in **AWS DMS**, select **Database migration tasks** in the sidebar. A list of database migration tasks will display, if any exist. 1. In the top-right portion of the window, select **Create task**. - AWS-DMS-Create-DB-Migration-Task + AWS-DMS-Create-DB-Migration-Task A configuration page will open. 1. Supply a **Task identifier** to identify the replication task. @@ -135,17 +135,17 @@ To conserve CPU, consider migrating tables in multiple replication tasks, rather {{site.data.alerts.callout_danger}} If you choose **Migrate existing data and replicate ongoing changes** or **Replicate data changes only**, you must first [disable revision history for backups](#setup). {{site.data.alerts.end}} - AWS-DMS-Task-Configuration + AWS-DMS-Task-Configuration ### Step 2.2. Task settings 1. For the **Editing mode** radio button, keep **Wizard** selected. 1. To preserve the schema you manually created, select **Truncate** or **Do nothing** for the **Target table preparation mode**. - AWS-DMS-Task-Settings + AWS-DMS-Task-Settings 1. Optionally check **Enable validation** to compare the data in the source and target rows, and verify that the migration succeeded. You can view the results in the [**Table statistics**](#step-3-verify-the-migration) for your migration task. For more information about data validation, see the [AWS documentation](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html). 1. Check the **Enable CloudWatch logs** option. We highly recommend this for troubleshooting potential migration issues. 1. For the **Target Load**, select **Detailed debug**. - AWS-DMS-CloudWatch-Logs + AWS-DMS-CloudWatch-Logs ### Step 2.3. Table mappings @@ -161,7 +161,7 @@ When specifying a range of tables to migrate, the following aspects of the sourc 1. Select **Add new selection rule**. 1. In the **Schema** dropdown, select **Enter a schema**. 1. Supply the appropriate **Source name** (schema name), **Table name**, and **Action**. - AWS-DMS-Table-Mappings + AWS-DMS-Table-Mappings {{site.data.alerts.callout_info}} Use `%` as an example of a wildcard for all schemas in a PostgreSQL database. However, in MySQL, using `%` as a schema name imports all the databases, including the metadata/system ones, as MySQL treats schemas and databases as the same. @@ -205,7 +205,7 @@ If your migration succeeded, you should now: If your migration failed for some reason, you can check the checkbox next to the table(s) you wish to re-migrate and select **Reload table data**. -AWS-DMS-Reload-Table-Data +AWS-DMS-Reload-Table-Data ## Optional configurations @@ -221,7 +221,7 @@ The `BatchApplyEnabled` setting can improve replication performance and is recom 1. Choose your task, and then choose **Modify**. 1. From the **Task settings** section, switch the **Editing mode** from **Wizard** to **JSON editor**. Locate the `BatchApplyEnabled` setting and change its value to `true`. Information about the `BatchApplyEnabled` setting can be found [here](https://aws.amazon.com/premiumsupport/knowledge-center/dms-batch-apply-cdc-replication/). -AWS-DMS-BatchApplyEnabled +AWS-DMS-BatchApplyEnabled {{site.data.alerts.callout_info}} `BatchApplyEnabled` does not work when using **Drop tables on target** as a target table preparation mode. Thus, all schema-related changes must be manually copied over if using `BatchApplyEnabled`. @@ -277,7 +277,7 @@ The `BatchApplyEnabled` setting can improve replication performance and is recom To prevent this error, set the [`expect_and_ignore_not_visible_columns_in_copy` session variable]({% link {{ page.version.version }}/session-variables.md %}#expect-and-ignore-not-visible-columns-in-copy) in the DMS [target endpoint configuration](#step-1-create-a-target-endpoint-pointing-to-cockroachdb). Under **Endpoint settings**, add an **AfterConnectScript** setting with the value `SET expect_and_ignore_not_visible_columns_in_copy=on`. - AWS-DMS-Endpoint-Settings + AWS-DMS-Endpoint-Settings - The following error in the CockroachDB [logs]({% link {{ page.version.version }}/logging-overview.md %}) indicates that AWS DMS is unable to copy into a table with a [computed column]({% link {{ page.version.version }}/computed-columns.md %}): diff --git a/src/current/v25.3/backup-architecture.md b/src/current/v25.3/backup-architecture.md index 9e9c5ecc7f7..b0fabd82c3f 100644 --- a/src/current/v25.3/backup-architecture.md +++ b/src/current/v25.3/backup-architecture.md @@ -27,7 +27,7 @@ At a high level, CockroachDB performs the following tasks when running a backup The following diagram illustrates the flow from `BACKUP` statement through to a complete backup in cloud storage: -A flow diagram representing the process of a backup job from statement through to backup data stored. +A flow diagram representing the process of a backup job from statement through to backup data stored. ## Job creation phase @@ -85,7 +85,7 @@ In the following diagram, nodes that contain replicas of the relevant key spans While processing, the nodes emit progress data that tracks their backup work to the coordinator. In the diagram, **Node 3** and **Node 1** will send progress data to **Node 2**. The coordinator node will then aggregate the progress data into checkpoint files in the storage bucket. The checkpoint files provide a marker for the backup to resume after a retryable state, such as when it has been [paused]({% link {{ page.version.version }}/pause-job.md %}). -Three-node cluster exporting backup data from the leaseholders +Three-node cluster exporting backup data from the leaseholders ## Metadata writing phase @@ -112,7 +112,7 @@ For example, in the following diagram there is a three-node cluster split across During a [restore]({% link {{ page.version.version }}/restore.md %}) job, the job creation statement will need access to each of the storage locations to read the metadata files in order to complete a successful restore. -How a locality-aware backup writes to storage buckets in each region +How a locality-aware backup writes to storage buckets in each region #### Job coordination on CockroachDB Standard and Basic clusters diff --git a/src/current/v25.3/changefeed-messages.md b/src/current/v25.3/changefeed-messages.md index 1f040ea5475..2170fc5bbc7 100644 --- a/src/current/v25.3/changefeed-messages.md +++ b/src/current/v25.3/changefeed-messages.md @@ -237,7 +237,7 @@ A changefeed job cannot confirm that a message has been received by the sink unl When a changefeed must pause and then resume, it will return to the last checkpoint (**A**), which is the last point at which the coordinator confirmed all changes for the given timestamp. As a result, when the changefeed resumes, it will re-emit the messages that were not confirmed in the next checkpoint. The changefeed may not re-emit every message, but it will ensure each change is emitted at least once. -How checkpoints will re-emit messages when a changefeed pauses. The changefeed returns to the last checkpoint and potentially sends duplicate messages. +How checkpoints will re-emit messages when a changefeed pauses. The changefeed returns to the last checkpoint and potentially sends duplicate messages. ### Changefeed encounters an error diff --git a/src/current/v25.3/changefeed-monitoring-guide.md b/src/current/v25.3/changefeed-monitoring-guide.md index 288b0f5e626..defa5f110f3 100644 --- a/src/current/v25.3/changefeed-monitoring-guide.md +++ b/src/current/v25.3/changefeed-monitoring-guide.md @@ -22,7 +22,7 @@ The changefeed pipeline contains three main sections that start at the [storage - [**Processing**](#processing-aggregation-and-encoding): Prepares the change events from the rangefeed into [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) by encoding messages into the specified [format]({% link {{ page.version.version }}/changefeed-messages.md %}#message-formats). - [**Sink**](#sink): Delivers changefeed messages to the [downstream sink]({% link {{ page.version.version }}/changefeed-sinks.md %}). -An overview of the changefeed pipeline and the metrics that are connected to each stage. +An overview of the changefeed pipeline and the metrics that are connected to each stage. Where noted in the following sections, you can use changefeed [metrics labels]({% link {{ page.version.version }}/monitor-and-debug-changefeeds.md %}#using-changefeed-metrics-labels) to measure metrics per changefeed. diff --git a/src/current/v25.3/cloud-storage-authentication.md b/src/current/v25.3/cloud-storage-authentication.md index 81da03142e0..bdcd2b44969 100644 --- a/src/current/v25.3/cloud-storage-authentication.md +++ b/src/current/v25.3/cloud-storage-authentication.md @@ -131,7 +131,7 @@ For example, to configure a user to assume an IAM role that allows a bulk operat The `sts:AssumeRole` permission allows the user to obtain a temporary set of security credentials that gives them access to an S3 bucket to which they would not have access with their user-based permissions. - AWS user summary page showing the JSON policy in place + AWS user summary page showing the JSON policy in place 1. Return to your IAM role's **Summary** page, and click on the **Trust Relationships** tab. Add a trust policy into the role, which will define the users that can assume the role. @@ -304,7 +304,7 @@ Once you have an identity role that your CockroachDB nodes can assume, you can c Copy the ARN of the identity role. In the Amazon management console, click on **IAM**, then **Roles**, and select the name of your identity role. From the **Summary** page, copy your ARN. You will need this when configuring the Trust Policy for the IAM role to be assumed. -Role summary page showing the ARN copied +Role summary page showing the ARN copied See [Step 2. Trust the identity role](#step-2-trust-the-identity-role) to add this ARN to an operation role's Trust Policy. @@ -318,21 +318,21 @@ If you already have the role that contains permissions for the operation, ensure 1. To create an operation role, click **Create Role** under the **Roles** menu. Select **Custom trust policy** and then add the ARN of your identity role (from [Step 1](#step-1-set-up-the-identity-role)) to the JSON by clicking `Principal`. This will open a dialog box. Select **IAM Roles** for **Principal Type** and paste the ARN. Click **Add Principal** and then **Next**. - Dialog box to add principal with IAM roles selected + Dialog box to add principal with IAM roles selected 2. On the **Add Permissions** page, search for the permission policies that the role will need to complete the bulk operation. - Filter list to add permissions to IAM roles + Filter list to add permissions to IAM roles Or, use the **Create Policy** button to define the required permissions. You can use the visual editor to select the service, actions, and resources. - Using the visual editor to define S3 service and S3 actions. + Using the visual editor to define S3 service and S3 actions. Or, use the JSON tab to specify the policy. For the JSON editor, see [Storage Permissions]({% link {{ page.version.version }}/use-cloud-storage.md %}#storage-permissions) for an example and detail on the minimum permissions required for each operation to complete. Click **Next**. 3. Finally, give the role a name on the **Name, review, and create** page. The following screenshot shows the selected trust policy and permissions: - Final screen in the create role process to review permissions and name role + Final screen in the create role process to review permissions and name role ### Step 3. Run the operation by assuming the role @@ -447,7 +447,7 @@ For this example, both service accounts have already been created. If you need t - In [Google's Cloud console](https://console.cloud.google.com/getting-started), click **IAM & Admin**, **Roles**, and then **Create Role**. - Add a title for the role and then click **Add Permissions**. Filter for the permissions required for the bulk operation. For example, if you want to enable service account B to run a changefeed, your role will include the `storage.objects.create` permission. See the [Storage permissions]({% link {{ page.version.version }}/use-cloud-storage.md %}#storage-permissions) section on this page for details on the minimum permissions each CockroachDB bulk operation requires. - Adding permissions to a changefeed role when creating a role. + Adding permissions to a changefeed role when creating a role. {{site.data.alerts.callout_success}} Alternately, you can use the [gcloud CLI](https://cloud.google.com/sdk/gcloud/reference/iam/roles/create) to create roles. @@ -457,14 +457,14 @@ For this example, both service accounts have already been created. If you need t - Go to the **Cloud Storage** menu and select the bucket. In the bucket's menu, click **Grant Access**. - Add the service account to the **Add principals** box and select the name of the role you created in step 1 under **Assign roles**. - Adding service account with the created role to the bucket. + Adding service account with the created role to the bucket. 1. Next, service account B needs the "Service Account Token Creator" role for service account A. This enables service account B to create short-lived tokens for A. - Go to the **Service Accounts** menu in the Google Cloud Console. - Select service account B from the list, then the **Permissions** tab, and click **Grant Access** under **Principals with access to this service account**. - Enter the name of service account A into the **New principals** box and select "Service Account Token Creator" under the **Assign roles** dropdown. Click **Save** to complete. - Granting service account A access to service account B with the token creator role. + Granting service account A access to service account B with the token creator role. 1. Finally, you will run the bulk operation from your CockroachDB cluster. If you're using [specified authentication](#google-cloud-storage-specified), pass in the GCS bucket's URL with the IAM user's `CREDENTIALS`. If you're using [implicit authentication](#google-cloud-storage-implicit), specify `AUTH=IMPLICIT` instead. For assuming the role, pass the assumed role's service account name, which you can copy from the **Service Accounts** page: @@ -600,13 +600,13 @@ See [Step 2](#step-2-create-the-operation-service-account) to create an operatio b. In the **Grant this service account access to project** section, select the role you require for the bulk operation, e.g., "Storage Object Creator". See [Storage Permissions]({% link {{ page.version.version }}/use-cloud-storage.md %}#storage-permissions) for detail on the minimum permissions required for each operation to complete. Click **Continue**. - Adding the workload identity role to the service account users role box + Adding the workload identity role to the service account users role box c. In the **Grant users access to this service account** section, paste the name of the identity service account. Then, click **Done**. - Adding the workload identity role to the service account users role box + Adding the workload identity role to the service account users role box ### Step 3. Give the identity service account the token creator role @@ -616,7 +616,7 @@ Next, the operation service account needs to contain the "Service Account Token 1. Select the operation service account from the list, then the **Permissions** tab, and click **Grant Access** under **Principals with access to this service account**. 1. Enter the name of the identity service account into the **New principals** box and select "Service Account Token Creator" under the **Assign roles** dropdown. Click **Save** to complete. - Granting the identity service account access to the operation service account with the token creator role. + Granting the identity service account access to the operation service account with the token creator role. ### Step 4. Run the operation by assuming the service account diff --git a/src/current/v25.3/configure-replication-zones.md b/src/current/v25.3/configure-replication-zones.md index c6a173df604..090ea83714b 100644 --- a/src/current/v25.3/configure-replication-zones.md +++ b/src/current/v25.3/configure-replication-zones.md @@ -129,7 +129,7 @@ The following diagram presents the same set of schema objects as the previous ou Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). -zone config inheritance diagram +zone config inheritance diagram #### Zone config inheritance - example SQL session diff --git a/src/current/v25.3/data-resilience.md b/src/current/v25.3/data-resilience.md index 57583e90e84..aaf0b8ecd8d 100644 --- a/src/current/v25.3/data-resilience.md +++ b/src/current/v25.3/data-resilience.md @@ -9,7 +9,7 @@ CockroachDB provides built-in [**high availability (HA)**](#high-availability) f - HA features ensure continuous access to data without interruption even in the presence of [failures]({% link {{ page.version.version }}/demo-cockroachdb-resilience.md %}) or disruptions to maximize uptime. - DR tools allow for recovery from major incidents to minimize downtime and data loss. -Diagram showing how HA features and DR tools create a resilient CockroachDB deployment. +Diagram showing how HA features and DR tools create a resilient CockroachDB deployment. You can balance required SLAs and recovery objectives with the cost and management of each of these features to build a resilient deployment. diff --git a/src/current/v25.3/datadog.md b/src/current/v25.3/datadog.md index 316de0a111a..529c925956e 100644 --- a/src/current/v25.3/datadog.md +++ b/src/current/v25.3/datadog.md @@ -30,7 +30,7 @@ Before you can follow the steps presented in this tutorial, you must have: To enable the CockroachDB check for your installed Datadog Agent, navigate to the [Integrations page](https://app.datadoghq.com/account/settings#integrations) and find CockroachDB in the list of available integrations. Hover over the icon and click **+ Install**. -CockroachDB integration for Datadog installation +CockroachDB integration for Datadog installation Note that you must restart the Datadog Agent for the change to take effect. CockroachDB will then be listed as an installed integration. @@ -122,11 +122,11 @@ cockroachdb (1.6.0) Open your Datadog [Dashboard List](https://app.datadoghq.com/dashboard/lists) and click on `CockroachDB Overview`: -CockroachDB Overview dashboard in Datadog Dashboard List +CockroachDB Overview dashboard in Datadog Dashboard List This sample dashboard presents metrics on cluster availability, query performance, and resource usage: -CockroachDB Overview dashboard for Datadog +CockroachDB Overview dashboard for Datadog {{site.data.alerts.callout_info}} If you wish to customize your CockroachDB dashboard, it's recommended that you clone the default `CockroachDB Overview` dashboard before adding and removing widgets. If you leave the default dashboard intact, Datadog will update it when new versions of the integration's dashboard are released. @@ -152,7 +152,7 @@ cockroach workload run movr --duration=5m 'postgresql://root@localhost:26257?ssl The query metrics will appear on the dashboard: -CockroachDB Overview dashboard for Datadog with SQL metrics +CockroachDB Overview dashboard for Datadog with SQL metrics ## Step 6. Add monitoring and alerting @@ -162,14 +162,14 @@ Select **Threshold Alert** as the detection method. You can use this option to c The example alert below will trigger when [a node has less than 15% of storage capacity remaining]({% link {{ page.version.version }}/monitoring-and-alerting.md %}#node-is-running-low-on-disk-space): -CockroachDB Threshold Alert in Datadog +CockroachDB Threshold Alert in Datadog - `cockroachdb.capacity.available` is divided by `cockroachdb.capacity.total` to determine the fraction of available capacity on the node's [store]({% link {{ page.version.version }}/architecture/storage-layer.md %}) (the directory on each node where CockroachDB reads and writes its data). - The alert threshold is set to `0.15`. The timeseries graph at the top of the page indicates the configured metric and threshold: -CockroachDB Threshold Alert in Datadog +CockroachDB Threshold Alert in Datadog ## Known limitations diff --git a/src/current/v25.3/dbeaver.md b/src/current/v25.3/dbeaver.md index dcf58e8e231..accad7a3811 100644 --- a/src/current/v25.3/dbeaver.md +++ b/src/current/v25.3/dbeaver.md @@ -32,19 +32,19 @@ To work through this tutorial, take the following steps: 1. Start DBeaver, and select **Database > New Connection** from the menu. In the dialog that appears, select **CockroachDB** from the list. - DBeaver - Select CockroachDB + DBeaver - Select CockroachDB 1. Click **Next**. The **Connection Settings** dialog displays. 1. In the **Database** field, enter `movr`. - DBeaver - CockroachDB connection settings + DBeaver - CockroachDB connection settings ## Step 2. Update the connection settings 1. Click the **SSL** tab. - DBeaver - SSL tab + DBeaver - SSL tab 1. Check the **Use SSL** checkbox as shown, and fill in the text areas as follows: - **Root certificate**: Use the `ca.crt` file you generated for your secure cluster. @@ -61,13 +61,13 @@ To work through this tutorial, take the following steps: 1. Click **Test Connection ...**. If you need a driver, the following dialog displays: - DBeaver - download driver dialog + DBeaver - download driver dialog 1. Click **Download**. After the driver downloads, if the connection was successful, you will see a **Connected** dialog. - DBeaver - connection success dialog + DBeaver - connection success dialog 1. Click **OK** to dismiss the dialog. @@ -75,7 +75,7 @@ To work through this tutorial, take the following steps: Expand the **movr** database node and navigate to the **rides** table. -DBeaver - CockroachDB with the movr database +DBeaver - CockroachDB with the movr database For more information about using DBeaver, see the [DBeaver documentation](https://dbeaver.io/docs/). diff --git a/src/current/v25.3/dbmarlin.md b/src/current/v25.3/dbmarlin.md index e267b187ec8..857dcd188c2 100644 --- a/src/current/v25.3/dbmarlin.md +++ b/src/current/v25.3/dbmarlin.md @@ -50,7 +50,7 @@ Follow the steps in [Instance Dashboard](https://docs.dbmarlin.com/docs/Using-DB When you open the dashboard you'll see : -CockroachDB Overview dashboard for DBmarlin +CockroachDB Overview dashboard for DBmarlin ## See also diff --git a/src/current/v25.3/demo-automatic-cloud-migration.md b/src/current/v25.3/demo-automatic-cloud-migration.md index 78e0d0273a4..78950787f84 100644 --- a/src/current/v25.3/demo-automatic-cloud-migration.md +++ b/src/current/v25.3/demo-automatic-cloud-migration.md @@ -171,7 +171,7 @@ Now open the DB Console at `http://localhost:8080` and click **Metrics** in the Scroll down a bit and hover over the **Replicas per Node** graph. Because CockroachDB replicates each piece of data 3 times by default, the replica count on each of your 3 nodes should be identical: -DB Console +DB Console ## Step 7. Add 3 nodes on "cloud 2" @@ -223,7 +223,7 @@ $ cockroach start \ Back on the **Overview** dashboard in DB Console, hover over the **Replicas per Node** graph again. Because you used [`--locality`]({% link {{ page.version.version }}/configure-replication-zones.md %}#descriptive-attributes-assigned-to-nodes) to specify that nodes are running on 2 clouds, you'll see an approximately even number of replicas on each node, indicating that CockroachDB has automatically rebalanced replicas across both simulated clouds: -DB Console +DB Console Note that it takes a few minutes for the DB Console to show accurate per-node replica counts on hover. This is why the new nodes in the screenshot above show 0 replicas. However, the graph lines are accurate, and you can click **View node list** in the **Summary** area for accurate per-node replica counts as well. @@ -242,7 +242,7 @@ $ cockroach sql --execute="ALTER RANGE default CONFIGURE ZONE USING constraints= Back on the **Overview** dashboard in the DB Console, hover over the **Replicas per Node** graph again. Very soon, you'll see the replica count double on nodes 4, 5, and 6 and drop to 0 on nodes 1, 2, and 3: -DB Console +DB Console This indicates that all data has been migrated from cloud 1 to cloud 2. In a real cloud migration scenario, at this point you would update the load balancer to point to the nodes on cloud 2 and then stop the nodes on cloud 1. But for the purpose of this local simulation, there's no need to do that. diff --git a/src/current/v25.3/demo-cockroachdb-resilience.md b/src/current/v25.3/demo-cockroachdb-resilience.md index 4fb76c098b4..570398d6bf7 100644 --- a/src/current/v25.3/demo-cockroachdb-resilience.md +++ b/src/current/v25.3/demo-cockroachdb-resilience.md @@ -187,25 +187,25 @@ Initially, the workload creates a new database called `ycsb`, creates the table 1. To check the SQL queries getting executed, click **Metrics** on the left, and hover over the **SQL Statements** graph at the top: - DB Console SQL Statements + DB Console SQL Statements 1. To check the client connections from the load generator, select the **SQL** dashboard and hover over the **Open SQL Sessions** graph: - DB Console Open Sessions + DB Console Open Sessions You'll notice 3 client connections from the load generator. If you want to check that HAProxy balanced each connection to a different node, you can change the **Graph** dropdown from **Cluster** to specific nodes. 1. To see more details about the `ycsb` database and the `public.usertable` table, click **Databases** in the upper left and click **ycsb**: - DB Console Databases + DB Console Databases You can also view the schema and other table details of `public.usertable` by clicking the table name: - DB Console usertable + DB Console usertable 1. By default, CockroachDB replicates all data 3 times and balances it across all nodes. To see this balance, click **Overview** and check the replica count across all nodes: - DB Console Overview + DB Console Overview ## Step 5. Simulate a single node failure @@ -246,7 +246,7 @@ When a node fails, the cluster waits for the node to remain offline for 5 minute Go back to the DB Console, click **Metrics** on the left, and verify that the cluster as a whole continues serving data, despite one of the nodes being unavailable and marked as **Suspect**: -DB Console Suspect Node +DB Console Suspect Node This shows that when all ranges are replicated 3 times (the default), the cluster can tolerate a single node failure because the surviving nodes have a majority of each range's replicas (2/3). @@ -254,7 +254,7 @@ This shows that when all ranges are replicated 3 times (the default), the cluste Click **Overview** on the left: -DB Console Cluster Repair +DB Console Cluster Repair Because you reduced the time it takes for the cluster to consider the down node dead, after 1 minute or so, the cluster will consider the down node "dead", and you'll see the replica count on the remaining nodes increase and the number of under-replicated ranges decrease to 0. This shows the cluster repairing itself by re-replicating missing replicas. @@ -286,7 +286,7 @@ To be able to tolerate 2 of 5 nodes failing simultaneously without any service i 1. In the DB Console **Overview** dashboard, watch the replica count increase and even out across all 6 nodes: - DB Console Cluster Restore + DB Console Cluster Restore This shows the cluster up-replicating so that each range has 5 replicas, one on each node. @@ -303,7 +303,7 @@ kill -TERM {process IDs} 1. Click **Overview** on the left, and verify the state of the cluster: - DB Console Cluster Health + DB Console Cluster Health 1. To verify that the cluster still serves data, use the `cockroach sql` command to interact with the cluster. diff --git a/src/current/v25.3/demo-low-latency-multi-region-deployment.md b/src/current/v25.3/demo-low-latency-multi-region-deployment.md index e6747ba9c0a..62ae55d060d 100644 --- a/src/current/v25.3/demo-low-latency-multi-region-deployment.md +++ b/src/current/v25.3/demo-low-latency-multi-region-deployment.md @@ -121,7 +121,7 @@ node 9: And here is the view on the **Network Latency Page**, which shows which nodes are in which cluster regions: -Geo-partitioning network latency +Geo-partitioning network latency You can see by referring back and forth between `\demo ls` and the **Network Latency Page** that the cluster has the following region/node/port correspondences, which we can use to determine how to connect MovR from various regions: @@ -251,13 +251,13 @@ Now that you have load hitting the cluster from different regions, check how the In the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) at http://127.0.0.1:8080, click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) on the left and hover over the [**Service Latency: SQL, 99th percentile**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}#service-latency-sql-99th-percentile) timeseries graph. You should see the effects of network latency on this workload. -Geo-partitioning SQL latency +Geo-partitioning SQL latency For each of the 3 nodes that you are pointing the movr workload at, the max latency of 99% of queries are in the 1-2 seconds range. The SQL latency is high because of the network latency between regions. To see the network latency between any two nodes in the cluster, click [**Network Latency**]({% link {{ page.version.version }}/ui-network-latency-page.md %}) in the left-hand navigation. -Geo-partitioning network latency +Geo-partitioning network latency Within a single region, round-trip latency is under 6 ms (milliseconds). Across regions, round-trip latency is significantly higher. @@ -314,7 +314,7 @@ As the multi-region schema changes complete, you should see changes to the follo The small demo cluster used in this example is essentially in a state of overload from the start. The performance numbers shown here only reflect the direction of the performance improvements. You should expect to see much better absolute performance numbers than those described here [in a production deployment]({% link {{ page.version.version }}/recommended-production-settings.md %}). {{site.data.alerts.end}} -Geo-partitioning SQL latency +Geo-partitioning SQL latency ## See also diff --git a/src/current/v25.3/demo-serializable.md b/src/current/v25.3/demo-serializable.md index 40da08d0bda..246bb904952 100644 --- a/src/current/v25.3/demo-serializable.md +++ b/src/current/v25.3/demo-serializable.md @@ -33,7 +33,7 @@ When write skew happens, a transaction reads something, makes a decision based o ### Schema -Schema for serializable transaction tutorial +Schema for serializable transaction tutorial ## Step 1. Set up the scenario on PostgreSQL diff --git a/src/current/v25.3/deploy-cockroachdb-on-aws.md b/src/current/v25.3/deploy-cockroachdb-on-aws.md index badc8a9a52b..c9839932810 100644 --- a/src/current/v25.3/deploy-cockroachdb-on-aws.md +++ b/src/current/v25.3/deploy-cockroachdb-on-aws.md @@ -56,7 +56,7 @@ CockroachDB is supported in all [AWS regions](https://docs.aws.amazon.com/AWSEC2 In this basic deployment, 3 CockroachDB nodes are each deployed on an Amazon EC2 instance across 3 availability zones. These are grouped within a single VPC and security group. Users are routed to the cluster via [Amazon Route 53](https://aws.amazon.com/route53/) (which is not used in this tutorial) and a load balancer. -Architecture diagram for a three-node CockroachDB cluster deployed on AWS +Architecture diagram for a three-node CockroachDB cluster deployed on AWS ## Step 1. Create instances diff --git a/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md b/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md index d07e38ccef3..89092692536 100644 --- a/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md +++ b/src/current/v25.3/deploy-cockroachdb-with-kubernetes-openshift.md @@ -67,7 +67,7 @@ This article assumes you have already installed the OpenShift Container Platform 1. Enter "cockroach" in the search box. There are two tiles called **CockroachDB Operator**. Find the tile _without_ the `Marketplace` label (which requires a subscription). - OpenShift OperatorHub + OpenShift OperatorHub Click the **CockroachDB Operator** tile and then **Install**. @@ -93,7 +93,7 @@ This article assumes you have already installed the OpenShift Container Platform 1. In the **CockroachDB Operator** tile, click **Create instance**. - OpenShift OperatorHub + OpenShift OperatorHub 1. Make sure **CockroachDB Version** is set to a valid CockroachDB version. For a list of compatible image names, see `spec.containers.env` in the [pulic operator manifest](https://raw.github.com/cockroachdb/cockroach-operator/v{{ latest_operator_version }}/install/operator.yaml) on GitHub. @@ -101,7 +101,7 @@ This article assumes you have already installed the OpenShift Container Platform 1. Navigate to **Workloads** > **Pods** and observe the pods being created: - OpenShift OperatorHub + OpenShift OperatorHub 1. You can also use the command line to view the pods: @@ -317,7 +317,7 @@ To run a sample [CockroachDB workload]({% link {{ page.version.version }}/cockro 1. Select one of the CockroachDB pods on the **Pods** page and click **Logs**. This will reveal the JDBC URL that your application can use to connect to CockroachDB: - OpenShift OperatorHub + OpenShift OperatorHub ## Step 8. Delete the cluster @@ -327,7 +327,7 @@ If you want to continue using this cluster, see the documentation on [configurin 1. Go to the **Installed Operators** page and find the cluster name of the CockroachDB cluster. Select **Delete CrdbCluster** from the menu. - OpenShift OperatorHub + OpenShift OperatorHub This will delete the CockroachDB cluster being run by the operator. It will *not* delete: diff --git a/src/current/v25.3/detect-hotspots.md b/src/current/v25.3/detect-hotspots.md index 158fe92e8db..0b18a5ccb2b 100644 --- a/src/current/v25.3/detect-hotspots.md +++ b/src/current/v25.3/detect-hotspots.md @@ -15,7 +15,7 @@ This page provides practical guidance on identifying common [hotspots]({% link { The following sections provide detailed instructions for identifying potential hotspots and applying mitigations. -Troubleshoot hotspots workflow +Troubleshoot hotspots workflow ## Step 1. Check for a node outlier in metrics @@ -27,7 +27,7 @@ To identify a [hotspot]({% link {{ page.version.version }}/understand-hotspots.m 1. Create a custom chart to monitor the `kv.concurrency.latch_conflict_wait_durations-avg` metric, which tracks time spent on [latch acquisition]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#latch-manager) waiting for conflicts with other latches. For example, a [sequence]({% link {{ page.version.version }}/understand-hotspots.md %}#hot-sequence) that writes to the same row must wait to acquire the latch. 1. To display the metric per node, select the `PER NODE/STORE` checkbox as shown: - kv.concurrency.latch_conflict_wait_durations-avg + kv.concurrency.latch_conflict_wait_durations-avg 1. Is there a node with a maximum value that is a clear outlier in the cluster for the latch conflict wait durations metric? - If **Yes**, note the ID of the [hot node]({% link {{ page.version.version }}/understand-hotspots.md %}#hot-node) and the time period when it was hot. Proceed to check for a [`popular key detected `log](#a-popular-key-detected). @@ -39,7 +39,7 @@ To identify a [hotspot]({% link {{ page.version.version }}/understand-hotspots.m 1. Monitor the [**CPU Percent** graph]({% link {{ page.version.version }}/ui-hardware-dashboard.md %}#cpu-percent). CPU usage typically increases with traffic volume. 1. Check if the CPU usage of the hottest node is 20% or more above the cluster average. For example, node `n5`, represented by the green line in the following **CPU Percent** graph, hovers at around 87% at time 17:35 compared to other nodes that hover around 20% to 25%. - graph of CPU Percent utilization per node showing hot key + graph of CPU Percent utilization per node showing hot key 1. Is there a node with a maximum value that is a clear outlier in the cluster for the CPU percent metric? - If **Yes**, note the ID of the [hot node]({% link {{ page.version.version }}/understand-hotspots.md %}#hot-node) and the time period when it was hot. Proceed to check for a [`popular key detected `log](#a-popular-key-detected). diff --git a/src/current/v25.3/disaster-recovery-overview.md b/src/current/v25.3/disaster-recovery-overview.md index 42f98b8f908..abe5e12903a 100644 --- a/src/current/v25.3/disaster-recovery-overview.md +++ b/src/current/v25.3/disaster-recovery-overview.md @@ -12,7 +12,7 @@ As you evaluate CockroachDB's disaster recovery features, consider your organiza When you use backups, RPO and RTO can be visualized as follows: -Simulating RPO and RTO. With RPO representing the tolerable data loss, and RTO representing the tolerable time to recovery. +Simulating RPO and RTO. With RPO representing the tolerable data loss, and RTO representing the tolerable time to recovery. {{site.data.alerts.callout_info}} For an overview of resiliency features in CockroachDB, refer to [Data Resilience]({% link {{ page.version.version }}/data-resilience.md %}). diff --git a/src/current/v25.3/enable-node-map.md b/src/current/v25.3/enable-node-map.md index a9be5a10e49..d9028d36b53 100644 --- a/src/current/v25.3/enable-node-map.md +++ b/src/current/v25.3/enable-node-map.md @@ -15,7 +15,7 @@ This page guides you through the process of setting up and enabling the Node Map -DB Console +DB Console ## Set up and enable the Node Map @@ -99,17 +99,17 @@ To start a new cluster with the correct `--locality` flags: 1. [Access the DB Console]({% link {{ page.version.version }}/ui-overview.md %}#db-console-access). -1. If the node list displays, click the selector Node map selector and select **Node Map**. +1. If the node list displays, click the selector Node map selector and select **Node Map**. The following page is displayed: -DB Console +DB Console ### Step 2. Set the Enterprise license and refresh the DB Console The Node Map should now be displaying the highest-level localities you defined: -DB Console +DB Console {{site.data.alerts.callout_info}} To be displayed on the world map, localities must be assigned a corresponding latitude and longitude. @@ -140,7 +140,7 @@ For the latitudes and longitudes of AWS, Azure, and Google Cloud regions, see [L Refresh the DB Console to see the updated Node Map: -DB Console +DB Console ### Step 5. Navigate the Node Map @@ -148,11 +148,11 @@ To navigate to Node 2, which is in datacenter `us-east-1a` in the `us-east-1` re 1. Click the map component marked as **region=us-east-1** on the Node Map. The [locality component]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}#locality-component) for the datacenter is displayed. - DB Console + DB Console 1. Click the datacenter component marked as **datacenter=us-east-1a**. The individual [node components]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}#node-component) are displayed. - DB Console + DB Console 1. To navigate back to the cluster view, either click **Cluster** in the breadcrumb trail at the top of the Node Map, or click **Up to REGION=US-EAST-1** and then click **Up to CLUSTER** in the lower left-hand side of the Node Map. @@ -165,7 +165,7 @@ To navigate to Node 2, which is in datacenter `us-east-1a` in the `us-east-1` re To verify all requirements, navigate to the [**Localities**]({% link {{ page.version.version }}/ui-debug-pages.md %}#configuration) debug page in the DB Console. -DB Console +DB Console The **Localities** debug page displays the following: diff --git a/src/current/v25.3/explain.md b/src/current/v25.3/explain.md index 68aea1fc386..1d62a9312a3 100644 --- a/src/current/v25.3/explain.md +++ b/src/current/v25.3/explain.md @@ -886,7 +886,7 @@ The output of `EXPLAIN (DISTSQL)` is a URL for a graphical diagram that displays To view the [DistSQL plan diagram]({% link {{ page.version.version }}/explain-analyze.md %}#distsql-plan-diagram), open the URL. You should see the following: -EXPLAIN (DISTSQL) +EXPLAIN (DISTSQL) To include the data types of the input columns in the physical plan, use `EXPLAIN(DISTSQL, TYPES)`: @@ -903,7 +903,7 @@ EXPLAIN (DISTSQL, TYPES) SELECT l_shipmode, AVG(l_extendedprice) FROM lineitem G Open the URL. You should see the following: -EXPLAIN (DISTSQL) +EXPLAIN (DISTSQL) ### Find the indexes and key ranges a query uses diff --git a/src/current/v25.3/geojson.md b/src/current/v25.3/geojson.md index 28699449288..6ee553e9f0c 100644 --- a/src/current/v25.3/geojson.md +++ b/src/current/v25.3/geojson.md @@ -189,7 +189,7 @@ The JSON below is modified from the output above: it is grouped into a GeoJSON ` Here is the geometry described above as shown on [geojson.io](http://geojson.io): -GeoJSON.io output +GeoJSON.io output ## See also diff --git a/src/current/v25.3/geoserver.md b/src/current/v25.3/geoserver.md index 9c394a084f1..27371d9d2c6 100644 --- a/src/current/v25.3/geoserver.md +++ b/src/current/v25.3/geoserver.md @@ -174,7 +174,7 @@ In the row for the `roads` layer, click the **OpenLayers** button under the **Co Your browser should open a new tab with the title **OpenLayers map preview**. It should show a map view that looks like the following: -GeoServer U.S. National Atlas preview +GeoServer U.S. National Atlas preview ## See also diff --git a/src/current/v25.3/how-does-a-changefeed-work.md b/src/current/v25.3/how-does-a-changefeed-work.md index 412c11011af..092fdd37972 100644 --- a/src/current/v25.3/how-does-a-changefeed-work.md +++ b/src/current/v25.3/how-does-a-changefeed-work.md @@ -9,7 +9,7 @@ When a changefeed that will emit changes to a sink is started on a node, that no Each node uses its _aggregator processors_ to send back checkpoint progress to the coordinator, which gathers this information to update the _high-water mark timestamp_. The high-water mark acts as a checkpoint for the changefeed’s job progress, and guarantees that all changes before (or at) the timestamp have been emitted. In the unlikely event that the changefeed’s coordinating node were to fail during the job, that role will move to a different node and the changefeed will restart from the last checkpoint. If restarted, the changefeed may [re-emit messages]({% link {{ page.version.version }}/changefeed-messages.md %}#duplicate-messages) starting at the high-water mark time to the current time. Refer to [Ordering Guarantees]({% link {{ page.version.version }}/changefeed-messages.md %}#ordering-and-delivery-guarantees) for detail on CockroachDB's at-least-once-delivery-guarantee and how per-key message ordering is applied. -Changefeed process in a 3-node cluster +Changefeed process in a 3-node cluster With [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) specified when a changefeed is started, the coordinator will send the resolved timestamp (i.e., the high-water mark) to each endpoint in the sink. For example, when using [Kafka]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka) this will be sent as a message to each partition; for [cloud storage]({% link {{ page.version.version }}/changefeed-sinks.md %}#cloud-storage-sink), this will be emitted as a resolved timestamp file. diff --git a/src/current/v25.3/kibana.md b/src/current/v25.3/kibana.md index a0e77c7c1ad..75e2be2c3de 100644 --- a/src/current/v25.3/kibana.md +++ b/src/current/v25.3/kibana.md @@ -83,11 +83,11 @@ Open the Kibana web interface and click **Dashboard**. Search for the CockroachDB dashboard: -CockroachDB dashboard selection for Metricbeat +CockroachDB dashboard selection for Metricbeat Click the dashboard title to open the dashboard, which presents metrics on replicas and query performance: -CockroachDB Overview dashboard for Metricbeat +CockroachDB Overview dashboard for Metricbeat ## Step 4. Run a sample workload @@ -109,7 +109,7 @@ cockroach workload run movr --duration=5m 'postgresql://root@localhost:26257?ssl Click **Refresh**. The query metrics will appear on the dashboard: -CockroachDB Overview dashboard for Metricbeat with SQL metrics +CockroachDB Overview dashboard for Metricbeat with SQL metrics ## See also diff --git a/src/current/v25.3/log-sql-activity-to-datadog.md b/src/current/v25.3/log-sql-activity-to-datadog.md index 0e077b86506..103a75e8930 100644 --- a/src/current/v25.3/log-sql-activity-to-datadog.md +++ b/src/current/v25.3/log-sql-activity-to-datadog.md @@ -145,7 +145,7 @@ Each `sampled_query` and `sampled_transaction` event has an `event.TransactionID 1. Navigate to [**Datadog > Logs**](https://app.datadoghq.com/logs). 1. Search for `@event.EventType:(sampled_query OR sampled_transaction)` to see the logs for the query and transaction events that are emitted. For example: -Datadog Telemetry Logs +Datadog Telemetry Logs ## See also diff --git a/src/current/v25.3/logical-data-replication-overview.md b/src/current/v25.3/logical-data-replication-overview.md index b1078d55396..2ec95433be4 100644 --- a/src/current/v25.3/logical-data-replication-overview.md +++ b/src/current/v25.3/logical-data-replication-overview.md @@ -29,13 +29,13 @@ For a comparison of CockroachDB high availability and resilience features and to Maintain [high availability]({% link {{ page.version.version }}/data-resilience.md %}#high-availability) and resilience to region failures with a two-datacenter topology. You can run bidirectional LDR to ensure [data resilience]({% link {{ page.version.version }}/data-resilience.md %}) in your deployment, particularly in datacenter or region failures. If you set up two single-region clusters, in LDR, both clusters can receive application reads and writes with low, single-region write latency. Then, in a datacenter, region, or cluster outage, you can redirect application traffic to the surviving cluster with [low downtime]({% link {{ page.version.version }}/data-resilience.md %}#high-availability). In the following diagram, the two single-region clusters are deployed in US East and West to provide low latency for that region. The two LDR jobs ensure that the tables on both clusters will reach eventual consistency. -Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. +Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. ### Achieve workload isolation between clusters Isolate critical application workloads from non-critical application workloads. For example, you may want to run jobs like [changefeeds]({% link {{ page.version.version }}/change-data-capture-overview.md %}) or [backups]({% link {{ page.version.version }}/backup-and-restore-overview.md %}) from one cluster to isolate these jobs from the cluster receiving the principal application traffic. -Diagram showing unidirectional LDR from a source cluster to a destination cluster with the destination cluster supporting secondary workloads plus jobs and the source cluster accepting the main application traffic. +Diagram showing unidirectional LDR from a source cluster to a destination cluster with the destination cluster supporting secondary workloads plus jobs and the source cluster accepting the main application traffic. ## Features diff --git a/src/current/v25.3/map-sql-activity-to-app.md b/src/current/v25.3/map-sql-activity-to-app.md index 33ec23e45a4..51d9c4953d0 100644 --- a/src/current/v25.3/map-sql-activity-to-app.md +++ b/src/current/v25.3/map-sql-activity-to-app.md @@ -22,7 +22,7 @@ SET application_name = movr_app; Once you set the application name, the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) lets you [filter database workloads by application name]({% link {{ page.version.version }}/ui-statements-page.md %}#filter). -Movr app filter +Movr app filter If parts of your applications or known microservices are experiencing performance degradation, you can filter for the database workload tracing statements and transactions back to that part of your application directly in the DB Console. You can quickly identify whether there were database performance problems and if so, troubleshoot the issue using [SQL observability touch points](#trace-sql-activity-using-metrics) in the DB Console. diff --git a/src/current/v25.3/monitor-and-analyze-transaction-contention.md b/src/current/v25.3/monitor-and-analyze-transaction-contention.md index 8174f342c0b..3fac08a9dba 100644 --- a/src/current/v25.3/monitor-and-analyze-transaction-contention.md +++ b/src/current/v25.3/monitor-and-analyze-transaction-contention.md @@ -40,7 +40,7 @@ In the DB Console, in the cluster view, this rate is averaged across all nodes, The following image from the DB Console was taken from a cluster running more than 50,000 queries per second with around 2 contention events per second. This contention is unlikely to have an impact on the workload. -DB Console SQL Statement Contention graph +DB Console SQL Statement Contention graph ### SQL Activity pages @@ -54,7 +54,7 @@ The [**Contention Time** column]({% link {{ page.version.version }}/ui-statement The following image shows the **Statements** page with the top 3 statement fingerprints by Contention Time in a cluster containing the test data from the [Analyze using `crdb_internal` tables](#analyze-using-crdb_internal-tables) section. -Statements page by Contention Time +Statements page by Contention Time #### Transactions page @@ -64,7 +64,7 @@ The [**Contention Time** column]({% link {{ page.version.version }}/ui-transacti The following image shows the **Transactions** page with the top 3 transactions fingerprints by Contention Time in a cluster containing the test data in the [Analyze using `crdb_internal` tables](#analyze-using-crdb_internal-tables) section. -Transactions page by Contention Time +Transactions page by Contention Time ### Insights page @@ -377,15 +377,15 @@ This section applies a variation of the previously described analysis process to Review the [DB Console Metrics]({% link {{ page.version.version }}/ui-overview.md %}#metrics) graphs to get a high-level understanding of the contention events. The [SQL Statement Errors]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#sql-statement-errors) graph shows an increase of errors during the time period of 9:16 to 9:23 UTC: -DB Console SQL Statement Errors graph +DB Console SQL Statement Errors graph The [SQL Statement Contention]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#sql-statement-contention) graph shows a corresponding increase between 9:16 and 9:23 UTC: -DB Console SQL Statement Contention graph +DB Console SQL Statement Contention graph The [Transaction Restarts]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#transaction-restarts) graph also shows a corresponding increase between 9:16 and 9:23 UTC: -DB Console Transaction Restarts graph +DB Console Transaction Restarts graph These graphs help to understand the incident at a high-level, but not the specific transactions that are involved. To understand that, query the `crdb_internal.transaction_contention_events` table. diff --git a/src/current/v25.3/monitor-cockroachdb-kubernetes.md b/src/current/v25.3/monitor-cockroachdb-kubernetes.md index 283144ff389..a2adae4ab1b 100644 --- a/src/current/v25.3/monitor-cockroachdb-kubernetes.md +++ b/src/current/v25.3/monitor-cockroachdb-kubernetes.md @@ -167,11 +167,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_success}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in {% if page.secure == true %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% else %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% endif %} and then point your browser to the [Prometheus endpoint]({% link {{ page.version.version }}/prometheus-endpoint.md %}). @@ -242,11 +242,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to http://localhost:9093 in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening http://localhost:9090/status. The screen should look like this: - Alertmanager + Alertmanager 1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): @@ -262,11 +262,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening http://localhost:9090/rules. The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening http://localhost:9090/alerts. The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: diff --git a/src/current/v25.3/monitor-cockroachdb-operator.md b/src/current/v25.3/monitor-cockroachdb-operator.md index 0d8656e4cce..2d0664e4e4b 100644 --- a/src/current/v25.3/monitor-cockroachdb-operator.md +++ b/src/current/v25.3/monitor-cockroachdb-operator.md @@ -105,11 +105,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_info}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in [Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-cockroachdb-operator.md %}#step-4-access-the-db-console) and then point your browser to [http://localhost:8080/_status/vars](http://localhost:8080/_status/vars). @@ -174,11 +174,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to [http://localhost:9093](http://localhost:9093/) in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening [http://localhost:9090/status](http://localhost:9090/status). The screen should look like this: - Alertmanager + Alertmanager 1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): @@ -193,11 +193,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening [http://localhost:9090/rules](http://localhost:9090/rules). The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening [http://localhost:9090/alerts](http://localhost:9090/alerts). The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: 1. Use the `kubectl edit` command to open the rules for editing: diff --git a/src/current/v25.3/monitoring-and-alerting.md b/src/current/v25.3/monitoring-and-alerting.md index aef34384aa6..348aa3bbe36 100644 --- a/src/current/v25.3/monitoring-and-alerting.md +++ b/src/current/v25.3/monitoring-and-alerting.md @@ -143,7 +143,7 @@ The `/_status/vars` metrics endpoint is in Prometheus format and is not deprecat Several endpoints return raw status meta information in JSON at `http://:/#/debug`. You can investigate and use these endpoints, but note that they are subject to change. -Raw Status Endpoints +Raw Status Endpoints ### Node status command diff --git a/src/current/v25.3/node-shutdown.md b/src/current/v25.3/node-shutdown.md index 9a7f2087c21..3f2e463a336 100644 --- a/src/current/v25.3/node-shutdown.md +++ b/src/current/v25.3/node-shutdown.md @@ -311,25 +311,25 @@ This can lead to disk utilization imbalance across nodes. **This is expected beh In this scenario, each range is replicated 3 times, with each replica on a different node: -
Decommission Scenario 1
+
Decommission Scenario 1
If you try to decommission a node, the process will hang indefinitely because the cluster cannot move the decommissioning node's replicas to the other 2 nodes, which already have a replica of each range: -
Decommission Scenario 1
+
Decommission Scenario 1
To successfully decommission a node in this cluster, you need to **add a 4th node**. The decommissioning process can then complete: -
Decommission Scenario 1
+
Decommission Scenario 1
#### 5-node cluster with 3-way replication In this scenario, like in the scenario above, each range is replicated 3 times, with each replica on a different node: -
Decommission Scenario 1
+
Decommission Scenario 1
If you decommission a node, the process will run successfully because the cluster will be able to move the node's replicas to other nodes without doubling up any range replicas: -
Decommission Scenario 1
+
Decommission Scenario 1
diff --git a/src/current/v25.3/performance-benchmarking-with-tpcc-large.md b/src/current/v25.3/performance-benchmarking-with-tpcc-large.md index 7d687ecce0c..d24ab1d97ce 100644 --- a/src/current/v25.3/performance-benchmarking-with-tpcc-large.md +++ b/src/current/v25.3/performance-benchmarking-with-tpcc-large.md @@ -197,7 +197,7 @@ CockroachDB comes with a number of [built-in workloads]({% link {{ page.version. - To monitor the number of lease transfers, open the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}), select the **Replication** dashboard, hover over the **Range Operations** graph, and check the **Lease Transfers** data point. - To check the number of snapshots, open the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}), select the **Replication** dashboard, and hover over the **Snapshots** graph. - TPC-C 140k replication and partitioning dashboards + TPC-C 140k replication and partitioning dashboards ## Step 7. Allocate partitions diff --git a/src/current/v25.3/performance-recipes.md b/src/current/v25.3/performance-recipes.md index 6aac3ddd7f9..bd756e2fabe 100644 --- a/src/current/v25.3/performance-recipes.md +++ b/src/current/v25.3/performance-recipes.md @@ -113,7 +113,7 @@ These are indicators that lock contention occurred in the past: {{site.data.alerts.end}} - The **SQL Statement Contention** graph ([CockroachDB {{ site.data.products.cloud }} Console]({% link cockroachcloud/metrics-sql.md %}#sql-statement-contention) and [DB Console]({% link {{ page.version.version }}/ui-sql-dashboard.md %}#sql-statement-contention)) is showing spikes over time. - SQL Statement Contention graph in DB Console + SQL Statement Contention graph in DB Console If a long-running transaction is waiting due to [lock contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention): @@ -150,7 +150,7 @@ When running under `SERIALIZABLE` isolation, implement [client-side retry handli If you see many waiting transactions, a single long-running transaction may be blocking transactions that are, in turn, blocking others. In this case, sort the table by **Time Spent Waiting** to find the transaction that has been waiting for the longest amount of time. Unblocking this transaction may unblock the other transactions. {{site.data.alerts.end}} Click the transaction's execution ID and view the following transaction execution details: - Movr rides transactions + Movr rides transactions - **Last Retry Reason** shows the last [transaction retry error](#transaction-retry-error) received for the transaction, if applicable. - The details of the **blocking** transaction, directly below the **Contention Insights** section. Click the blocking transaction to view its details. @@ -158,7 +158,7 @@ When running under `SERIALIZABLE` isolation, implement [client-side retry handli 1. [Identify the **blocking** transaction](#identify-conflicting-transactions) and view its transaction execution details. 1. Click its **Session ID** to open the **Session Details** page. - Sessions Details Page + Sessions Details Page 1. Click **Cancel Statement** to cancel the **Most Recent Statement** and thus the transaction, or click **Cancel Session** to cancel the session issuing the transaction. ##### Identify transactions and objects that experienced lock contention @@ -294,7 +294,7 @@ If the [Overview dashboard]({% link {{ page.version.version }}/ui-overview-dashb In the DB Console, the [Tables List Tab]({% link {{ page.version.version }}/ui-databases-page.md %}#tables-list-tab) of the [Database Details Page]({% link {{ page.version.version }}/ui-databases-page.md %}#database-details-page) for a given database shows the percentage of live data for each table. For example: -Table live data +Table live data In this example, at `37.3%` the `vehicles` table would be considered to have a low percentage of live data. In the worst cases, the percentage can be `0%`. diff --git a/src/current/v25.3/performance.md b/src/current/v25.3/performance.md index cb0492b8774..249ac9abbc4 100644 --- a/src/current/v25.3/performance.md +++ b/src/current/v25.3/performance.md @@ -22,7 +22,7 @@ For a refresher on what exactly TPC-C is and how it is measured, see [Benchmark CockroachDB achieves this performance in [`SERIALIZABLE` isolation]({% link {{ page.version.version }}/demo-serializable.md %}), the strongest isolation level in the SQL standard. -TPC-C 140,000 +TPC-C 140,000 | Metric | CockroachDB 19.2 | CockroachDB 21.1 | |-------------------------------------------------+------------------+------------------| @@ -37,7 +37,7 @@ CockroachDB achieves this performance in [`SERIALIZABLE` isolation]({% link {{ p CockroachDB has **no theoretical scaling limit** and, in practice, can achieve near-linear performance at 256 nodes. Because the TPC-C results reflect leaps in scale, to test linear scaling, Cockroach Labs ran a simple benchmark named KV 95 (95% point reads, 5% point writes, all uniformly distributed) on AWS `c5d.4xlarge` machines: -CRDB Linear Scale +CRDB Linear Scale This chart shows that adding nodes increases throughput linearly while holding p50 and p99 latency constant. The concurrency for each scale was chosen to optimize throughput while maintaining an acceptable latency and can be observed in the following table. diff --git a/src/current/v25.3/physical-cluster-replication-technical-overview.md b/src/current/v25.3/physical-cluster-replication-technical-overview.md index 07cfea4a2ea..1f0d79af063 100644 --- a/src/current/v25.3/physical-cluster-replication-technical-overview.md +++ b/src/current/v25.3/physical-cluster-replication-technical-overview.md @@ -27,7 +27,7 @@ The stream initialization proceeds as follows: 1. The initial scan runs on the primary and backfills all data from the primary virtual cluster as of the starting timestamp of the replication stream. 1. Once the initial scan is complete, the primary then begins streaming all changes from the point of the starting timestamp. -Two virtualized clusters with system virtual cluster and application virtual cluster showing the directional stream. +Two virtualized clusters with system virtual cluster and application virtual cluster showing the directional stream. #### Start-up sequence with read on standby @@ -55,7 +55,7 @@ If the primary cluster does not receive replicated time information from the sta The tracked replicated time and the advancing protected timestamp allow the replication stream to also track _retained time_, which is a timestamp in the past indicating the lower bound that the replication stream could fail over to. The retained time can be up to 4 hours in the past, due to the protected timestamp. Therefore, the _failover window_ for a replication job falls between the retained time and the replicated time. -Timeline showing how the failover window is between the retained time and replicated time. +Timeline showing how the failover window is between the retained time and replicated time. _Replication lag_ is the time between the most up-to-date replicated time and the actual time. While the replication keeps as current as possible to the actual time, this replication lag window is where there is potential for data loss. diff --git a/src/current/v25.3/query-behavior-troubleshooting.md b/src/current/v25.3/query-behavior-troubleshooting.md index 2724a877083..59f06e4a84d 100644 --- a/src/current/v25.3/query-behavior-troubleshooting.md +++ b/src/current/v25.3/query-behavior-troubleshooting.md @@ -58,23 +58,23 @@ You can look more closely at the behavior of a statement by visualizing a [state 1. Click **JSON File** in the Jaeger UI and upload `trace-jaeger.json` from the diagnostics bundle. The trace will appear in the list on the right. - Jaeger Trace Upload JSON + Jaeger Trace Upload JSON 1. Click the trace to view its details. It is visualized as a collection of spans with timestamps. These may include operations executed by different nodes. - Jaeger Trace Spans + Jaeger Trace Spans The full timeline displays the execution time and [execution phases]({% link {{ page.version.version }}/architecture/sql-layer.md %}#sql-parser-planner-executor) for the statement. 1. Click a span to view details for that span and log messages. - Jaeger Trace Log Messages + Jaeger Trace Log Messages 1. You can troubleshoot [transaction contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention), for example, by gathering [diagnostics]({% link {{ page.version.version }}/ui-statements-page.md %}#diagnostics) on statements with high latency and looking through the log messages in `trace-jaeger.json` for jumps in latency. In the following example, the trace shows that there is significant latency between a push attempt on a transaction that is holding a [lock]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#writing) (56.85ms) and that transaction being committed (131.37ms). - Jaeger Trace Log Messages + Jaeger Trace Log Messages #### Visualize traces sent directly from CockroachDB @@ -93,7 +93,7 @@ Enabling full tracing is expensive both in terms of CPU usage and memory footpri 1. Go to [`http://localhost:16686`](http://localhost:16686). 1. In the Service field, select **CockroachDB**. - Jaeger Trace Log Messages + Jaeger Trace Log Messages 1. Click **Find Traces**. diff --git a/src/current/v25.3/query-spatial-data.md b/src/current/v25.3/query-spatial-data.md index 882c95eda5c..678918809cc 100644 --- a/src/current/v25.3/query-spatial-data.md +++ b/src/current/v25.3/query-spatial-data.md @@ -279,7 +279,7 @@ We can see that almost half of all of the tornadoes in this outbreak began in Ok It might be interesting to draw these points on a map. The image below shows the points from the query above drawn as a simple polygon on a map of Oklahoma. The boxes around the polygon show the [spatial index]({% link {{ page.version.version }}/spatial-indexes.md %}) coverings for the polygon. -1999 Oklahoma tornado outbreak map view +1999 Oklahoma tornado outbreak map view (Map data © 2020 Google) diff --git a/src/current/v25.3/secure-a-cluster.md b/src/current/v25.3/secure-a-cluster.md index 84e1d00594c..c54abe3d4a4 100644 --- a/src/current/v25.3/secure-a-cluster.md +++ b/src/current/v25.3/secure-a-cluster.md @@ -309,7 +309,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -319,7 +319,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. @@ -349,7 +349,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Back in the DB Console, despite one node being "suspect", notice the continued SQL traffic: - DB Console + DB Console 1. Restart node 3: @@ -393,7 +393,7 @@ Adding capacity is as simple as starting more nodes with `cockroach start`. 1. Back on the **Cluster Overview** in the DB Console, you'll now see 5 nodes listed: - DB Console + DB Console At first, the replica count will be lower for nodes 4 and 5. Very soon, however, you'll see those numbers even out across all nodes, indicating that data is being [automatically rebalanced]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) to utilize the additional capacity of the new nodes. diff --git a/src/current/v25.3/set-up-logical-data-replication.md b/src/current/v25.3/set-up-logical-data-replication.md index f557cf31ef9..79f27ffb6c6 100644 --- a/src/current/v25.3/set-up-logical-data-replication.md +++ b/src/current/v25.3/set-up-logical-data-replication.md @@ -15,7 +15,7 @@ In this tutorial, you will set up [**logical data replication (LDR)**]({% link { In the following diagram, **LDR stream 1** creates a unidirectional LDR setup. Introducing **LDR stream 2** extends the setup to bidirectional. -Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. +Diagram showing bidirectional LDR from cluster A to B and back again from cluster B to A. For more details on use cases, refer to the [Logical Data Replication Overview]({% link {{ page.version.version }}/logical-data-replication-overview.md %}). diff --git a/src/current/v25.3/show-trace.md b/src/current/v25.3/show-trace.md index 7c37b929c94..44b96c85267 100644 --- a/src/current/v25.3/show-trace.md +++ b/src/current/v25.3/show-trace.md @@ -48,7 +48,7 @@ Concept | Description Consider a visualization of a trace for one statement as [visualized by Jaeger]({% link {{ page.version.version }}/query-behavior-troubleshooting.md %}#visualize-statement-traces-in-jaeger). The image shows spans and log messages. You can see names of operations and sub-operations, along with parent-child relationships and timing information, and it's easy to see which operations are executed in parallel. -Jaeger Trace Log Messages +Jaeger Trace Log Messages ## Response diff --git a/src/current/v25.3/spatial-indexes.md b/src/current/v25.3/spatial-indexes.md index d7687648ca4..ab9775e4af6 100644 --- a/src/current/v25.3/spatial-indexes.md +++ b/src/current/v25.3/spatial-indexes.md @@ -56,15 +56,15 @@ Whichever approach to indexing is used, when an object is indexed, a "covering" Under the hood, CockroachDB uses the [S2 geometry library](https://s2geometry.io/) to divide the space being indexed into a [quadtree](https://wikipedia.org/wiki/Quadtree) data structure with a set number of levels and a data-independent shape. Each node in the quadtree (really, [S2 cell](https://s2geometry.io/devguide/s2cell_hierarchy.html)) represents some part of the indexed space and is divided once horizontally and once vertically to produce 4 child cells in the next level. The following image shows visually how a location (marked in red) is represented using levels of a quadtree: -Quadtree +Quadtree Visually, you can think of the S2 library as enclosing a sphere in a cube. We map from points on each face of the cube to points on the face of the sphere. As you can see in the following 2-dimensional picture, there is a projection that occurs in this mapping: the lines entering from the left mark points on the cube face, and are "refracted" by the material of the cube face before touching the surface of the sphere. This projection reduces the distortion that would occur if the points on the cube face were projected straight onto the sphere. -S2 Cubed Sphere - 2D +S2 Cubed Sphere - 2D Next, let's look at a 3-dimensional image that shows the cube and sphere more clearly. Each cube face is mapped to the quadtree data structure mentioned, and each node in the quadtree is numbered using a [Hilbert space-filling curve](https://wikipedia.org/wiki/Hilbert_curve) which preserves locality of reference. In the following image, you can imagine the points of the Hilbert curve on the rear face of the cube being projected onto the sphere in the center. The use of a space-filling curve means that two shapes that are near each other on the sphere are very likely to be near each other on the line that makes up the Hilbert curve. This is good for performance. -S2 Cubed Sphere - 3D +S2 Cubed Sphere - 3D When you index a spatial object, a covering is computed using some number of the cells in the quadtree. The number of covering cells can vary per indexed object by passing special arguments to `CREATE INDEX` that tell CockroachDB how many levels of S2 cells to use. The leaf nodes of the S2 quadtree are at level 30, and for `GEOGRAPHY` measure 1cm across the Earth's surface. By default, `GEOGRAPHY` indexes use up to level 30, and get this level of precision. We also use S2 cell coverings in a slightly different way for `GEOMETRY` indexes. The precision you get there is the bounding length of the `GEOMETRY` index divided by 4^30. For more information, see [Tuning spatial indexes](#tuning-spatial-indexes). @@ -99,11 +99,11 @@ We will generate coverings for the following geometry object, which describes a The animated following image shows the S2 coverings that are generated as we increase the `s2_max_cells` parameter from the 1 to 30 (minimum to maximum): -Animated GIF of S2 Coverings - Levels 1 to 30 +Animated GIF of S2 Coverings - Levels 1 to 30 Here are the same images presented in a grid. You can see that as we turn up the `s2_max_cells` parameter, more work is done by CockroachDB to discover a tighter and tighter covering (that is, a covering using more and smaller cells). The covering for this particular shape reaches a reasonable level of accuracy when `s2_max_cells` reaches 10, and stops improving much past 12. -Static image of S2 Coverings - Levels 1 to 30 +Static image of S2 Coverings - Levels 1 to 30 ### Index tuning parameters @@ -149,7 +149,7 @@ SELECT ST_AsGeoJSON(st_collect(geom)) FROM tmp_viz; When you paste the JSON output into [geojson.io](http://geojson.io), it generates the following picture, which shows both the `LINESTRING` and its S2 covering based on the options you passed to `st_s2covering`. -S2 LINESTRING example covering +S2 LINESTRING example covering ### Create a spatial index diff --git a/src/current/v25.3/spatial-tutorial.md b/src/current/v25.3/spatial-tutorial.md index 6c291c71cfa..bf735930eab 100644 --- a/src/current/v25.3/spatial-tutorial.md +++ b/src/current/v25.3/spatial-tutorial.md @@ -158,7 +158,7 @@ FROM Paste the result above into and you should see the following map, with gray markers for each loon sighting from the bird survey. -Common Loon sightings in the years 2000-2019 in NY state +Common Loon sightings in the years 2000-2019 in NY state ### (2) What is the total area of Loon sightings? @@ -561,7 +561,7 @@ WHERE Paste the result above into and you should see the following map: -Convex hull of bookstore locations within Common Loon habitat +Convex hull of bookstore locations within Common Loon habitat ### (10) What is the area of the shape of all bookstore locations that are in the Loon's habitat range within NY state? @@ -702,7 +702,7 @@ The result is a very large chunk of JSON: Paste the result above into and you should see the following map: -What does the route from Mysteries on Main Street in Johnstown, NY to The Book Nook in Saranac Lake, NY look like? +What does the route from Mysteries on Main Street in Johnstown, NY to The Book Nook in Saranac Lake, NY look like? ### (13) What were the 25 most-commonly-sighted birds in 2019 within 10 miles of the route between Mysteries on Main Street in Johnstown, NY and The Bookstore Plus in Lake Placid, NY? @@ -1687,7 +1687,7 @@ The `tutorial` database contains the following tables: Below is an entity-relationship diagram showing the `bookstores` and `bookstore_routes` tables (generated using [DBeaver]({% link {{ page.version.version }}/dbeaver.md %})): -tutorial.bookstores and tutorial.bookstore_routes ER diagrams +tutorial.bookstores and tutorial.bookstore_routes ER diagrams As mentioned above, the `bookstores` table was created by scraping web data from the [American Booksellers Association website's member directory](https://bookweb.org/member_directory/search/ABAmember). In addition, the `geom` column was constructed by doing some [address geocoding](https://wikipedia.org/wiki/Address_geocoding) that converted each bookstore's address to a lon/lat pair and converted to a spatial object using `ST_MakePoint`. For each bookstore, the script did a bit of parsing and geocoding and ran essentially the following query: @@ -1751,7 +1751,7 @@ There are multiple ways to do geocoding. You can use REST API-based services or Meanwhile, the `roads` table has many columns; the most important ones used in this tutorial are `state`, `geom`, `miles`, and `prime_name` (the human-readable name of the road). -tutorial.roads ER diagrams +tutorial.roads ER diagrams For more information about what the other columns in `roads` mean, see the [full data set description](https://www.sciencebase.gov/catalog/file/get/581d052be4b08da350d524ce?f=__disk__60%2F6b%2F4e%2F606b4e564884da8cca57ffeb229cd817006616e0&transform=1&allowOpen=true). @@ -1769,7 +1769,7 @@ The tables in the `birds` database are diagrammed below: - `routes` is a list of ~130 prescribed locations that the birdwatchers helping with the survey visit each year. The `geom` associated with each route is a [Point]({% link {{ page.version.version }}/point.md %}) marking the latitude and longitude of the route's starting point. For details, see the [schema](https://www.sciencebase.gov/catalog/file/get/5ea04e9a82cefae35a129d65?f=__disk__b4%2F2f%2Fcf%2Fb42fcfe28a799db6e8c97200829ea1ebaccbf8ea&transform=1&allowOpen=true) (search for the text "routes.csv"). - `observations` describes the ~85,000 times and places in which birds of various species were actually seen. The `bird_id` is a [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) to the ID in the `birds` table, and the `route_id` points to the ID of the `routes` table. -birds.birds, birds.routes, and birds.observations ER diagrams +birds.birds, birds.routes, and birds.observations ER diagrams Each of these tables were populated using a script that parsed [the CSV files available for download](https://www.sciencebase.gov/catalog/item/52b1dfa8e4b0d9b325230cd9) and added the data using [`INSERT`]({% link {{ page.version.version }}/insert.md %}) statements. For the `routes` table, once again the `ST_MakePoint` function was used to create a geometry from the lon/lat values in the CSV as follows: diff --git a/src/current/v25.3/st_contains.md b/src/current/v25.3/st_contains.md index 09f0d8fbc68..902bcf78b24 100644 --- a/src/current/v25.3/st_contains.md +++ b/src/current/v25.3/st_contains.md @@ -53,7 +53,7 @@ SELECT ST_Contains(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Contains - true +ST_Contains - true ### False @@ -75,7 +75,7 @@ SELECT st_contains(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Contains - false +ST_Contains - false ## See also diff --git a/src/current/v25.3/st_convexhull.md b/src/current/v25.3/st_convexhull.md index 5c42f7bb837..c047172aef9 100644 --- a/src/current/v25.3/st_convexhull.md +++ b/src/current/v25.3/st_convexhull.md @@ -235,7 +235,7 @@ In this example, we will generate the convex hull of a single geometry. The geo 1. Paste the JSON emitted in the previous step into [geojson.io](http://geojson.io) and you should see an image like the following, which shows the convex hull surrounding the locations of [most of the independent bookstores in New York State](https://www.bookweb.org/member_directory/search/ABAmember/results/0/0/ny/0): - ST_ConvexHull example + ST_ConvexHull example 1. Finally, drop the temporary table if you no longer need it: diff --git a/src/current/v25.3/st_coveredby.md b/src/current/v25.3/st_coveredby.md index cda571de62d..20a3e2d0095 100644 --- a/src/current/v25.3/st_coveredby.md +++ b/src/current/v25.3/st_coveredby.md @@ -48,7 +48,7 @@ SELECT ST_CoveredBy(st_geomfromtext('SRID=4326;POLYGON((-87.623177 41.881832, -9 (1 row) ~~~ -ST_CoveredBy - true +ST_CoveredBy - true ### False @@ -68,7 +68,7 @@ SELECT ST_CoveredBy(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -9 (1 row) ~~~ -ST_CoveredBy - false +ST_CoveredBy - false ## See also diff --git a/src/current/v25.3/st_covers.md b/src/current/v25.3/st_covers.md index 0b670205cda..4b0dfeb46c9 100644 --- a/src/current/v25.3/st_covers.md +++ b/src/current/v25.3/st_covers.md @@ -50,7 +50,7 @@ SELECT ST_Covers(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Covers - true +ST_Covers - true ### False @@ -70,7 +70,7 @@ SELECT ST_Covers(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Covers - false +ST_Covers - false ## See also diff --git a/src/current/v25.3/st_disjoint.md b/src/current/v25.3/st_disjoint.md index 342258d5bf6..728ab81e861 100644 --- a/src/current/v25.3/st_disjoint.md +++ b/src/current/v25.3/st_disjoint.md @@ -49,7 +49,7 @@ SELECT st_disjoint(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Disjoint - true +ST_Disjoint - true ### False @@ -69,7 +69,7 @@ SELECT st_disjoint(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Disjoint - false +ST_Disjoint - false ## See also diff --git a/src/current/v25.3/st_equals.md b/src/current/v25.3/st_equals.md index a284cff7e21..60d5a77546a 100644 --- a/src/current/v25.3/st_equals.md +++ b/src/current/v25.3/st_equals.md @@ -45,7 +45,7 @@ SELECT st_equals(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Equals - true +ST_Equals - true ### False @@ -65,7 +65,7 @@ SELECT st_equals(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Equals - false +ST_Equals - false ## See also diff --git a/src/current/v25.3/st_intersects.md b/src/current/v25.3/st_intersects.md index b1f868d9bd6..cde54438b70 100644 --- a/src/current/v25.3/st_intersects.md +++ b/src/current/v25.3/st_intersects.md @@ -46,7 +46,7 @@ SELECT st_intersects(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, - (1 row) ~~~ -ST_Intersects - true +ST_Intersects - true ### False @@ -66,7 +66,7 @@ SELECT st_intersects(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, - (1 row) ~~~ -ST_Intersects - false +ST_Intersects - false ## See also diff --git a/src/current/v25.3/st_overlaps.md b/src/current/v25.3/st_overlaps.md index 7b471084e33..1da1d60011e 100644 --- a/src/current/v25.3/st_overlaps.md +++ b/src/current/v25.3/st_overlaps.md @@ -47,7 +47,7 @@ SELECT st_overlaps(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95 (1 row) ~~~ -ST_Overlaps - true +ST_Overlaps - true ### False @@ -67,7 +67,7 @@ SELECT st_overlaps(st_geomfromtext('SRID=4326;POLYGON((-79.995888 40.440624,-74. (1 row) ~~~ -ST_Overlaps - false +ST_Overlaps - false ## See also diff --git a/src/current/v25.3/st_touches.md b/src/current/v25.3/st_touches.md index 7f4fdd73075..7099df34822 100644 --- a/src/current/v25.3/st_touches.md +++ b/src/current/v25.3/st_touches.md @@ -47,7 +47,7 @@ SELECT st_touches(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95. (1 row) ~~~ -ST_Touches - true +ST_Touches - true ### False @@ -67,7 +67,7 @@ SELECT st_touches(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95. (1 row) ~~~ -ST_Touches - false +ST_Touches - false ## See also diff --git a/src/current/v25.3/st_union.md b/src/current/v25.3/st_union.md index 98bd5f5c571..9ee0110f404 100644 --- a/src/current/v25.3/st_union.md +++ b/src/current/v25.3/st_union.md @@ -236,7 +236,7 @@ In this example, we will generate a single geometry from many individual points 1. Paste the JSON emitted in the previous step into [geojson.io](http://geojson.io) and you should see an image like the following, which shows the location of [most of the independent bookstores in New York State](https://www.bookweb.org/member_directory/search/ABAmember/results/0/0/ny/0): - ST_Union example + ST_Union example 1. Finally, drop the temporary table if you no longer need it: diff --git a/src/current/v25.3/st_within.md b/src/current/v25.3/st_within.md index 243d79c7d33..803e707e249 100644 --- a/src/current/v25.3/st_within.md +++ b/src/current/v25.3/st_within.md @@ -53,7 +53,7 @@ SELECT ST_Within(st_geomfromtext('SRID=4326;POLYGON((-87.623177 41.881832, -90.1 (1 row) ~~~ -ST_Within - true +ST_Within - true ### False @@ -73,7 +73,7 @@ SELECT ST_Within(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.9 (1 row) ~~~ -ST_Within - false +ST_Within - false ## See also diff --git a/src/current/v25.3/start-a-local-cluster-in-docker-windows.md b/src/current/v25.3/start-a-local-cluster-in-docker-windows.md index 4dd8a85eead..a6e6ffe21c9 100644 --- a/src/current/v25.3/start-a-local-cluster-in-docker-windows.md +++ b/src/current/v25.3/start-a-local-cluster-in-docker-windows.md @@ -300,7 +300,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -310,7 +310,7 @@ The [DB Console]({% link {{ page.version.version }}/ui-overview.md %}) gives you 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. 1. Optionally verify that DB Console instances for `roach2` and `roach3` are reachable on ports 8081 and 8082 and show the same information as port 8080. @@ -321,7 +321,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -331,7 +331,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. diff --git a/src/current/v25.3/start-a-local-cluster.md b/src/current/v25.3/start-a-local-cluster.md index 335dbe1006e..e6d28a0b105 100644 --- a/src/current/v25.3/start-a-local-cluster.md +++ b/src/current/v25.3/start-a-local-cluster.md @@ -254,7 +254,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. On the [**Cluster Overview**]({% link {{ page.version.version }}/ui-cluster-overview-page.md %}), notice that three nodes are live, with an identical replica count on each node: - DB Console + DB Console This demonstrates CockroachDB's [automated replication]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) of data via the Raft consensus protocol. @@ -264,7 +264,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. Click [**Metrics**]({% link {{ page.version.version }}/ui-overview-dashboard.md %}) to access a variety of time series dashboards, including graphs of SQL queries and service latency over time: - DB Console + DB Console 1. Use the [**Databases**]({% link {{ page.version.version }}/ui-databases-page.md %}), [**Statements**]({% link {{ page.version.version }}/ui-statements-page.md %}), and [**Jobs**]({% link {{ page.version.version }}/ui-jobs-page.md %}) pages to view details about your databases and tables, to assess the performance of specific queries, and to monitor the status of long-running operations like schema changes, respectively. @@ -294,7 +294,7 @@ The CockroachDB [DB Console]({% link {{ page.version.version }}/ui-overview.md % 1. In the DB Console, despite one node being "suspect", notice the continued SQL traffic: - DB Console + DB Console 1. Go to the terminal window for `node3` and restart it: @@ -338,7 +338,7 @@ Adding capacity is as simple as starting more nodes with `cockroach start`. 1. In the DB Console **Cluster Overview** page, confirm that the cluster now has five nodes. - DB Console + DB Console At first, the replica count will be lower for `node4` and `node5`. Very soon, however, you'll see those numbers even out across all nodes, indicating that data is being [automatically rebalanced]({% link {{ page.version.version }}/demo-replication-and-rebalancing.md %}) to utilize the additional capacity of the new nodes. diff --git a/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md b/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md index 73151a9620f..483b748c244 100644 --- a/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md +++ b/src/current/v25.3/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md @@ -331,11 +331,11 @@ Move to the terminal window in which you started the Kafka consumer. As the chan You can also view the messages for your cluster in the Confluent Cloud console in the **Topics** sidebar under the **Messages** tab. -Users topic messages in the Confluent Cloud console. +Users topic messages in the Confluent Cloud console. You can use the **Schema** tab to view the schema for a specific topic. -Users vale schema in the Confluent Cloud console. +Users vale schema in the Confluent Cloud console. ## See also diff --git a/src/current/v25.3/take-locality-restricted-backups.md b/src/current/v25.3/take-locality-restricted-backups.md index 6b56d1f5a0a..a10a11297d1 100644 --- a/src/current/v25.3/take-locality-restricted-backups.md +++ b/src/current/v25.3/take-locality-restricted-backups.md @@ -55,7 +55,7 @@ The following diagram shows a CockroachDB cluster where each of the nodes can co Instead, Node 3's locality does match the backup job's `EXECUTION LOCALITY`. Replicas that match a backup job's locality designation and hold the backup job's row data will begin reading and exporting to cloud storage. -Using execution locality when there is a network restriction between locality requirements +Using execution locality when there is a network restriction between locality requirements To execute the backup only on nodes in the same region as the cloud storage location, you can specify [locality filters]({% link {{ page.version.version }}/cockroach-start.md %}#locality) that a node must match to take part in the backup job's execution. @@ -81,7 +81,7 @@ Sometimes the execution of backup jobs can consume considerable resources when r This diagram shows a CockroachDB cluster in four regions. The node used to run the backup job was configured with [non-voting replicas]({% link {{ page.version.version }}/architecture/replication-layer.md %}#non-voting-replicas) to provide low-latency reads. The node in this region will complete the backup job coordination and data export to cloud storage. -Using execution locality to create a non-primary region for backup jobs +Using execution locality to create a non-primary region for backup jobs For details, refer to: diff --git a/src/current/v25.3/topology-basic-production.md b/src/current/v25.3/topology-basic-production.md index 174a0c2698c..e93d0a6207b 100644 --- a/src/current/v25.3/topology-basic-production.md +++ b/src/current/v25.3/topology-basic-production.md @@ -17,7 +17,7 @@ If you haven't already, [review the full range of topology patterns]({% link {{ ## Configuration -Basic production topology +Basic production topology 1. Provision hardware as follows: - 1 region with 3 AZs @@ -56,7 +56,7 @@ For example, in the animation below: 1. The leaseholder retrieves the results and returns to the gateway node. 1. The gateway node returns the results to the client. -Basic production topology reads +Basic production topology reads #### Writes @@ -72,17 +72,17 @@ For example, in the animation below: 1. The leaseholders then return acknowledgement of the commit to the gateway node. 1. The gateway node returns the acknowledgement to the client. -Leaseholder preferences topology writes +Leaseholder preferences topology writes ### Resiliency Because each range is balanced across AZs, one AZ can fail without interrupting access to any data: -Basic production topology single zone failure +Basic production topology single zone failure However, if an additional AZ fails at the same time, the ranges that lose consensus become unavailable for reads and writes: -Basic production topology double zone failure +Basic production topology double zone failure ## See also diff --git a/src/current/v25.3/topology-development.md b/src/current/v25.3/topology-development.md index 0a864df1041..748a999305c 100644 --- a/src/current/v25.3/topology-development.md +++ b/src/current/v25.3/topology-development.md @@ -17,7 +17,7 @@ If you haven't already, [review the full range of topology patterns]({% link {{ ## Configuration -Development topology +Development topology For this pattern, you can either [run CockroachDB locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or [deploy a single-node cluster on a cloud VM]({% link {{ page.version.version }}/manual-deployment.md %}). @@ -27,13 +27,13 @@ For this pattern, you can either [run CockroachDB locally]({% link {{ page.versi With the CockroachDB node in the same region as your client, and without the overhead of replication, both read and write latency are very low: -Development topology read and write latency +Development topology read and write latency ### Resiliency In a single-node cluster, CockroachDB does not replicate data and, therefore, is not resilient to failures. If the machine where the node is running fails, or if the region or availability zone containing the machine fails, the cluster becomes unavailable: -Development topology single failure +Development topology single failure ## See also diff --git a/src/current/v25.3/topology-follow-the-workload.md b/src/current/v25.3/topology-follow-the-workload.md index 7b2c3012b82..86aa81e2d6c 100644 --- a/src/current/v25.3/topology-follow-the-workload.md +++ b/src/current/v25.3/topology-follow-the-workload.md @@ -32,7 +32,7 @@ Note that if you start using the [multi-region SQL abstractions]({% link {{ page Aside from [deploying a cluster across three regions](#cluster-setup) properly, with each node started with the [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag specifying its region and zone combination, this behavior requires no extra configuration. CockroachDB will balance the replicas for a table across the three regions and will assign the range lease to the replica in the region with the greatest demand at any given time (the follow-the-workload feature). This means that read latency in the active region will be low while read latency in other regions will be higher due to having to leave the region to reach the leaseholder. Write latency will be higher as well due to always involving replicas in multiple regions. -Follow-the-workload table replication +Follow-the-workload table replication {{site.data.alerts.callout_info}} Follow-the-workload is also used by [system ranges containing important internal data]({% link {{ page.version.version }}/configure-replication-zones.md %}#create-a-replication-zone-for-a-system-range). @@ -54,7 +54,7 @@ For example, in the animation below, the most active region is `us-east` and, th 1. The leaseholder retrieves the results and returns to the gateway node. 1. The gateway node returns the results to the client. In this case, reads in the `us-east` remain in the region and are lower latency than reads in other regions. -Follow-the-workload topology reads +Follow-the-workload topology reads #### Writes @@ -70,17 +70,17 @@ For example, in the animation below, assuming the most active region is still `u 1. The leaseholders then return acknowledgement of the commit to the gateway node. 1. The gateway node returns the acknowledgement to the client. -Follow-the-workload topology writes +Follow-the-workload topology writes ### Resiliency Because this pattern balances the replicas for the table across regions, one entire region can fail without interrupting access to the table: -Follow-the-workload topology region failure +Follow-the-workload topology region failure {% comment %} However, if an additional machine holding a replica for the table fails at the same time as the region failure, the range to which the replica belongs becomes unavailable for reads and writes: -Follow-the-workload topology {% endcomment %} +Follow-the-workload topology {% endcomment %} ## See also diff --git a/src/current/v25.3/topology-follower-reads.md b/src/current/v25.3/topology-follower-reads.md index 6a799c2d248..ac218e0bb6b 100644 --- a/src/current/v25.3/topology-follower-reads.md +++ b/src/current/v25.3/topology-follower-reads.md @@ -30,7 +30,7 @@ If reads can use stale data, use [stale follower reads]({% link {{ page.version. With each node started with the [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag specifying its region and zone combination, CockroachDB will balance the replicas for a table across the three regions: -Follower reads table replication +Follower reads table replication ### Summary @@ -108,7 +108,7 @@ For example, in the following diagram: 1. The replica retrieves the results as of your preferred staleness interval in the past and returns to the gateway node. 1. The gateway node returns the results to the client. -Follower reads topology reads +Follower reads topology reads #### Writes @@ -124,13 +124,13 @@ For example, in the following animation: 1. The leaseholder then returns acknowledgement of the commit to the gateway node. 1. The gateway node returns the acknowledgement to the client. -Follower reads topology writes +Follower reads topology writes ### Resiliency Because this pattern balances the replicas for the table across regions, one entire region can fail without interrupting access to the table: -Follower reads topology region failure +Follower reads topology region failure ## See also diff --git a/src/current/v25.3/troubleshoot-lock-contention.md b/src/current/v25.3/troubleshoot-lock-contention.md index 03d2e735bc3..830d7fc3459 100644 --- a/src/current/v25.3/troubleshoot-lock-contention.md +++ b/src/current/v25.3/troubleshoot-lock-contention.md @@ -207,18 +207,18 @@ This step assumes you have already run the SQL statements from [Example 1](#exam After executing the transactions in the [previous section](#step-1-understand-lock-contention), open the [DB Console](#db-console) for the demo cluster. Navigate to the **Insights** page and select **Workload Insights** > **Transactions Executions**. -Transaction Executions view +Transaction Executions view Depending on when you [executed the transactions](#example-1), to display the transactions flagged with insights, you may have to select a longer time interval, such as **Past 6 Hours**. -Time interval +Time interval With an adequate time interval, two [**High Contention**]({% link {{ page.version.version }}/ui-insights-page.md %}#high-contention) insights will be listed for [Example 1](#example-1): - **Transaction 2** - **Transaction 3** -High Contention +High Contention ### Waiting statement @@ -226,21 +226,21 @@ To identify the exact statement in the transaction that experienced high content On the **Transaction Execution** page, navigate to the **Statement Executions** tab. In the list of statement executions, in the **Insights** column for `SELECT * FROM t where k = _`, there should be the **High Contention** insight. In [Example 1](#example-1), *Transaction 2* had one statement (other than `SHOW database`). In a transaction with multiple statements, use this page to pinpoint the exact statement that experienced high contention. -Waiting statement +Waiting statement ### Blocking transaction To identify the transaction that blocked **Transaction 2** and caused it to experience high contention, navigate back to the **Overview** tab. -Overview tab +Overview tab Scroll to the bottom of the Overview tab to the **Transaction with ID ... waited on** section that gives information about the blocking transaction. -Blocking transaction +Blocking transaction For more information about the blocking transaction, click the **Transaction Fingerprint ID** to open the [**Transaction Details** page]({% link {{ page.version.version }}/ui-transactions-page.md %}#transaction-details-page). -Blocking transaction details +Blocking transaction details ### Additional practice diff --git a/src/current/v25.3/ui-cdc-dashboard.md b/src/current/v25.3/ui-cdc-dashboard.md index 2d64b68d99c..fb1ad0ec771 100644 --- a/src/current/v25.3/ui-cdc-dashboard.md +++ b/src/current/v25.3/ui-cdc-dashboard.md @@ -23,7 +23,7 @@ The **Changefeeds** dashboard displays the following time series graphs: This graph displays the status of all running changefeeds. -DB Console Changefeed Status graph showing running, paused, and failed changefeeds. +DB Console Changefeed Status graph showing running, paused, and failed changefeeds. Metric | Description --------|---- @@ -39,7 +39,7 @@ In the case of a failed changefeed, you may want to use the [`cursor`]({% link { This graph displays the 99th, 90th, and 50th percentile of commit latency for running changefeeds. This is the difference between an event's MVCC timestamp and the time it was acknowledged as received by the [downstream sink]({% link {{ page.version.version }}/changefeed-sinks.md %}). -DB Console Commit Latency graph showing the 99th, 90th, and 50th percentile of commit latency. +DB Console Commit Latency graph showing the 99th, 90th, and 50th percentile of commit latency. If the sink batches events, then the difference between the oldest event in the batch and acknowledgement is recorded. Latency during backfill is excluded. @@ -51,7 +51,7 @@ This graph shows the number of bytes emitted by CockroachDB into the changefeed' In v23.1 and earlier, the **Emitted Bytes** graph was named **Sink Byte Traffic**. If you want to customize charts, including how metrics are named, use the [**Custom Chart** debug page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}). {{site.data.alerts.end}} -DB Console Emitted Bytes Graph showing the time and emitted bites +DB Console Emitted Bytes Graph showing the time and emitted bites Metric | Description --------|---- @@ -64,7 +64,7 @@ This graph displays data relating to the number of messages and flushes at the c - The number of messages that CockroachDB sent to the sink. - The number of flushes that the sink performed for changefeeds. -DB Console Sink Counts graph +DB Console Sink Counts graph Metric | Description --------|---- @@ -79,7 +79,7 @@ This graph displays the most any changefeed's persisted [checkpoint]({% link {{ In v23.1 and earlier, the **Max Checkpoint Latency** graph was named **Max Changefeed Latency**. If you want to customize charts, including how metrics are named, use the [**Custom Chart** debug page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}). {{site.data.alerts.end}} -DB Console Max Checkpoint Latency graph +DB Console Max Checkpoint Latency graph {{site.data.alerts.callout_info}} The maximum checkpoint latency is distinct from, and slower than, the commit latency for individual change messages. For more information about resolved timestamps, refer to the [Changefeed Messages]({% link {{ page.version.version }}/changefeed-messages.md %}#resolved-messages) page. @@ -89,7 +89,7 @@ The maximum checkpoint latency is distinct from, and slower than, the commit lat This graph displays the number of times changefeeds restarted due to [retryable errors]({% link {{ page.version.version }}/monitor-and-debug-changefeeds.md %}#changefeed-retry-errors). -DB Console Changefeed Restarts graph +DB Console Changefeed Restarts graph Metric | Description --------|---- @@ -99,7 +99,7 @@ Metric | Description This graph displays the oldest [protected timestamp]({% link {{ page.version.version }}/architecture/storage-layer.md %}#protected-timestamps) of any running changefeed on the cluster. -DB Console Oldest Protected Timestamp graph +DB Console Oldest Protected Timestamp graph Metric | Description --------|---- @@ -109,7 +109,7 @@ Metric | Description This graph displays the number of ranges being backfilled that are yet to enter the changefeed pipeline. An [initial scan]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) or [schema change]({% link {{ page.version.version }}/online-schema-changes.md %}) can cause a backfill. -DB Console Backfill Pending Ranges graph +DB Console Backfill Pending Ranges graph Metric | Description --------|---- @@ -119,7 +119,7 @@ Metric | Description This graph displays the rate of schema registration requests made by CockroachDB nodes to a configured schema registry endpoint. For example, a [Kafka sink]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka) pointing to a [Confluent Schema Registry]({% link {{ page.version.version }}/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md %}). -DB Console Schema Registry Registrations graph +DB Console Schema Registry Registrations graph Metric | Description --------|---- @@ -129,7 +129,7 @@ Metric | Description This graph displays the total number of ranges with an active [rangefeed]({% link {{ page.version.version }}/create-and-configure-changefeeds.md %}#enable-rangefeeds) that is performing a catchup scan. -DB Console Ranges in Catchup Mode graph +DB Console Ranges in Catchup Mode graph Metric | Description --------|---- @@ -139,7 +139,7 @@ Metric | Description This graph displays the duration of catchup scans that changefeeds are performing. -DB Console Rangefeed Catchup Scans Duration graph +DB Console Rangefeed Catchup Scans Duration graph Metric | Description --------|---- diff --git a/src/current/v25.3/ui-cluster-overview-page.md b/src/current/v25.3/ui-cluster-overview-page.md index 657bc8201c0..02a68ce5816 100644 --- a/src/current/v25.3/ui-cluster-overview-page.md +++ b/src/current/v25.3/ui-cluster-overview-page.md @@ -18,7 +18,7 @@ Enable the [Node Map](#node-map) view for a visual representation of your cluste Use the **Cluster Overview** panel to quickly assess the capacity and health of your cluster. -DB Console cluster overview +DB Console cluster overview Metric | Description --------|---- @@ -110,7 +110,7 @@ The **Node Map** visualizes the geographical configuration of your cluster. It r For guidance on enabling and configuring the node map, see [Enable the Node Map]({% link {{ page.version.version }}/enable-node-map.md %}). -DB Console Summary Panel +DB Console Summary Panel The Node Map uses the longitude and latitude of each locality to position the components on the map. The map is populated with [**locality components**](#locality-component) and [**node components**](#node-component). @@ -122,7 +122,7 @@ The map shows the components for the highest-level locality tier (e.g., region). For details on how **Capacity Usage** is calculated, see [Capacity metrics](#capacity-metrics). -DB Console Summary Panel +DB Console Summary Panel {{site.data.alerts.callout_info}} On multi-core systems, the displayed CPU usage can be greater than 100%. Full utilization of 1 core is considered as 100% CPU usage. If you have _n_ cores, then CPU usage can range from 0% (indicating an idle system) to (_n_ * 100)% (indicating full utilization). @@ -136,7 +136,7 @@ Node components are accessed by clicking on the **Node Count** of the lowest-lev For details on how **Capacity Usage** is calculated, see [Capacity metrics](#capacity-metrics). -DB Console Summary Panel +DB Console Summary Panel {{site.data.alerts.callout_info}} On multi-core systems, the displayed CPU usage can be greater than 100%. Full utilization of 1 core is considered as 100% CPU usage. If you have _n_ cores, then CPU usage can range from 0% (indicating an idle system) to (_n_ * 100)% (indicating full utilization). diff --git a/src/current/v25.3/ui-custom-chart-debug-page.md b/src/current/v25.3/ui-custom-chart-debug-page.md index cb46125999d..c8cff4702af 100644 --- a/src/current/v25.3/ui-custom-chart-debug-page.md +++ b/src/current/v25.3/ui-custom-chart-debug-page.md @@ -13,7 +13,7 @@ To view the Custom Chart page, [access the DB Console]({% link {{ page.version.v ## Use the Custom Chart page -DB Console +DB Console On the **Custom Chart** page, you can set the time span for all charts, add new custom charts, and customize each chart: @@ -28,7 +28,7 @@ On the **Custom Chart** page, you can set the time span for all charts, add new ### Query user and system CPU usage -DB Console +DB Console To compare system vs. userspace CPU usage, select the following values under **Metric Name**: diff --git a/src/current/v25.3/ui-key-visualizer.md b/src/current/v25.3/ui-key-visualizer.md index a545a82126a..1c65d3cb95a 100644 --- a/src/current/v25.3/ui-key-visualizer.md +++ b/src/current/v25.3/ui-key-visualizer.md @@ -39,7 +39,7 @@ Once you have enabled the Key Visualizer, CockroachDB will begin monitoring keys When navigating to the **Key Visualizer** page in the DB Console, after a brief loading time, CockroachDB will present the collected data in a visualization designed to help you see data traffic trends at a glance. -Key Visualizer showing hot range +Key Visualizer showing hot range The Key Visualizer presents the following information: @@ -82,7 +82,7 @@ The Key Visualizer was designed to make potentially problematic ranges stand out The following image shows the Key Visualizer highlighting a series of [hotspots]({% link {{ page.version.version }}/understand-hotspots.md %}): ranges with much higher-than-average write rates as compared to the rest of the cluster. -Key Visualizer showing range split +Key Visualizer showing range split **Remediation:** If you've identified a potentially-problematic range as a hotspot, follow the recommended best practices to [reduce hotspots]({% link {{ page.version.version }}/understand-hotspots.md %}#reduce-hotspots). In the case of the screenshot above, the increased write cadence is due to a series of [range splits]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-splits), where a range experiencing a large volume of incoming writes is splitting its keyspace to accommodate the growing range. This is often part of normal operation, but can be indicative of a data modeling issue if the range split is unexpected or causing cluster performance issues. @@ -90,7 +90,7 @@ The following image shows the Key Visualizer highlighting a series of [hotspots] The following image shows the Key Visualizer highlighting a [full-table scan]({% link {{ page.version.version }}/make-queries-fast.md %}), where the lack of an appropriate index causes the query planner to need to scan the entire table to find the requested records in a query. This can be seen most clearly by the cascading series of bright red ranges that proceed in diagonal fashion to each other, such as the series of three shown at the mouse cursor. This cascade represents the sequential scan of contiguous ranges in the keyspace as the query planner attempts to locate requested data without an index. -Key Visualizer showing table scan +Key Visualizer showing table scan **Remediation:** If you've identified a full table scan, follow the guidance to [optimize statement performance]({% link {{ page.version.version }}/make-queries-fast.md %}). You can also [analyze your queries with `EXPLAIN`]({% link {{ page.version.version }}/sql-tuning-with-explain.md %}) to investigate if an index was used in the execution of the query. diff --git a/src/current/v25.3/ui-network-latency-page.md b/src/current/v25.3/ui-network-latency-page.md index c40c0fafb3f..3d6b60662bd 100644 --- a/src/current/v25.3/ui-network-latency-page.md +++ b/src/current/v25.3/ui-network-latency-page.md @@ -20,7 +20,7 @@ Select **Collapse Nodes** to display the mean latencies of each locality, depend Each cell in the matrix displays the round-trip latency in milliseconds between two nodes in your cluster. Round-trip latency includes the return time of a packet. Latencies are color-coded by their standard deviation from the mean latency on the network: green for lower values, and blue for higher. Nodes with the lowest latency are displayed in darker green, and nodes with the highest latency are displayed in darker blue. -DB Console Network Latency matrix +DB Console Network Latency matrix Rows represent origin nodes, and columns represent destination nodes. Hover over a cell to display more details: @@ -34,7 +34,7 @@ On a [typical multi-region cluster]({% link {{ page.version.version }}/demo-low- For instance, the cluster shown above has nodes in `us-west1`, `us-east1`, and `europe-west2`. Latencies are highest between nodes in `us-west1` and `europe-west2`, which span the greatest distance. This is especially clear when sorting by region or availability zone and collapsing nodes: -DB Console Network Latency collapsed nodes +DB Console Network Latency collapsed nodes ### No connections @@ -45,7 +45,7 @@ Nodes that have completely lost connectivity are color-coded depending on connec This information can help you diagnose a network partition in your cluster. -DB Console Network Latency suspect node +DB Console Network Latency suspect node Hover over a cell to display more details: diff --git a/src/current/v25.3/ui-physical-cluster-replication-dashboard.md b/src/current/v25.3/ui-physical-cluster-replication-dashboard.md index 69e2bc08938..3ed3cb9193f 100644 --- a/src/current/v25.3/ui-physical-cluster-replication-dashboard.md +++ b/src/current/v25.3/ui-physical-cluster-replication-dashboard.md @@ -21,7 +21,7 @@ The **Physical Cluster Replication** dashboard displays the following time-serie ## Logical bytes -DB Console Logical Bytes graph showing results over the past hour +DB Console Logical Bytes graph showing results over the past hour The **Logical Bytes** graph displays the throughput of the replicated bytes. The graph displays the rate at which the logical bytes (sum of keys + values) are ingested by all replication jobs. @@ -36,7 +36,7 @@ When you [start a replication stream]({% link {{ page.version.version }}/set-up- ## Replication lag -DB Console Replication Lag graph showing results over the past hour +DB Console Replication Lag graph showing results over the past hour The **Replication Lag** graph displays the [replication lag]({% link {{ page.version.version }}/physical-cluster-replication-technical-overview.md %}) between the primary and standby cluster. This is the time between the most up-to-date replicated time and the actual time. diff --git a/src/current/v25.3/ui-queues-dashboard.md b/src/current/v25.3/ui-queues-dashboard.md index 55be932e741..1a300547eb9 100644 --- a/src/current/v25.3/ui-queues-dashboard.md +++ b/src/current/v25.3/ui-queues-dashboard.md @@ -171,7 +171,7 @@ Pending Actions | The number of pending replicas in the time series maintenance ## MVCC GC Queue -DB Console GC queue graph +DB Console GC queue graph The **MVCC GC Queue** graph displays various details about the health and performance of the [garbage collection]({% link {{ page.version.version }}/architecture/storage-layer.md %}#garbage-collection) queue. @@ -184,7 +184,7 @@ Pending Actions | The number of pending replicas in the [garbage collection]({% ## Protected Timestamp Records -DB Console GC queue graph +DB Console GC queue graph The **Protected Timestamp Records** graph displays the number of [protected timestamp]({% link {{ page.version.version }}/architecture/storage-layer.md %}#protected-timestamps) records (used by backups, changefeeds, etc. to prevent MVCC GC) per node, as tracked by the `spanconfig.kvsubscriber.protected_record_count` metric. diff --git a/src/current/v25.3/ui-replication-dashboard.md b/src/current/v25.3/ui-replication-dashboard.md index d7335f6a64a..5e41469377b 100644 --- a/src/current/v25.3/ui-replication-dashboard.md +++ b/src/current/v25.3/ui-replication-dashboard.md @@ -31,7 +31,7 @@ The **Replication** dashboard displays the following time series graphs: ## Ranges -DB Console Ranges +DB Console Ranges The **Ranges** graph shows you various details about the status of ranges. @@ -52,7 +52,7 @@ Under-replicated | The number of under-replicated ranges. Non-voting replicas ar ## Logical Bytes per Store -DB Console Logical Bytes per Store +DB Console Logical Bytes per Store Metric | Description --------|-------- @@ -64,7 +64,7 @@ Metric | Description ## Replicas Per Store -DB Console Replicas per Store +DB Console Replicas per Store - In the node view, the graph shows the number of range replicas on the store. @@ -74,7 +74,7 @@ You can [Replication Controls]({% link {{ page.version.version }}/configure-repl ## Replica Quiescence -DB Console Replica Quiescence +DB Console Replica Quiescence - In the node view, the graph shows the number of replicas on the node. @@ -104,7 +104,7 @@ Load-based Range Rebalances | `rebalancing.range.rebalances` | Number of range r ## Snapshots -DB Console Replica Snapshots +DB Console Replica Snapshots Usually the nodes in a [Raft group]({% link {{ page.version.version }}/architecture/replication-layer.md %}#raft) stay synchronized by following along with the log message by message. However, if a node is far enough behind the log (e.g., if it was offline or is a new node getting up to speed), rather than send all the individual messages that changed the range, the cluster can send it a snapshot of the range and it can start following along from there. Commonly this is done preemptively, when the cluster can predict that a node will need to catch up, but occasionally the Raft protocol itself will request the snapshot. @@ -118,7 +118,7 @@ Reserved | The number of slots reserved per second for incoming snapshots that w ## Snapshot Data Received -DB Console Replica Snapshot Data Received +DB Console Replica Snapshot Data Received The **Snapshot Data Received** graph shows the rate per second of data received in bytes by each node via [Raft snapshot transfers]({% link {{ page.version.version }}/architecture/replication-layer.md %}#snapshots). Data is split into recovery and rebalancing snapshot data received: recovery includes all upreplication due to decommissioning or node failure, and rebalancing includes all other snapshot data received. @@ -131,7 +131,7 @@ Metric | Description ## Receiver Snapshots Queued -DB Console Replica Receiver Snapshots Queued +DB Console Replica Receiver Snapshots Queued The **Receiver Snapshots Queued** graph shows the number of [Raft snapshot transfers]({% link {{ page.version.version }}/architecture/replication-layer.md %}#snapshots) queued to be applied on a receiving node, which can only accept one snapshot at a time per store. @@ -143,7 +143,7 @@ Metric | Description ## Circuit Breaker Tripped Replicas -DB Console Circuit Breaker Tripped Replicas +DB Console Circuit Breaker Tripped Replicas When individual ranges become temporarily unavailable, requests to those ranges are refused by a [per-replica circuit breaker]({% link {{ page.version.version }}/architecture/replication-layer.md %}#per-replica-circuit-breaker-overview) instead of hanging indefinitely. @@ -159,7 +159,7 @@ Metric | Description ## Circuit Breaker Tripped Events -DB Console Circuit Breaker Tripped Events +DB Console Circuit Breaker Tripped Events When individual ranges become temporarily unavailable, requests to those ranges are refused by a [per-replica circuit breaker]({% link {{ page.version.version }}/architecture/replication-layer.md %}#per-replica-circuit-breaker-overview) instead of hanging indefinitely. While a range's per-replica circuit breaker remains tripped, each incoming request to that range triggers a `ReplicaUnavailableError` event until the range becomes available again. @@ -173,7 +173,7 @@ Metric | Description ## Replicate Queue Actions: Successes -DB Console Replicate Queue Actions: Successes +DB Console Replicate Queue Actions: Successes The **Replicate Queue Actions: Successes** graph shows the rate of various successful replication queue actions per second. @@ -194,7 +194,7 @@ Decommissioning Replicas Removed / Sec | The number of successful decommissionin ## Replicate Queue Actions: Failures -DB Console Replicate Queue Actions: Failures +DB Console Replicate Queue Actions: Failures The **Replicate Queue Actions: Failures** graph shows the rate of various failed replication queue actions per second. @@ -215,7 +215,7 @@ Decommissioning Replicas Removed Errors / Sec | The number of failed decommissio ## Decommissioning Errors -DB Console Replica Decommissioning Errors +DB Console Replica Decommissioning Errors The **Decommissioning Errors** graph shows the rate per second of decommissioning replica replacement failures experienced by the replication queue, by node. diff --git a/src/current/v25.3/ui-runtime-dashboard.md b/src/current/v25.3/ui-runtime-dashboard.md index d6109170c20..df55ad38436 100644 --- a/src/current/v25.3/ui-runtime-dashboard.md +++ b/src/current/v25.3/ui-runtime-dashboard.md @@ -17,7 +17,7 @@ The **Runtime** dashboard displays the following time series graphs: ## Live Node Count -DB Console Node Count +DB Console Node Count In the node view as well as the cluster view, the graph shows the number of live nodes in the cluster. @@ -25,7 +25,7 @@ A dip in the graph indicates decommissioned nodes, dead nodes, or nodes that are ## Memory Usage -DB Console Memory Usage +DB Console Memory Usage - In the node view, the graph shows the memory in use for the selected node. @@ -49,7 +49,7 @@ CGo Total | Total memory managed by the C layer. ## CPU Time -DB Console CPU Time +DB Console CPU Time - In the node view, the graph shows the [CPU time](https://wikipedia.org/wiki/CPU_time) used by CockroachDB user and system-level operations for the selected node. - In the cluster view, the graph shows the [CPU time](https://wikipedia.org/wiki/CPU_time) used by CockroachDB user and system-level operations across all nodes in the cluster. @@ -63,7 +63,7 @@ Sys CPU Time | Total CPU seconds per second used for CockroachDB system-level op ## Clock Offset -DB Console Clock Offset +DB Console Clock Offset - In the node view, the graph shows the mean clock offset of the node against the rest of the cluster. - In the cluster view, the graph shows the mean clock offset of each node against the rest of the cluster. diff --git a/src/current/v25.3/ui-schedules-page.md b/src/current/v25.3/ui-schedules-page.md index f908ffa2496..eeb4496d71e 100644 --- a/src/current/v25.3/ui-schedules-page.md +++ b/src/current/v25.3/ui-schedules-page.md @@ -27,7 +27,7 @@ Use the **Schedules** list to see your active and paused schedules. The following screenshot shows a list of backups and automated statistics compaction schedules: -Schedules Page UI in the DB Console showing a list of schedules +Schedules Page UI in the DB Console showing a list of schedules Column | Description ---------------------+-------------- @@ -44,7 +44,7 @@ Creation Time (UTC) | The time at which the user originally created the sc Click on a schedule ID to view the full SQL statement that the schedule runs. For example, the following screenshot shows the resulting [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) statement for a full cluster backup recurring every day: -UI for each individual schedule ID displaying the CREATE SCHEDULE SQL statement +UI for each individual schedule ID displaying the CREATE SCHEDULE SQL statement You may also view a `protected_timestamp_record` on this page. This indicates that the schedule is actively managing its own [protected timestamp]({% link {{ page.version.version }}/architecture/storage-layer.md %}#protected-timestamps) records independently of [GC TTL]({% link {{ page.version.version }}/configure-replication-zones.md %}#gc-ttlseconds). See [Protected timestamps and scheduled backups]({% link {{ page.version.version }}/create-schedule-for-backup.md %}#protected-timestamps-and-scheduled-backups) for more detail. diff --git a/src/current/v25.3/ui-ttl-dashboard.md b/src/current/v25.3/ui-ttl-dashboard.md index b885cfb77d8..f32d1e550db 100644 --- a/src/current/v25.3/ui-ttl-dashboard.md +++ b/src/current/v25.3/ui-ttl-dashboard.md @@ -19,7 +19,7 @@ The **TTL** dashboard displays the following time series graphs: You can monitor the **Processing Rate** graph to see how many rows per second are being processed by [TTL jobs]({% link {{ page.version.version }}/row-level-ttl.md %}#view-running-ttl-jobs). -TTL processing rate graph +TTL processing rate graph | Metric | Description | |---------------+---------------------------------------------| @@ -30,7 +30,7 @@ You can monitor the **Processing Rate** graph to see how many rows per second ar Monitor the **Estimated Rows** graph to see approximately how many rows are on the TTL table. -TTL estimated rows graph +TTL estimated rows graph | Metric | Description | |------------------------------------+-----------------------------------------------------------------| @@ -41,13 +41,13 @@ Monitor the **Estimated Rows** graph to see approximately how many rows are on t Monitor the **Job Latency** graph to see the latency of scanning and deleting within your cluster's [TTL jobs]({% link {{ page.version.version }}/row-level-ttl.md %}#view-running-ttl-jobs). -TTL job latency graph +TTL job latency graph ## Ranges in Progress Monitor the **Ranges in Progress** graph to see the number of ranges currently being processed by [TTL jobs]({% link {{ page.version.version }}/row-level-ttl.md %}#view-running-ttl-jobs). -TTL ranges in progress graph +TTL ranges in progress graph | Metric | Description | |----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/src/current/v25.3/understand-hotspots.md b/src/current/v25.3/understand-hotspots.md index 63c0930073b..633a6387b2b 100644 --- a/src/current/v25.3/understand-hotspots.md +++ b/src/current/v25.3/understand-hotspots.md @@ -35,7 +35,7 @@ All hotspot types described on this page will create hot nodes, as long as the c The following image is a graph of [CPU Percent]({% link {{ page.version.version }}/ui-hardware-dashboard.md %}#cpu-percent) utilization per node. Most of the nodes hover around 25%, while one hot node is around 95%. Since the hot node keeps changing, it means the hotspot is moving from one node to another as the [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#range) containing writes fill up and split. For more information, refer to [hot range](#hot-range) and [moving hotspot](#moving-hotspot). -graph of CPU Percent utilization per node showing hot nodes +graph of CPU Percent utilization per node showing hot nodes ### Hot range @@ -106,7 +106,7 @@ An _index hotspot_ is a hotspot on an [index]({% link {{ page.version.version }} Consider a table `users` that contains a [primary key]({% link {{ page.version.version }}/primary-key.md %}) `user_id`, which is an incrementing integer value. Each new key will be the current maximum key + 1. In this way, all writes appear at the index tail. The following image visualizes writes to the `users` table using an incrementing `INT` primary key. Note how all writes are focused at the tail of the index, represented by the red section in Range 4. -incrementing INT primary key +incrementing INT primary key Even if performance degradation in Range 4 is mitigated, the system remains constrained by the number of writes a single range can handle. As a result, CockroachDB could be limited to the performance of a single node, which goes against the purpose of a distributed database. @@ -116,7 +116,7 @@ In the ideal operation of a distributed SQL database, inserts into an index shou Consider a table `users` that contains a primary key `user_uuid` of type [`UUID`]({% link {{ page.version.version }}/uuid.md %}). Because `UUID`s are pseudo-random, new rows are inserted into the keyspace at random locations. The following image visualizes writes to the `users` table using a `UUID` primary key. Red lines indicate an insert into the keyspace. Note how the red lines are distributed evenly. -UUID primary key +UUID primary key Inserts are not the only way that index hotspots can occur. Consider the same table `users` that now has a [secondary index]({% link {{ page.version.version }}/schema-design-indexes.md %}) on a `TIMESTAMP` column: @@ -145,7 +145,7 @@ The resolution of the index hotspot often depends on your requirements for the d If inserting in sequential order is important, the index itself can be [hash-sharded]({% link {{ page.version.version }}/hash-sharded-indexes.md %}), which means that it is still stored in order, albeit in some number of shards. Consider a `users` table, with a primary key `id INT`, which is hash-sharded with 4 shards, and a hashing function of modulo 4. The following image illustrates this example: -Hash-sharded index example +Hash-sharded index example Now the writes are distributed into the tails of the shards, rather than the tail of the whole index. This benefits write performance but makes reads more challenging. If you need to read a subset of the data, you will have to scan each shard of the index. @@ -183,7 +183,7 @@ A _queueing hotspot_ is a type of index hotspot that occurs when a workload trea Queues, such as logs, generally require data to be ordered by write, which necessitates indexing in a way that is likely to create a hotspot. An outbox where data is deleted as it is read has an additional problem: it tends to accumulate an ordered set of [garbage data]({% link {{ page.version.version }}/operational-faqs.md %}#why-is-my-disk-usage-not-decreasing-after-deleting-data) behind the live data. Since the system cannot determine whether any live rows exist within the garbage data, what appears to be a small table scan to the user can actually result in an unexpectedly intensive scan on the garbage data. -Outbox hotspot example +Outbox hotspot example To mitigate this issue, it is advisable to use [Change Data Capture (CDC)]({% link {{ page.version.version }}/cdc-queries.md %}) to ensure subscription to updates instead of using Outbox tables. If using CDC is not possible, sharding the index that the outbox uses for ordering can reduce the likelihood of a hotspot within the cluster. @@ -220,13 +220,13 @@ UPDATE User SET follower_count = follower_count+1 WHERE id=2; This simple design works well until it encounters an unexpected surge in activity. For example, consider user 471, who suddenly gains millions of followers within an hour. This sudden increase in followers causes a significant amount of write traffic to the range responsible for this user, which the system may not be able to handle efficiently. The following image visualizes a hot row in the keyspace. Note how writes are focused on a single point, which cannot be split. -Single row hotspot example +Single row hotspot example Without changing the default behavior of the system, the load will not be distributed because it needs to be served by a single range. This behavior is not just temporary; certain users may consistently experience a high volume of activity compared to the average user. This can result in a system with multiple hotspots, each of which can potentially overload the system at any moment. The following image visualizes a keyspace with multiple hot rows. In a large enough cluster, each of these rows can burden the range they live in, leading to multiple burdened nodes. -Multiple row hotspots example +Multiple row hotspots example ### Hot sequence @@ -248,7 +248,7 @@ Because the primary key index is [hash-sharded]({% link {{ page.version.version The following image visualizes writes in the `products` keyspace using hash-sharded rows. With five shards, the writes are better distributed into the keyspace, but the `id` sequence row becomes the limiting factor. -Multiple row hotspots example +Multiple row hotspots example Because sequences avoid user expressions, optimizations can be made to improve their performance, but unfortunately the write volume on the sequence is still that of the sum total of all its accesses. @@ -278,7 +278,7 @@ country_id UUID REFERENCES countries(id) SELECT * FROM posts p JOIN countries c ON p.country_id=c.id; ~~~ -Table hotspot example +Table hotspot example Reads in the `posts` table may be evenly distributed, but joining the `countries` table becomes a bottleneck, since it exists in so few ranges. Splitting the `countries` table ranges can relieve pressure, but only to a limit as the indivisible rows experience high throughput. [Global tables]({% link {{ page.version.version }}/global-tables.md %}) and [follower reads]({% link {{ page.version.version }}/follower-reads.md %}) can help scaling in this case, especially when write throughput is low. @@ -303,7 +303,7 @@ By doing this, you have limited the traffic from the highest throughput table to The following image visualizes the regional breakout of data in the `orders` table. Because of the domiciling policy, reads and writes to the `orders` table will be focused on the `us-east-1` nodes. -Locality hotspot example +Locality hotspot example ### Temporal hotspot diff --git a/src/current/v25.3/wal-failover.md b/src/current/v25.3/wal-failover.md index 517df362f67..32e2688cc3c 100644 --- a/src/current/v25.3/wal-failover.md +++ b/src/current/v25.3/wal-failover.md @@ -29,7 +29,7 @@ WAL failover uses a secondary disk to fail over WAL writes to when transient dis The following diagram shows how WAL failover works at a high level. For more information about the WAL, memtables, and SSTables, refer to the [Architecture » Storage Layer documentation]({% link {{ page.version.version }}/architecture/storage-layer.md %}). -WAL failover overview diagram +WAL failover overview diagram ## Create and configure a cluster to be ready for WAL failover @@ -280,7 +280,7 @@ In [DB Console's **Advanced Debug** page]({% link {{ page.version.version }}/ui- Set the source of these metrics to be the node where you are running the disk stall/unstall script. -WAL Failover Metrics Chart +WAL Failover Metrics Chart Notice there is a switchover followed by each stall. The node with the stalled disk continues to perform normal operations during and after WAL failover, as the stalls are transient and shorter than the current value of [`COCKROACH_ENGINE_MAX_SYNC_DURATION_DEFAULT`](#important-environment-variables). @@ -377,7 +377,7 @@ In a [multi-store](#multi-store-config) cluster, if a disk for a store has a tra The following diagram shows the behavior of WAL writes during a disk stall with and without WAL failover enabled. -how long WAL writes take during a disk stall with and without WAL failover enabled +how long WAL writes take during a disk stall with and without WAL failover enabled ## FAQs diff --git a/src/current/v25.3/window-functions.md b/src/current/v25.3/window-functions.md index df58d717df1..a042d751204 100644 --- a/src/current/v25.3/window-functions.md +++ b/src/current/v25.3/window-functions.md @@ -94,7 +94,7 @@ Its operation can be described as follows (numbered steps listed here correspond 1. The window function `SUM(revenue) OVER ()` operates on a window frame containing all rows of the query output. 1. The window function `SUM(revenue) OVER (PARTITION BY city)` operates on several window frames in turn; each frame contains the `revenue` columns for a different city [partition]({% link {{ page.version.version }}/partitioning.md %}) (Amsterdam, Boston, L.A., etc.). -Window function diagram +Window function diagram ### Caveats From a7bbe18ef926ee663306c4fa0968354134111f1c Mon Sep 17 00:00:00 2001 From: ebembi-crdb Date: Wed, 28 Jan 2026 18:09:14 +0530 Subject: [PATCH 3/4] Retrigger build From 0260003169d1025780ea018f14343a1bfc13491a Mon Sep 17 00:00:00 2001 From: ebembi-crdb Date: Wed, 28 Jan 2026 19:44:09 +0530 Subject: [PATCH 4/4] Fix missing changefeed image and broken path in v25.3 Copy changefeed-structure.png from v25.1 and fix image path to use proper Liquid syntax with relative_url filter. --- .../images/v25.3/changefeed-structure.png | Bin 0 -> 789277 bytes .../v25.3/how-does-a-changefeed-work.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/current/images/v25.3/changefeed-structure.png diff --git a/src/current/images/v25.3/changefeed-structure.png b/src/current/images/v25.3/changefeed-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..b802cb450384283ecaebd09adb161edbd86bba41 GIT binary patch literal 789277 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�!?HO)&of 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�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 eN`@^^{wYK*In04xeVxu{i zUzhmgzD+a#q6~BY@6-HmgGdlu-3YT795G*G%>nt|5tOKkg@t3+ZmJQYf}TLftOl3mkIh*FtbqISEmxQPxFDO?UO>+pD0eA(M6cibH=C0 zz!a|1wo?E>4p-CFbwBOm;*z(m<=pwuaOi$KOXAqy3t+_e4oaa3)5hiIW@;!m_KaqV zowm;L@DQChzyCc&UXkEK|MucNp0Ny9SR1@b1MJMjfzYW|2=%?eLGE=?o1|>@FXwL0 z&POe&tY1+Aa)yuzAI*Yd?9#^;kCOo3oM!sDMaWn5-A&+YQiXND;#ZIS4y+*kONF!( z6utDnen%s^q~!h(kSJNTcx%)$LhdyjhkeV!Z literal 0 HcmV?d00001 diff --git a/src/current/v25.3/how-does-a-changefeed-work.md b/src/current/v25.3/how-does-a-changefeed-work.md index 092fdd37972..0e46c1604b0 100644 --- a/src/current/v25.3/how-does-a-changefeed-work.md +++ b/src/current/v25.3/how-does-a-changefeed-work.md @@ -9,7 +9,7 @@ When a changefeed that will emit changes to a sink is started on a node, that no Each node uses its _aggregator processors_ to send back checkpoint progress to the coordinator, which gathers this information to update the _high-water mark timestamp_. The high-water mark acts as a checkpoint for the changefeed’s job progress, and guarantees that all changes before (or at) the timestamp have been emitted. In the unlikely event that the changefeed’s coordinating node were to fail during the job, that role will move to a different node and the changefeed will restart from the last checkpoint. If restarted, the changefeed may [re-emit messages]({% link {{ page.version.version }}/changefeed-messages.md %}#duplicate-messages) starting at the high-water mark time to the current time. Refer to [Ordering Guarantees]({% link {{ page.version.version }}/changefeed-messages.md %}#ordering-and-delivery-guarantees) for detail on CockroachDB's at-least-once-delivery-guarantee and how per-key message ordering is applied. -Changefeed process in a 3-node cluster +Changefeed process in a 3-node cluster With [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) specified when a changefeed is started, the coordinator will send the resolved timestamp (i.e., the high-water mark) to each endpoint in the sink. For example, when using [Kafka]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka) this will be sent as a message to each partition; for [cloud storage]({% link {{ page.version.version }}/changefeed-sinks.md %}#cloud-storage-sink), this will be emitted as a resolved timestamp file.