Connections to the server can use compression on the traffic between client and server to reduce the number of bytes sent over the connection. By default, connections are uncompressed, but can be compressed if the server and the client both support compression.
Compressed connections originate on the client side but affect CPU load on both the client and server sides because both sides perform compression and decompression operations. Because enabling compression decreases performance, its benefits occur primarily when there is low network bandwidth, network transfer time dominates the cost of compression and decompression operations, and result sets are large.
Compression control applies to connections to the server by client
programs and by servers participating in source/replica
replication. Compression control does not apply to Group
Replication connections, X Protocol connections, or connections
for FEDERATED
tables.
These configuration parameters are available for controlling connection compression:
Client programs support a
--compress
command-line option to specify use of compression for the connection to the server.For programs that use the MySQL C API, enabling the
MYSQL_OPT_COMPRESS
option for themysql_options()
function specifies use of compression for the connection to the server.For source/replica replication, enabling the
slave_compressed_protocol
system variable specifies use of compression for replica connections to the source.
In each case, when use of compression is specified, the connection
uses the zlib
compression algorithm if both
sides support it, with fallback to an uncompressed connection
otherwise.