Vertica Analytics Platform Version 9.3.x Documentation


Elasticity, or Elastic Throughput Scaling (ETS), allows Vertica to increase query concurrency and thus throughput.  ETS takes advantage of redundant shard subscriptions to automatically identify nodes that can execute a query. For example, if you have three shards and six nodes, two nodes are automatically subscribed to each shard. Vertica can distribute a query on three of the six nodes, allowing two queries to be run concurrently. If you add three more nodes, Vertica can execute three queries concurrently.

You can add nodes temporarily at peak demand times to process more concurrent queries. When demand drops, you can remove nodes. You do not need to move data among nodes as you do when rebalancing an Enterprise Mode cluster. Nor is there any need for recovery, because the data is persisted in communal storage, not on the compute nodes. The cache (depot) on new nodes is initially empty and fills as the node participates in queries. When a compute node is no longer needed, it can simply be dropped.

Elastic Throughput Scaling in Eon Mode is automatic, with three preconditions:

  • Client connections must be balanced across the cluster. If all of your clients connect to the same node, then that node participates in all queries, limiting the ability of Vertica to support concurrent queries. Try to make your connections in a round-robin manner.
  • Shards must be balanced. Run REBALANCE_SHARDS after you add or remove nodes. When Vertica rebalances shards, it automatically takes into account K-Safety and subclusters.
  • Any external tables involved in the query must be created with the ON ANY NODE clause. If your query has an external table that was created on a specific node (by using the ON NODE node_name clause) it will not be limited to a subcluster by ETS. The node that has the table defined on it is always included in the pool of nodes executing the query. This behavior prevents the query failing due to external table data being unavailable within a subcluster.