3. !3
Percona Server 8.0
Percona Server 5.7
• Threadpool
• TokuDB
• MyRocks
• Audit log plugin
• Backup locks
• …
MySQL 8.0
• Window functions
• JSON
• New data dictionary
• Better defaults
• caching_sha2_password
• …
Percona Server 8.0
• Threadpool
• Window functions
• New data dictionary
• Backup locks
• …
+
=
4. !4
Percona Server 8.0
What’s absent in the above?
“A new great feature we have developed specifically for Percona Server
8.0 initial release”
Why is that?
Percona Server 8.0
• Threadpool
• Window functions
• New data dictionary
• Backup locks
• …
5. !5
MySQL GA features over timeGenerallyavailablefeatures
Time
MySQL 5.5 MySQL 5.6 MySQL 5.7 MySQL 8.0
7. !7
Percona Server 8.0
Thus, why
“A new great feature we have developed specifically for Percona Server 8.0
initial release”
is missing?
Because we release them as soon as they are ready – not holding them until
the next GA
OK, if not new features then what?
8. !8
Percona Server 8.0
OK, if not new features then what?
The main goal of the initial Percona Server 8.0 GA release is to have a
cohesive feature set where Percona Server 5.7 features and MySQL 8.0
features are integrated to play well together
9. !9
Key MySQL 8.0 features for integration
New data dictionary
• New InnoDB system tables: mysql.ibd
• Fast INFORMATION_SCHEMA queries
• No more FRMs
• Atomic DDLs
• SDIs when needed
No more legacy partitioning handler
• A SE must implement partitioning itself
• InnoDB was converted in 5.7
• Other MySQL-provided SEs don’t
support it
TempTable SE
• An internal in-memory SE
• Able to store VARCHAR
• Efficient processing of VARCHAR
queries
• Not exposed to users
Redo log optimisations
• Query threads access buffer
concurrently
• A dedicated thread writes and flushes it,
notifies query threads
10. !10
Selected themes of Percona Server
Storage engines
Performance/scalability
Flexibility
Management
Diagnostics
Security
11. !11
Percona Server 8.0: storage engines
TokuDB and MyRocks
Both will feature native partitioning
For upgrade path, native partitioning will be made available in 5.7 too
Under the hood, new data dictionary will store SE-specific metadata
12. !12
Percona Server 8.0: performance
Percona Server 5.7
• Buffer pool mutex split
• LRU flushing
• single-page flushing removal
• parallel doublewrite
MySQL 8.0
• Buffer pool mutex split
• VATS (CATS?) lock scheduling
• redo log optimisations
• fil_system mutex removal
contributed
--innodb_flush_method=ALL_O_DIRECT
will be re-evaluated in the context of redo log optimisations
13. !13
Percona Server 8.0: flexibility: MEMORY
Percona Server
5.7 MEMORY SE
MySQL 8.0
MEMORY SE
MySQL 8.0
TempTable SE
Can store VARCHAR ☑ ☑
Can store BLOB
(JSON, TEXT, …)
☑
Users can create
tables
☑ ☑
Query optimiser can
use if VARCHAR
☑
Thus, both Percona MEMORY SE extensions and TempTable will be needed
Percona MEMORY SE supports JSON, will applications use it?
14. !14
Percona Server 8.0: flexibility: SET
STATEMENT … FOR …
SET STATEMENT foreign_key_checks=OFF FOR INSERT INTO t1 VALUES (1)
MySQL 8.0 introduces
INSERT /*+ SET_VAR(foreign_key_checks=OFF) */ INTO t1 VALUES (1)
SET STATEMENT FOR /*+ SET_VAR () */
Supports SELECT and DML ☑ ☑
Supports any SQL statement ☑
Supports designated “hintable variables” ☑ ☑
Supports virtually any variable ☑
We plan to switch to SET_VAR syntax while keeping the SET STATEMENT
FOR functionality
15. !15
Percona Server 8.0: flexibility: compressed
columns with dictionaries
SET @dictionary_data = 'one' 'two' 'three' ‘four';
CREATE COMPRESSION DICTIONARY numbers (@dictionary data)
CREATE TABLE t(a JSON COLUMN_FORMAT COMPRESSED WITH
COMPRESSION_DICTIONARY numbers);
Compression dictionaries will be stored in a new data dictionary table
INFORMATION_SCHEMA tables XTRADB_ZIP_DICT,
XTRADB_ZIP_DICT_COLS will be reimplemented as views over DD
schema adjusted to match the rest of DD
16. !16
Percona Server 8.0: management: backup
locks
Percona Server 5.7:
• LOCK TABLES FOR BACKUP
• LOCK BINLOG FOR BACKUP
• START TRANSACTION WITH
CONSISTENT SNAPSHOT:
consistent across SEs and binlog
MySQL 8.0:
• LOCK INSTANCE FOR BACKUP
• performance_schema.log_status
MySQL functionality not enough to replace Percona Server features
All LOCK statements introduce new global MDL lock types
PS 8.0 will feature both sets of backup locks
XtraBackup will use what’s available
17. !17
Percona Server 8.0: diagnostics: QRT
Percona Server 5.7 QRT MySQL 8.0 PFS
Execution time histograms ☑ ☑
Percona Server Query Response Time plugin being removed in favor of
events_statements_histogram_by_digest,
events_statements_histogram_global Performance Schema tables
18. !18
Percona Server 8.0: security
Percona Server always used OpenSSL
MySQL 8.0 replaces YaSSL with OpenSSL
possible to roll out TLSv1.2 in e.g. mixed Percona Server/MySQL env
Percona Server 5.7:
• (5.7) file-per-table tablespace encryption
• (WIP) undo log encryption
• (WIP) redo log encryption
• temp tablespace encryption
• binlog encryption
• Vault keyring plugin
• … stay tuned
MySQL 8.0:
• (5.7) file-per-table tablespace encryption
• undo log encryption
• redo log encryption
backport
19. !19
Percona Server 8.0: last but not least
The initial GA release is also where we:
drop little-used or no longer meaningful features:
Per-session server ID,
Query cache patches,
…
make backwards-incompatible changes to existing features:
SET STATEMENT … FOR … to /*+ SET_VAR(…) */
The upgrade path will be clearly documented!