Routing hints
For every query, you may specify special hints in different ways:
-
Comment in the SQL statement:
-
Via SET-RESET interface:
__spqr__target_session_attrs
The target-session-attrs
parameter in PostgreSQL is used to specify the desired session state when connecting to a database. It is particularly useful in scenarios with multiple servers and failover configurations, where you want to ensure your session connects to the server with the desired role or state.
target_session_attrs
and __spqr__target_session_attrs
are both aliases for target-session-attrs
.
__spqr__target_session_attrs
, target_session_attrs
and __spqr__target_session_attrs
are aliases for target-session-attrs
.
Possible values for target-session-attrs
:
read-write
: Connects to a server in read-write mode, and fails if the primary is unavailable.smart-read-write
: Connects to a server in read-write mode, and fails if the primary is unavailable. Automatically routes read-only queries to standbys (with prefer-standby semantics), if query_routing: auto_route_ro_on_standby is set to true in configure file.read-only
: Connects only to read-only (in recovery) servers. Fails if none available.prefer-standby
orprefer-replica
: Prefers connecting to standby servers. If none are available, it connects to primary.any
: Connect to any available server, regardless of state.
__spqr__default_route_behaviour
Whether to explicitly block multishard queries. Overload for query_routing.default_route_behaviour.
__spqr__execute_on
The __spqr__execute_on
parameter is used to specify the shard on which a query should be executed.
__spqr__reply_notice
Whether to show notice messages. Overload for query_routing.default_route_behaviour.
__spqr__sharding_key
The __spqr__sharding_key
explicitly pass the sharding key to the SPQR Router.
__spqr__distribution
The __spqr__distribution
explicitly specify which distribution the SPQR router should use for query routing.
__spqr__auto_distribution
The __spqr__auto_distribution
parameter is used to automatically adding new table in SPQR metadata without going into the spqr-console.
__spqr__distribution_key
The __spqr__distribution_key
parameter is used to automatically add a new table to the SPQR metadata without having to go into the spqr console. This parameter can only be used with the __spqr__auto_distribution
hint.
__spqr__scatter_query
The __spqr__scatter_query
parameter is used to indicate that the query should be sent to all shards in the cluster.
__spqr__commit_strategy
The __spqr__commit_strategy
parameter is used to specify the commit strategy for a distributed transaction. Possible values are 1pc
and 2pc
. best-effort
is an alias for 1pc
.