From dde6a1472e4f6dfa27130af53796357ca16993d1 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 9 Feb 2021 21:10:33 +0530 Subject: [PATCH 01/13] documentation for temporary tables Signed-off-by: Harshit Gangal --- .../en/docs/reference/compatibility/mysql-compatibility.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content/en/docs/reference/compatibility/mysql-compatibility.md b/content/en/docs/reference/compatibility/mysql-compatibility.md index 74c5e67f7..baba7c7a5 100644 --- a/content/en/docs/reference/compatibility/mysql-compatibility.md +++ b/content/en/docs/reference/compatibility/mysql-compatibility.md @@ -47,6 +47,13 @@ There are further limitations to calling stored procedures using CALL: CREATE PROCEDURE is not supported. You have to create the procedure directly on the underlying MySQL servers and not through Vitess. +### Temporary Tables + +Vitess has a limited support for temporary tables. It works only for unsharded keyspace. + +If the user create a temporary table then the session will start using reserved connections for any query sent on that session +and also the plans generated by those will not be caches. But, they will continue to use the plan caches from other sessions. + ### Window Functions and CTEs Vitess does not yet support Window Functions or Common Table Expressions. From 7a0cfd5d5e9f307863690e853a0f6c80ed0153ad Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Thu, 11 Feb 2021 10:56:20 +0530 Subject: [PATCH 02/13] addressed review comments Signed-off-by: Harshit Gangal --- .../reference/compatibility/mysql-compatibility.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/content/en/docs/reference/compatibility/mysql-compatibility.md b/content/en/docs/reference/compatibility/mysql-compatibility.md index baba7c7a5..6515f38a9 100644 --- a/content/en/docs/reference/compatibility/mysql-compatibility.md +++ b/content/en/docs/reference/compatibility/mysql-compatibility.md @@ -47,13 +47,6 @@ There are further limitations to calling stored procedures using CALL: CREATE PROCEDURE is not supported. You have to create the procedure directly on the underlying MySQL servers and not through Vitess. -### Temporary Tables - -Vitess has a limited support for temporary tables. It works only for unsharded keyspace. - -If the user create a temporary table then the session will start using reserved connections for any query sent on that session -and also the plans generated by those will not be caches. But, they will continue to use the plan caches from other sessions. - ### Window Functions and CTEs Vitess does not yet support Window Functions or Common Table Expressions. @@ -105,7 +98,12 @@ To configure VTGate to support `TLS` set `-mysql_server_ssl_cert` and `-mysql_se ## Temporary Tables -Vitess does not support the use of temporary tables. +Vitess has limited support for temporary tables. It works only for unsharded keyspaces. + +If the user creates a temporary table then the session will start using reserved connections for any query sent on that session. + +The query plans generated by this session will not be cached. It will still continue to use the query plan cached from other non-temporary table sessions. + ## Character Set and Collation From 882805fb28453c8bc16927d665a30bd71b4b4017 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 07:25:00 +0100 Subject: [PATCH 03/13] more info about reserved connections Signed-off-by: Andres Taylor --- .../query-serving/reserved-conn.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/en/docs/design-docs/query-serving/reserved-conn.md diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md new file mode 100644 index 000000000..db8fe6766 --- /dev/null +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -0,0 +1,29 @@ +--- +title: Reserved Connections +description: +weight: 1 +--- + +## Feature Description +Vitess uses connection pooling to minimise the memory usage of the underlying MySQL servers. +This means that different users connecting to a vtgate can be sharing a connected session to MySQL. +To make this as invisible as possible to users, Vitess works hard removing all query constructs that would normally need to change the state in that connection. +A simple example are user defined variables. When a user sets or evaluates an UDV, the vtgate will rewrite the query so that it doesn't actually do anything with user variables, and keep the state on the Vitess layer. +For some things a user might want to do, this is not enough, and in those cases, Vitess will use something called reserved connections. + +Reserved connections are used when changing system variables, or using temporary tables. + +### System variables and reserved connections +If a user does change a system variable, the user connection will be marked as needing reserved connections, and for all sub-sequent calls to Vitess, connection pooling is turned off for this particular session. +Any queries to a tablet from this session will create a reserved connection on that tablet that is reserved for the user and no one else. + +Connection pooling is an important part of what makes Vitess fast, so using constructs that turn it off should only be done in rare circumstances. +If you are using an application or library that is issues these kind of `SET` statements, the best way to avoid reserved connections is to make sure the global MySQL settings match the one the application is trying to set. When Vitess discovers that you are changing a system setting to the global value, Vitess just ingores those `SET`s. + +Once a session has been marked for reserved connections, it will stay as such until the user disconnects. + + +### Temporary tables and reserved connections +Temporary tables exist only in the context of a particular MySQL connection. +If a user uses temporary tables, Vitess will mark the tablet where the temp table lives as needing a reserved connection. Unlike the reserved connection setting for system variables, this is only for a single vttablet, not all connections. +It will continue to require a reserved connection for that tablet until the user disconnects - removing the temp table is not enough. From 1b7fcc80698e5b0d63c80f49f255d5b4efb169cd Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 07:28:23 +0100 Subject: [PATCH 04/13] shutting down reserved connections Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index db8fe6766..ab015f8f4 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -27,3 +27,7 @@ Once a session has been marked for reserved connections, it will stay as such un Temporary tables exist only in the context of a particular MySQL connection. If a user uses temporary tables, Vitess will mark the tablet where the temp table lives as needing a reserved connection. Unlike the reserved connection setting for system variables, this is only for a single vttablet, not all connections. It will continue to require a reserved connection for that tablet until the user disconnects - removing the temp table is not enough. + + +### Shutting down reserved connections +The same goes for all reserved connections. Once the vitess session that initiated the reserved connections disconnects, all reserved connections between the tablet and MySQL are terminated, and fresh, clean connections are returned to the connection pool. \ No newline at end of file From 2e0f702d32af1420f3303b3faafa10b8d7a09019 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 07:31:49 +0100 Subject: [PATCH 05/13] shutting down reserved connections Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index ab015f8f4..47ee49e72 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -9,8 +9,9 @@ Vitess uses connection pooling to minimise the memory usage of the underlying My This means that different users connecting to a vtgate can be sharing a connected session to MySQL. To make this as invisible as possible to users, Vitess works hard removing all query constructs that would normally need to change the state in that connection. A simple example are user defined variables. When a user sets or evaluates an UDV, the vtgate will rewrite the query so that it doesn't actually do anything with user variables, and keep the state on the Vitess layer. -For some things a user might want to do, this is not enough, and in those cases, Vitess will use something called reserved connections. +For some things a user might want to do, this is not enough, and in those cases, Vitess will use something called reserved connections. +This means a dedicated connection from a vttablet to the MySQL server. Reserved connections are used when changing system variables, or using temporary tables. ### System variables and reserved connections From d1be3d6d56dda7a246e4da5fbfb4cf531c1a6901 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 07:32:31 +0100 Subject: [PATCH 06/13] shutting down reserved connections Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 47ee49e72..0f99abbdb 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -31,4 +31,4 @@ It will continue to require a reserved connection for that tablet until the user ### Shutting down reserved connections -The same goes for all reserved connections. Once the vitess session that initiated the reserved connections disconnects, all reserved connections between the tablet and MySQL are terminated, and fresh, clean connections are returned to the connection pool. \ No newline at end of file +Once the vtgate session that initiated the reserved connections disconnects, all reserved connections between the vttablets and MySQL are terminated, and fresh, clean connections are returned to the connection pool. \ No newline at end of file From c16dccd7cb74b3196abee1637f02c2f40a5f3875 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 09:56:55 +0100 Subject: [PATCH 07/13] info about advisory locking Signed-off-by: Andres Taylor --- .../en/docs/design-docs/query-serving/reserved-conn.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 0f99abbdb..210b3920c 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -12,7 +12,7 @@ A simple example are user defined variables. When a user sets or evaluates an UD For some things a user might want to do, this is not enough, and in those cases, Vitess will use something called reserved connections. This means a dedicated connection from a vttablet to the MySQL server. -Reserved connections are used when changing system variables, or using temporary tables. +Reserved connections are used when changing system variables, using temporary tables, or when a user uses the `LOCK()` function to aquire advisory locks. ### System variables and reserved connections If a user does change a system variable, the user connection will be marked as needing reserved connections, and for all sub-sequent calls to Vitess, connection pooling is turned off for this particular session. @@ -29,6 +29,10 @@ Temporary tables exist only in the context of a particular MySQL connection. If a user uses temporary tables, Vitess will mark the tablet where the temp table lives as needing a reserved connection. Unlike the reserved connection setting for system variables, this is only for a single vttablet, not all connections. It will continue to require a reserved connection for that tablet until the user disconnects - removing the temp table is not enough. +### LOCK() and reserved connections +The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was aquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. + ### Shutting down reserved connections -Once the vtgate session that initiated the reserved connections disconnects, all reserved connections between the vttablets and MySQL are terminated, and fresh, clean connections are returned to the connection pool. \ No newline at end of file +Whenever a connection gets transformed into a reserved connection, a fresh, clean connections is returned to the connection pool to replace it. +Once the vtgate session that initiated the reserved connections disconnects, all reserved connections between the vttablets and MySQL are terminated. \ No newline at end of file From 384f85f6500326ac0e60e3da3f61bbc027c2ec68 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 09:58:25 +0100 Subject: [PATCH 08/13] spelling Signed-off-by: Andres Taylor --- .../en/docs/design-docs/query-serving/reserved-conn.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 210b3920c..097b458ab 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -5,21 +5,21 @@ weight: 1 --- ## Feature Description -Vitess uses connection pooling to minimise the memory usage of the underlying MySQL servers. +Vitess uses connection pooling to minimize the memory usage of the underlying MySQL servers. This means that different users connecting to a vtgate can be sharing a connected session to MySQL. To make this as invisible as possible to users, Vitess works hard removing all query constructs that would normally need to change the state in that connection. A simple example are user defined variables. When a user sets or evaluates an UDV, the vtgate will rewrite the query so that it doesn't actually do anything with user variables, and keep the state on the Vitess layer. For some things a user might want to do, this is not enough, and in those cases, Vitess will use something called reserved connections. This means a dedicated connection from a vttablet to the MySQL server. -Reserved connections are used when changing system variables, using temporary tables, or when a user uses the `LOCK()` function to aquire advisory locks. +Reserved connections are used when changing system variables, using temporary tables, or when a user uses the `LOCK()` function to acquire advisory locks. ### System variables and reserved connections If a user does change a system variable, the user connection will be marked as needing reserved connections, and for all sub-sequent calls to Vitess, connection pooling is turned off for this particular session. Any queries to a tablet from this session will create a reserved connection on that tablet that is reserved for the user and no one else. Connection pooling is an important part of what makes Vitess fast, so using constructs that turn it off should only be done in rare circumstances. -If you are using an application or library that is issues these kind of `SET` statements, the best way to avoid reserved connections is to make sure the global MySQL settings match the one the application is trying to set. When Vitess discovers that you are changing a system setting to the global value, Vitess just ingores those `SET`s. +If you are using an application or library that is issues these kind of `SET` statements, the best way to avoid reserved connections is to make sure the global MySQL settings match the one the application is trying to set. When Vitess discovers that you are changing a system setting to the global value, Vitess just ignores those `SET`s. Once a session has been marked for reserved connections, it will stay as such until the user disconnects. @@ -30,7 +30,7 @@ If a user uses temporary tables, Vitess will mark the tablet where the temp tabl It will continue to require a reserved connection for that tablet until the user disconnects - removing the temp table is not enough. ### LOCK() and reserved connections -The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was aquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. +The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was acquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. ### Shutting down reserved connections From 6f8f08d455bb982358540c48315cf5929d927cb7 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 10:01:30 +0100 Subject: [PATCH 09/13] temp tables Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 097b458ab..8b74e513e 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -26,8 +26,7 @@ Once a session has been marked for reserved connections, it will stay as such un ### Temporary tables and reserved connections Temporary tables exist only in the context of a particular MySQL connection. -If a user uses temporary tables, Vitess will mark the tablet where the temp table lives as needing a reserved connection. Unlike the reserved connection setting for system variables, this is only for a single vttablet, not all connections. -It will continue to require a reserved connection for that tablet until the user disconnects - removing the temp table is not enough. +If a user uses temporary tables, Vitess will mark the session as needing a reserved connection. It will continue to require a reserved connection until the user disconnects - removing the temp table is not enough. ### LOCK() and reserved connections The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was acquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. From a91f20ad49838e90acaf473eb752ed753ceb9c19 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 10:03:28 +0100 Subject: [PATCH 10/13] typo Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 8b74e513e..257c32048 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -28,7 +28,7 @@ Once a session has been marked for reserved connections, it will stay as such un Temporary tables exist only in the context of a particular MySQL connection. If a user uses temporary tables, Vitess will mark the session as needing a reserved connection. It will continue to require a reserved connection until the user disconnects - removing the temp table is not enough. -### LOCK() and reserved connections +### GET_LOCK() and reserved connections The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was acquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. From 01da73e1cda4972fb6484d8219c14b3b59ac1f65 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 10:09:44 +0100 Subject: [PATCH 11/13] links Signed-off-by: Andres Taylor --- .../design-docs/query-serving/reserved-conn.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 257c32048..6330da23c 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -6,16 +6,18 @@ weight: 1 ## Feature Description Vitess uses connection pooling to minimize the memory usage of the underlying MySQL servers. -This means that different users connecting to a vtgate can be sharing a connected session to MySQL. -To make this as invisible as possible to users, Vitess works hard removing all query constructs that would normally need to change the state in that connection. -A simple example are user defined variables. When a user sets or evaluates an UDV, the vtgate will rewrite the query so that it doesn't actually do anything with user variables, and keep the state on the Vitess layer. +This means that different users connecting to a vtgate can be sharing a connection session to MySQL. +To make this as invisible as possible to users, Vitess works hard removing all query constructs that would normally need to change the state in the MySQL connection. +A simple example are user defined variables. +When a user sets or evaluates an UDV, the vtgate will rewrite the query so that it doesn't actually do anything with user variables, and keep the state on the Vitess layer. For some things a user might want to do, this is not enough, and in those cases, Vitess will use something called reserved connections. -This means a dedicated connection from a vttablet to the MySQL server. -Reserved connections are used when changing system variables, using temporary tables, or when a user uses the `LOCK()` function to acquire advisory locks. +This means a dedicated connection from the vttablet to the MySQL server. +Reserved connections are used when changing system variables, using temporary tables, or when a user uses the locking functions to acquire advisory locks. ### System variables and reserved connections If a user does change a system variable, the user connection will be marked as needing reserved connections, and for all sub-sequent calls to Vitess, connection pooling is turned off for this particular session. +This only applies to some system settings. See more details [here](docs/design-docs/query-serving/set-stmt/) Any queries to a tablet from this session will create a reserved connection on that tablet that is reserved for the user and no one else. Connection pooling is an important part of what makes Vitess fast, so using constructs that turn it off should only be done in rare circumstances. @@ -26,10 +28,10 @@ Once a session has been marked for reserved connections, it will stay as such un ### Temporary tables and reserved connections Temporary tables exist only in the context of a particular MySQL connection. -If a user uses temporary tables, Vitess will mark the session as needing a reserved connection. It will continue to require a reserved connection until the user disconnects - removing the temp table is not enough. +If a user uses temporary tables, Vitess will mark the session as needing a reserved connection. It will continue to require a reserved connection until the user disconnects - removing the temp table is not enough. More info can be found [here.](docs/reference/compatibility/mysql-compatibility/#temporary-tables) ### GET_LOCK() and reserved connections -The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was acquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. +The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was acquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. More information can be found [here.](/docs/design-docs/query-serving/locking-functions/). ### Shutting down reserved connections From 5a046106abcae98845e314d6c622ec60fa17918f Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 10:14:57 +0100 Subject: [PATCH 12/13] links Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 6330da23c..61bd1a558 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -17,7 +17,7 @@ Reserved connections are used when changing system variables, using temporary ta ### System variables and reserved connections If a user does change a system variable, the user connection will be marked as needing reserved connections, and for all sub-sequent calls to Vitess, connection pooling is turned off for this particular session. -This only applies to some system settings. See more details [here](docs/design-docs/query-serving/set-stmt/) +This only applies to some system settings. See more details [here](/docs/design-docs/query-serving/set-stmt/) Any queries to a tablet from this session will create a reserved connection on that tablet that is reserved for the user and no one else. Connection pooling is an important part of what makes Vitess fast, so using constructs that turn it off should only be done in rare circumstances. @@ -28,7 +28,7 @@ Once a session has been marked for reserved connections, it will stay as such un ### Temporary tables and reserved connections Temporary tables exist only in the context of a particular MySQL connection. -If a user uses temporary tables, Vitess will mark the session as needing a reserved connection. It will continue to require a reserved connection until the user disconnects - removing the temp table is not enough. More info can be found [here.](docs/reference/compatibility/mysql-compatibility/#temporary-tables) +If a user uses temporary tables, Vitess will mark the session as needing a reserved connection. It will continue to require a reserved connection until the user disconnects - removing the temp table is not enough. More info can be found [here.](/docs/reference/compatibility/mysql-compatibility/#temporary-tables) ### GET_LOCK() and reserved connections The MySQL locking functions allows users to work with user level locks. Since the locks are tied to the connection, and freeing lock has to be done in the same connection as the lock was acquired, use of these functions will force a connection to become a reserved connection. This connection is also kept alive so it does not time out due to inactivity. More information can be found [here.](/docs/design-docs/query-serving/locking-functions/). From 73605f1abfa969b79789ddf908775c5f6e23a565 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Wed, 17 Feb 2021 10:16:24 +0100 Subject: [PATCH 13/13] links Signed-off-by: Andres Taylor --- content/en/docs/design-docs/query-serving/reserved-conn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/design-docs/query-serving/reserved-conn.md b/content/en/docs/design-docs/query-serving/reserved-conn.md index 61bd1a558..1a12f77ec 100644 --- a/content/en/docs/design-docs/query-serving/reserved-conn.md +++ b/content/en/docs/design-docs/query-serving/reserved-conn.md @@ -17,7 +17,7 @@ Reserved connections are used when changing system variables, using temporary ta ### System variables and reserved connections If a user does change a system variable, the user connection will be marked as needing reserved connections, and for all sub-sequent calls to Vitess, connection pooling is turned off for this particular session. -This only applies to some system settings. See more details [here](/docs/design-docs/query-serving/set-stmt/) +This only applies to some system settings. See more details [here.](/docs/design-docs/query-serving/set-stmt/) Any queries to a tablet from this session will create a reserved connection on that tablet that is reserved for the user and no one else. Connection pooling is an important part of what makes Vitess fast, so using constructs that turn it off should only be done in rare circumstances.