Percona Server 8...Percona Server 8.0: storage engines TokuDB and MyRocks Both will feature native...
Transcript of Percona Server 8...Percona Server 8.0: storage engines TokuDB and MyRocks Both will feature native...
Santa Clara, California | April 23th – 25th, 2018
Percona Server 8.0 Laurynas Biveinis & Tyler Duzan
Percona
!2
Percona Server 8.0 = Percona Server 5.7 + MySQL 8.0
!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
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
MySQL GA features over timeG
ener
ally
ava
ilabl
e fe
atur
es
Time
MySQL 5.5 MySQL 5.6 MySQL 5.7 MySQL 8.0
!6
Percona Server-specific GA features over time
Gen
eral
ly a
vaila
ble
Perc
ona
feat
ures
Time
PS 5.5 PS 5.6 PS 5.7 PS 8.0
!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
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
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
Selected themes of Percona Server
Storage engines
Performance/scalability
Flexibility
Management
Diagnostics
Security
!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
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
Percona Server 8.0: flexibility: MEMORYPercona 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
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
Percona Server 8.0: flexibility: compressed columns with dictionariesSET @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
Percona Server 8.0: management: backup locksPercona 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
Percona Server 8.0: diagnostics: QRTPercona 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
Percona Server 8.0: securityPercona 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
Percona Server 8.0: last but not leastThe 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!
!20
Percona Server 8.0!
Thank you! Questions?
!21
Rate My Session
!22
Thank You Sponsors!!