# Percona Server for MySQL 8.0.31-23 (2023-02-09) | Release date | February 9, 2023 | |---|---| | Install instructions | [Install Percona Server for MySQL](https://docs.percona.com/percona-server/8.0/installation.html) | | Download this version | [Percona Server for MySQL](https://www.percona.com/downloads/Percona-Server-LATEST/) [Percona Server for MySQL 8.0.31-23](https://www.percona.com/software/mysql-database/percona-server) includes all the features and bug fixes available in the [MySQL 8.0.31 Community Edition](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-31.html) in addition to enterprise-grade features developed by Percona. Percona Server for MySQL is a free, fully compatible, enhanced, and open source drop-in replacement for any MySQL database. It provides superior performance, scalability, and instrumentation. Percona Server for MySQL is trusted by thousands of enterprises to provide better performance and concurrency for their most demanding workloads. It delivers more value to MySQL server users with optimized performance, greater performance scalability and availability, enhanced backups, and increased visibility. For [training](https://www.percona.com/training), contact [Percona Training - Start learning now](https://learn.percona.com/contact-me). ## Release highlights Improvements and bug fixes introduced by Oracle for MySQL 8.0.31 and included in Percona Server for MySQL are the following: * MySQL adds support for the SQL standard [`INTERSECT`](https://dev.mysql.com/doc/refman/8.0/en/intersect.html) and [`EXCEPT`](https://dev.mysql.com/doc/refman/8.0/en/except.html) table operators. * InnoDB supports parallel index builds. This improves index build performance. The sorted index entries are loaded into a B-tree in a multithread. In previous releases, this action was performed by a single thread. * The Performance and sys schemas show metrics for the global and session memory limits introduced in MySQL 8.0.28. The following columns have been added to the Performance Schema tables: | Performance Schema tables | Columns | | ------------------------------------------------------------------------------------ | --------------------------------------------------------- | | SETUP_INSTRUMENTS | FLAGS | | THREADS | CONTROLLED_MEMORY, MAX_CONTROLLED_MEMORY, TOTAL_MEMORY, MAX_TOTAL_MEMORY | | EVENTS_STATEMENTS_CURRENT, EVENTS_STATEMENTS_HISTORY, EVENTS_STATEMENTS_HISTORY_LONG | MAX_CONTROLLED_MEMORY, MAX_TOTAL_MEMORY | | Statement Summary Tables | MAX_CONTROLLED_MEMORY, MAX_TOTAL_MEMORY | | Performance Schema Connection Tables | MAX_SESSION_CONTROLLED_MEMORY, MAX_SESSION_TOTAL_MEMORY | | PREPARED_STATEMENTS_INSTANCES | MAX_CONTROLLED_MEMORY, MAX_TOTAL_MEMORY | The following columns have been added to the sys schema `STATEMENT_ANALYSIS` and `X$STATEMENT_ANALYSIS` views: * MAX_CONTROLLED_MEMORY * MAX_TOTAL_MEMORY The `controlled_by_default` flag has been added to the `PROPERTIES` column of the `SETUP_INSTRUMENTS` table. Now, you can add and remove non-global memory instruments to the set of controlled-memory instruments. To do this, set the value of the `FLAGS` column of `SETUP_INSTRUMENTS`. ```sql SQL> UPDATE PERFORMANCE_SCHEMA.SETUP_INTRUMENTS SET FLAGS="controlled" WHERE NAME='memory/sql/NET::buff'; ``` * The `audit_log_flush` variable has been deprecated and will be removed in future releases. Find the full list of bug fixes and changes in the [MySQL 8.0.31 Release Notes](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-31.html). ## Improvements * [PS-7963](https://jira.percona.com/browse/PS-7963): The trigger definitions are not cached in the table cache when using SELECT statements. This improvement adds the following variables: * [`table_open_cache_triggers`](../trigger-updates.md#tableopencachetriggers) system variable * [`table_open_cache_triggers_hits`, `table_open_cache_triggers_misses`, and `table_open_cache_triggers_overflows`](../trigger-updates.md#status-variables) status variables * [PS-8433](https://jira.percona.com/browse/PS-8433): Reduces memory spent when caching triggers by replacing a fixed-size error buffer with a variable-size error buffer. * [PS-8593](https://jira.percona.com/browse/PS-8593): The binary tarballs compiled in the `RelWithDebInfo` configuration include full `("-g")` rather than minimal `("-g1")` debug information. * [PS-8553](https://jira.percona.com/browse/PS-8553): The Oracle Linux 9 RPM packages are now built with ZenFS enabled. ## Bug fixes * [PS-1098](https://jira.percona.com/browse/PS-1098): Manually rotating the log files by calling `audit_log_flush` multiple times resulted in using a wrong log file. * [PS-7923](https://jira.percona.com/browse/PS-7923): Assertion `owned_gtids.is_owned_by(thd->owned_gtid, thd->thread_id())` failed. * [PS-8106](https://jira.percona.com/browse/PS-8106): MySQL exited when the replication was stopped on replicating a `CREATE TABLE AS` statement. * [PS-8128](https://jira.percona.com/browse/PS-8128): An in-place upgrade of views that refer to `performance_schema` tables failed. * [PS-8328](https://jira.percona.com/browse/PS-8328): MySQL 8.0 exited when using `group_concat` with `group by with rollup`. * [PS-8503](https://jira.percona.com/browse/PS-8503): `checkpoint_age` related status had no value. (Thanks to Huang Zhiyong for reporting this issue.) * [PS-8547](https://jira.percona.com/browse/PS-8547): Added a space after the binary name to count all active processes, including processes started by the binary. (Thanks to user Elbandi for reporting this issue.) * [PS-8589](https://jira.percona.com/browse/PS-8589): The replica crashed with fatal signal 11. * [PS-8327](https://jira.percona.com/browse/PS-8327): The usage of `ALTER TABLE ... CHECK PARTITION` inside stored procedure failed. * [PS-8442](https://jira.percona.com/browse/PS-8442): A fix for a crash in `buf_pool_invalidate_instance()`. ## Deprecated and removed This release removes the following features, system variables, status variables, and options: * `innodb_encryption_redo_key_version` * `innodb_encryption_rotation_pages_read_from_cache` * `innodb_encryption_rotation_pages_read_from_disk` * `innodb_encryption_rotation_pages_modified` * `innodb_encryption_rotation_pages_flushed` * `innodb_encryption_rotation_estimated_iops` * `innodb_encryption_rotation_list_length` * `innodb_num_pages_encrypted` * `innodb_num_pages_decrypted` * `innodb_encryption_threads` * `innodb_encryption_rotate_key_age` * `innodb_encryption_rotation_loops` * `innodb_default_encryption_key_id` * `rotate_system_key` and any dependencies This release changes the following system variable options: * `ONLINE_TO_KEYRING` and `ONLINE_FROM_KEYRING_TO_UNENCRYPTED` options are removed in the `default_table_encryption` variable. * The `innodb_sys_tablespace_encrypt` variable data type is changed to `Boolean`. ## Useful links The [Percona Server for MySQL GitHub location](https://github.com/percona/percona-server/) [Contribute to the documentation](https://github.com/percona/psmysql-docs/blob/8.0/contributing.md)