SlideShare a Scribd company logo
Zohar Elkayam
www.realdbamagic.com
Twitter: @realmgic
MySQL 5.7 New Features
For Developers
Who am I?
• Zohar Elkayam, CTO at Brillix
• Programmer, DBA, team leader, database trainer, public
speaker, and a senior consultant for over 18 years
• Oracle ACE Associate
• Part of ilOUG – Israel Oracle User Group
• Blogger – www.realdbamagic.com and www.ilDBA.co.il
2 http://brillix.co.il
About Brillix
• We offer complete, integrated end-to-end solutions based on best-of-
breed innovations in database, security and big data technologies
• We provide complete end-to-end 24x7 expert remote database
services
• We offer professional customized on-site trainings, delivered by our
top-notch world recognized instructors
3
Some of Our Customers
http://brillix.co.il4
Agenda
•Optimizer, Performance and InnoDB changes
•Native JSON datatype
•The Performance Schema and SYS Schema
•Other features we should know
•What are we waiting for in MySQL 8.0?
http://brillix.co.il5
Versions Guide
•MySQL 5.7 released in October 2015
•Current version 5.7.16 (released October 2016)
• Over 200+ new features!
•Next major version will be MySQL 8.0
(Currently, DMR – a Development Milestone Release)
http://brillix.co.il6
Optimizer, Performance and
InnoDB Changes
http://brillix.co.il7
How Does a Query Run?
http://brillix.co.il8
Optimizer Changes
• Parser and Optimizer refactoring
• Readability, maintainability and stability
• Separate parsing, optimizing, execution stages
• Easier feature additions, with lessened risk
• New hint framework: easier to manage, new hints
• Cost-based optimizer
• Configurable and tunable: mysql.server_cost and
mysql.engine_cost
• API for where data resides: on disk or in cache
http://brillix.co.il9
MySQL Optimizer
http://brillix.co.il10
Cost-based Query Optimization
•Assign cost to operations
•Assign cost to partial or alternative plans
•Search for plan with lowest cost (“best plan”)
•Cost base optimization control
• Access method
• Join order
• Subquery strategy
http://brillix.co.il11
Optimizer Cost Model
http://brillix.co.il12
0
20
40
60
80
100
Q3 Q7 Q8 Q9 Q12
Executiontimerelativeto5.6(%)
5 out of 22 queries get a much improved query plan (others remain the same)
MySQL 5.6
MySQL 5.7
13
Source: MySQL 5.7: 20 Years in the Making! By Geir Høydalsvik, Sr. Director, MySQL Engineering
Optimizer Cost Model: Performance Improvements
DBT-3 (Size Factor 10, CPU Bound)
0
20
40
60
80
100
Q2 Q18
Executiontimerelativeto5.6(%)
CPU bound
5.6
5.7
Optimizer Cost Model: Performance Improvements
DBT-3 (Size Factor 10)
2 out of 22 queries get a significantly improved query plan (others remain the same)
0
20
40
60
80
100
Q2 Q18
Executiontimerelativeto5.6(%)
Disk bound
5.6
5.7
14 Source: MySQL 5.7: 20 Years in the Making! By Geir Høydalsvik, Sr. Director, MySQL Engineering
Adjustable Cost Constants (Experimental!)
• We can change the costs factors by changing system
tables:
• Use mysql.engine_cost and mysql.server_costs to
change default values
• Use FLUSH command to make server aware of new values
(only new connections will see updated cost constants)
http://brillix.co.il15
update mysql.engine_cost set cost_value=2
where cost_name='io_block_read_cost';
flush optimizer_costs;
The Query Rewrite Plugin
• New pre and post parse query rewrite APIs
• Users can write their own plug-ins
• Provides a post-parse query plugin
• Rewrite problematic queries without the need to make application
changes
• Add hints
• Modify join order
• Improve problematic queries from ORMs, third party apps, etc.
• Eliminates many legacy use cases for proxies
http://brillix.co.il16
InnoDB Improvements: Temporary Tables
• Temp tables are no longer stored in normal system tables
• Definitions can be maintained in-memory (without persisting
to the disk)
• Locking constraints can be relaxed since only one client can
see these tables.
http://brillix.co.il17
InnoDB Improvements: Native Partitioning
•Eliminates previous limitations
•Eliminates resource usage problems
• No longer using the ha_partition handler
• Reduce memory usage by 90%
• MySQL 5.7.9 will try to upgrade old partitions to native or
Use ALTER TABLE ... UPGRADE PARTITIONING
command
•Transportable tablespace support (5.7.4)
http://brillix.co.il18
InnoDB Bulk Load Performance
•Bulk loading is now used when creating or rebuilding
indexes
•Much faster INDEX creation:
• 2-3 x performance improvement for ADD/CREATE INDEX
operations
• 2-5% improvement for standard INSERT operations
http://brillix.co.il19
InnoDB Page level Compression
•Not the same as Table Compression (5.1 feature)
•Reduces IO for better performance
•The compressed data is written to disk, where the hole
punching mechanism then releases empty blocks from
the end of the page.
•If compression fails, data is written out as-is.
•Supports Zlib and LZ4 compressions
http://brillix.co.il20
InnoDB Online Operations
•Resize the InnoDB Buffer Pool online
•More online ALTER operations
• Rename indexes
• Enlarge Varchar columns
• Optimize Table (5.7.4)
•Truncate undo logs
•More dynamic configuration variables
http://brillix.co.il21
Native JSON Support
http://brillix.co.il22
The JSON Native Datatype
• New native data type: JSON
• Supports all JSON internal types
• Numbers, strings, bool
• Objects, JSON arrays
• Supports also extended data types: date, time, datetime, and
timestamp
• Efficient access: optimized for read intensive workload
• Performance: fast access to array cells by creating indexes
• MySQL Document Store (5.7.12)
http://brillix.co.il23
Why Not Just Use TEXT/Varchar?
•Document validation: parse and validation on insert
•Efficient binary format
• Allows quicker access to object members and array
elements
• Binary format of JSON type is very efficient at searching
• Storing as TEXT performs over 10x worse at traversal
•Built-in handling functions
http://brillix.co.il24
Built-in JSON Functions
•5.7 has built in functions to CREATE, SEARCH,
MODIFY and RETURN JSON documents and JSON
values
•For a complete list of the JSON functions:
https://dev.mysql.com/doc/refman/5.7/en/json-function-
reference.html
http://brillix.co.il25
Create JSON_OBJECT and JSON_ARRAY
•Use JSON_OBJECT to create JSON from tables:
•JSON_ARRAY is a function that generates a
JSON array from a list of values
http://brillix.co.il26
mysql> select JSON_OBJECT('id', id, 'firstName', first_name, 'lastName',
last_name) from employees_old;
+-----------------------------------------------------------------------+
| JSON_OBJECT('id', id, 'firstName', first_name, 'lastName', last_name) |
+-----------------------------------------------------------------------+
| {"id": 1, "lastName": "Elkayam", "firstName": "Tamar"} |
| {"id": 2, "lastName": "Elkayam", "firstName": "Efrat"} |
| {"id": 3, "lastName": "Elkayam", "firstName": "Zohar"} |
| {"id": 4, "lastName": "Elkayam", "firstName": "Ido"} |
+-----------------------------------------------------------------------+
4 rows in set (0.00 sec)
Extracting a Value: JSON_EXTRACT
•JSON_EXTRACT – Extracts data from the JSON
• Uses JSON Path
• supports two shorthand operators:
http://brillix.co.il27
JSON_EXTACT (column_name, “$.type”(
column_name->"$.type" (extract)
column_name->>"$.type" (extract + unquote)
Searching In JSON
•Use JSON_SEARCH to find paths with certain data
•Use JSON_CONTAINS and JSON_CONTAIN_PATH
to know if data exists in the document
•Use the extract shorthand syntax to locate the rows
containing data
http://brillix.co.il28
JSON_SEARCH (column_name, ‘one-or-all’, ‘value’(
WHERE column_name->"$.type" = ‘value’
Modifying JSON Documents
•We can modify existing JSON with various functions
• JSON_APPEND/JSON_ARRAY_APPEND: appends
value/JSON array to a JSON documents
• JSON_INSERT/JSON_ARRAY_INSERT: adds data/JSON
array to a JSON
• JSON_MERGE: merge JSONs
• JSON_REPLACE: replace values at path
• JSON_SET: replace value at path or adds it if not exist
http://brillix.co.il29
Performance: Functional Indexes with JSON
•Indexing of Documents using Generated Columns
•InnoDB supports indexes on both STORED and
VIRTUAL (default) Generated Columns
•New expression analyzer automatically uses the best
“functional” index available
http://brillix.co.il30
alter table employees add id numeric as (data->>"$.id");
create index emp_id on employees(id);
Performance Schema and
SYS Schema
http://brillix.co.il31
Performance Schema
•Performance monitoring schema
•Include various table to help us with instrumentation
and performance monitoring
• Memory Instrumentation
• Statement Instrumentation
• Transactions and Locks
• Additional Information: replication, stored routines, etc.
http://brillix.co.il32
What’s New in Performance Schema
•User variables, status variables (session/global)
•Reduced footprint, memory usage and overhead
•Total of 35 new tables – 5.6 had 52, 5.7 has 87 (with
983 instrumentations!)
•But using the performance schema might be a bit too
complicated….
http://brillix.co.il33
The SYS Schema
• A set of objects that helps DBAs and developers interpret
data collected by the Performance Schema
• Provides helper objects that answer common performance,
health, usage, and monitoring questions
• Introduced in 5.6 as part of an extension to MySQL
(available at GitHub: https://github.com/mysql/mysql-sys)
• MySQL 5.7.7+ includes the SYS schema by default
http://brillix.co.il34
MySQL SYS Summary Views
• Reference set of views solving various administrator use cases
• Simple views, you can create/copy your own, sys is not “locked
down”
• Build upon both performance_schema and
INFORMATION_SCHEMA
• Both formatted and raw views are available
• All raw views are prefixed with x$
• Raw views are there for tools to poll
• Formatted views are for humans and the command line
http://brillix.co.il35
What Data Can We See In Summary Views?
•SYS schema comes with multiple dimensions for
summary views:
• User/Host summary views
• IO summary views
• Schema analysis
• Wait and Lock wait analysis
• Statement analysis
• Memory views
http://brillix.co.il36
Formatter and Helper Functions
• SYS Schema also provides formatter and helper functions:
• Make output human readable
• Format time appropriately
• Format bytes appropriately
• Truncate output for large width values for CLI
• Extract object names
• Check instrumentation state
• Performance Schema Config Helper Procedures
http://brillix.co.il37
Useful SYS Functions
• Formatter:
• format_time
• format_bytes
• format_path
• format_statement
• Extractor
• extract_table_from_file_name
• extract_schema_from_file_name
• Performance Schema States
• ps_is_account_enabled
• ps_is_consumer_enabled
• ps_is_instrument_default_enabled
• ps_is_instrument_default_timed
• ps_is_thread_instrumented
http://brillix.co.il38
Short Demo for SYS Schema
http://brillix.co.il39
Other Features and MySQL
8.0
http://brillix.co.il40
Generated Columns (5.7.5)
•Virtual Columns – functional columns calculated on the
fly OR stored result
•Generated column can use JSON extracts
•Support Indexes – Functional Indexes
•Example by Percona:
https://www.percona.com/blog/2015/04/29/generated-
virtual-columns-in-mysql-5-7-labs/
http://brillix.co.il41
Server Side Timeouts (5.7.5)
•Interrupting the execution of a statement when it takes
longer to complete
• Defined at the Global for server, per session, or for
individual SELECT statements
•Example
http://brillix.co.il42
SET GLOBAL MAX_STATEMENT_TIME=1000;
SET SESSION MAX_STATEMENT_TIME=2000;
SELECT /* MAX_STATEMENT_TIME=1000 */ * FROM table;
What Are We Waiting For In MySQL 8.0?
•Improve with UTF8 support: default will be utf8mb4
instead of latin1
•Transactional data dictionary
•Common Table Expression (CTE)
•Invisible mode for Indexes and other object types
http://brillix.co.il43
What Are We Waiting For In MySQL 8.0?
(cont.)
•Performance changes
• Cost based optimizer statistics
• Remove buffer pool mutexes
• Redo log improvements for scalability
• Memcache improvement to support multiple get and range
scan
•Bug Fixes: for example, persistent auto increment (bug
#199, created on 27 March 2003)
http://brillix.co.il44
What Features Did We NOT Talk About?
•MySQL Document Store (The X Plugin and X Protocol)
•Security Improvements
•GIS Improvements
•Replication Improvements
•More (200+ new features!):
see http://www.thecompletelistoffeatures.com/
for more details!
http://brillix.co.il45
Q&A
http://brillix.co.il46
Summary
•Performance, Optimizer and other InnoDB features are
really important
•Use JSON and other document store features to make
more with MySQL
•Learn how to use SYS Schema to leverage internal
knowledge to your advantage
http://brillix.co.il47
Thank You
Zohar Elkayam
twitter: @realmgic
Zohar@Brillix.co.il
www.realdbamagic.com
http://brillix.co.il48

More Related Content

What's hot (20)

PDF
Advanced PL/SQL Optimizing for Better Performance 2016
Zohar Elkayam
 
PDF
Docker Concepts for Oracle/MySQL DBAs and DevOps
Zohar Elkayam
 
PDF
PL/SQL New and Advanced Features for Extreme Performance
Zohar Elkayam
 
PDF
The art of querying – newest and advanced SQL techniques
Zohar Elkayam
 
PDF
Oracle Database Advanced Querying
Zohar Elkayam
 
PDF
Rapid Cluster Computing with Apache Spark 2016
Zohar Elkayam
 
PDF
Oracle 12.2 sharded database management
Leyi (Kamus) Zhang
 
PPTX
Is SQLcl the Next Generation of SQL*Plus?
Zohar Elkayam
 
PDF
DOAG Oracle Unified Audit in Multitenant Environments
Stefan Oehrli
 
PDF
MariaDB: Connect Storage Engine
Kangaroot
 
PDF
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
Marco Gralike
 
PDF
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
PDF
MySQL as a Document Store
Ted Wennmark
 
PDF
Redefining tables online without surprises
Nelson Calero
 
PDF
MySQL 8.0 Optimizer Guide
Morgan Tocker
 
PDF
MySQL Performance - Best practices
Ted Wennmark
 
PDF
An introduction into Oracle VM V3.x
Marco Gralike
 
PDF
01 upgrade to my sql8
Ted Wennmark
 
PDF
Upcoming changes in MySQL 5.7
Morgan Tocker
 
PDF
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Filipe Silva
 
Advanced PL/SQL Optimizing for Better Performance 2016
Zohar Elkayam
 
Docker Concepts for Oracle/MySQL DBAs and DevOps
Zohar Elkayam
 
PL/SQL New and Advanced Features for Extreme Performance
Zohar Elkayam
 
The art of querying – newest and advanced SQL techniques
Zohar Elkayam
 
Oracle Database Advanced Querying
Zohar Elkayam
 
Rapid Cluster Computing with Apache Spark 2016
Zohar Elkayam
 
Oracle 12.2 sharded database management
Leyi (Kamus) Zhang
 
Is SQLcl the Next Generation of SQL*Plus?
Zohar Elkayam
 
DOAG Oracle Unified Audit in Multitenant Environments
Stefan Oehrli
 
MariaDB: Connect Storage Engine
Kangaroot
 
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
Marco Gralike
 
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
MySQL as a Document Store
Ted Wennmark
 
Redefining tables online without surprises
Nelson Calero
 
MySQL 8.0 Optimizer Guide
Morgan Tocker
 
MySQL Performance - Best practices
Ted Wennmark
 
An introduction into Oracle VM V3.x
Marco Gralike
 
01 upgrade to my sql8
Ted Wennmark
 
Upcoming changes in MySQL 5.7
Morgan Tocker
 
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Filipe Silva
 

Viewers also liked (20)

PDF
MySQL 5.7 Replication News
Ted Wennmark
 
PPTX
Discovering MySQL 5.7 @ InstantPost
Akhil Mohan
 
PDF
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Ted Wennmark
 
PDF
New awesome features in MySQL 5.7
Zhaoyang Wang
 
PDF
Performance Schema in MySQL (Danil Zburivsky)
Ontico
 
PDF
MySQL Troubleshooting with the Performance Schema
Sveta Smirnova
 
KEY
MySQL Performance - SydPHP October 2011
Graham Weldon
 
PDF
The MySQL Performance Schema & New SYS Schema
Ted Wennmark
 
ODP
MySQL 5.7 clustering: The developer perspective
Ulf Wendel
 
PDF
MySQL Oslayer performace optimization
Louis liu
 
PDF
An Overview to MySQL SYS Schema
Mydbops
 
PPTX
MySQL Replication Evolution -- Confoo Montreal 2017
Dave Stokes
 
PDF
Performance Schema for MySQL Troubleshooting
Sveta Smirnova
 
ODP
MySQL Monitoring Mechanisms
Mark Leith
 
PDF
Replication in the wild ankara cloud meetup - feb 2017
AnkaraCloud
 
PDF
MySQL User Camp: GTIDs
Shivji Kumar Jha
 
PDF
MySQL User Camp: MySQL Cluster
Shivji Kumar Jha
 
PDF
Mysql tech day_paris_ps_and_sys
Mark Leith
 
PDF
Performance Schema for MySQL Troubleshooting
Sveta Smirnova
 
PDF
Open source India - MySQL Labs: Multi-Source Replication
Shivji Kumar Jha
 
MySQL 5.7 Replication News
Ted Wennmark
 
Discovering MySQL 5.7 @ InstantPost
Akhil Mohan
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Ted Wennmark
 
New awesome features in MySQL 5.7
Zhaoyang Wang
 
Performance Schema in MySQL (Danil Zburivsky)
Ontico
 
MySQL Troubleshooting with the Performance Schema
Sveta Smirnova
 
MySQL Performance - SydPHP October 2011
Graham Weldon
 
The MySQL Performance Schema & New SYS Schema
Ted Wennmark
 
MySQL 5.7 clustering: The developer perspective
Ulf Wendel
 
MySQL Oslayer performace optimization
Louis liu
 
An Overview to MySQL SYS Schema
Mydbops
 
MySQL Replication Evolution -- Confoo Montreal 2017
Dave Stokes
 
Performance Schema for MySQL Troubleshooting
Sveta Smirnova
 
MySQL Monitoring Mechanisms
Mark Leith
 
Replication in the wild ankara cloud meetup - feb 2017
AnkaraCloud
 
MySQL User Camp: GTIDs
Shivji Kumar Jha
 
MySQL User Camp: MySQL Cluster
Shivji Kumar Jha
 
Mysql tech day_paris_ps_and_sys
Mark Leith
 
Performance Schema for MySQL Troubleshooting
Sveta Smirnova
 
Open source India - MySQL Labs: Multi-Source Replication
Shivji Kumar Jha
 
Ad

Similar to MySQL 5.7 New Features for Developers (20)

PDF
What's New in MySQL 5.7
Olivier DASINI
 
PPTX
MySQL Tech Tour 2015 - 5.7 Whats new
Mark Swarbrick
 
PDF
MySQL 5.7: What's New, Nov. 2015
Mario Beck
 
PDF
What's New MySQL 8.0?
OracleMySQL
 
ODP
MySQL 5.7 - What's new and How to upgrade
Abel Flórez
 
PPTX
What's New in Oracle BI for Developers
Datavail
 
PDF
MySQL Shell - The Best MySQL DBA Tool
Miguel Araújo
 
PDF
My sql 56_roadmap_april2012
sqlhjalp
 
PDF
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Geir Høydalsvik
 
PDF
MySQL 5.7 - What's new, How to upgrade and Document Store
Abel Flórez
 
PDF
Upgrade to MySQL 8.0!
Ted Wennmark
 
PDF
Upgrading to my sql 8.0
Ståle Deraas
 
PDF
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Jaime Crespo
 
PDF
MySQL 5.7 what's new
Ricky Setyawan
 
PDF
[db tech showcase Tokyo 2014] B15: Scalability with MariaDB and MaxScale by ...
Insight Technology, Inc.
 
PDF
PostgreSQL 15 and its Major Features -(Aakash M - Mydbops) - Mydbops Opensour...
Mydbops
 
PPTX
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Geir Høydalsvik
 
PDF
MySQL 8.0.1 DMR
MySQL Brasil
 
PDF
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
Aurimas Mikalauskas
 
PDF
Access Data from XPages with the Relational Controls
Teamstudio
 
What's New in MySQL 5.7
Olivier DASINI
 
MySQL Tech Tour 2015 - 5.7 Whats new
Mark Swarbrick
 
MySQL 5.7: What's New, Nov. 2015
Mario Beck
 
What's New MySQL 8.0?
OracleMySQL
 
MySQL 5.7 - What's new and How to upgrade
Abel Flórez
 
What's New in Oracle BI for Developers
Datavail
 
MySQL Shell - The Best MySQL DBA Tool
Miguel Araújo
 
My sql 56_roadmap_april2012
sqlhjalp
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Geir Høydalsvik
 
MySQL 5.7 - What's new, How to upgrade and Document Store
Abel Flórez
 
Upgrade to MySQL 8.0!
Ted Wennmark
 
Upgrading to my sql 8.0
Ståle Deraas
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Jaime Crespo
 
MySQL 5.7 what's new
Ricky Setyawan
 
[db tech showcase Tokyo 2014] B15: Scalability with MariaDB and MaxScale by ...
Insight Technology, Inc.
 
PostgreSQL 15 and its Major Features -(Aakash M - Mydbops) - Mydbops Opensour...
Mydbops
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Geir Høydalsvik
 
MySQL 8.0.1 DMR
MySQL Brasil
 
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
Aurimas Mikalauskas
 
Access Data from XPages with the Relational Controls
Teamstudio
 
Ad

More from Zohar Elkayam (14)

PDF
Oracle Advanced SQL and Analytic Functions
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem 20170527
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem (c17lv version)
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs To Know About The Hadoop Ecosystem
Zohar Elkayam
 
PDF
Oracle Database Advanced Querying (2016)
Zohar Elkayam
 
PDF
OOW2016: Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
PPTX
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
PPTX
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
PDF
Advanced PLSQL Optimizing for Better Performance
Zohar Elkayam
 
PDF
The Hadoop Ecosystem for Developers
Zohar Elkayam
 
PDF
Big data for cio 2015
Zohar Elkayam
 
PDF
Intro to Big Data
Zohar Elkayam
 
PDF
Oracle Data Guard A to Z
Zohar Elkayam
 
PDF
Oracle Data Guard Broker Webinar
Zohar Elkayam
 
Oracle Advanced SQL and Analytic Functions
Zohar Elkayam
 
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem 20170527
Zohar Elkayam
 
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem (c17lv version)
Zohar Elkayam
 
Things Every Oracle DBA Needs To Know About The Hadoop Ecosystem
Zohar Elkayam
 
Oracle Database Advanced Querying (2016)
Zohar Elkayam
 
OOW2016: Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
Advanced PLSQL Optimizing for Better Performance
Zohar Elkayam
 
The Hadoop Ecosystem for Developers
Zohar Elkayam
 
Big data for cio 2015
Zohar Elkayam
 
Intro to Big Data
Zohar Elkayam
 
Oracle Data Guard A to Z
Zohar Elkayam
 
Oracle Data Guard Broker Webinar
Zohar Elkayam
 

Recently uploaded (20)

PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 

MySQL 5.7 New Features for Developers

  • 2. Who am I? • Zohar Elkayam, CTO at Brillix • Programmer, DBA, team leader, database trainer, public speaker, and a senior consultant for over 18 years • Oracle ACE Associate • Part of ilOUG – Israel Oracle User Group • Blogger – www.realdbamagic.com and www.ilDBA.co.il 2 http://brillix.co.il
  • 3. About Brillix • We offer complete, integrated end-to-end solutions based on best-of- breed innovations in database, security and big data technologies • We provide complete end-to-end 24x7 expert remote database services • We offer professional customized on-site trainings, delivered by our top-notch world recognized instructors 3
  • 4. Some of Our Customers http://brillix.co.il4
  • 5. Agenda •Optimizer, Performance and InnoDB changes •Native JSON datatype •The Performance Schema and SYS Schema •Other features we should know •What are we waiting for in MySQL 8.0? http://brillix.co.il5
  • 6. Versions Guide •MySQL 5.7 released in October 2015 •Current version 5.7.16 (released October 2016) • Over 200+ new features! •Next major version will be MySQL 8.0 (Currently, DMR – a Development Milestone Release) http://brillix.co.il6
  • 7. Optimizer, Performance and InnoDB Changes http://brillix.co.il7
  • 8. How Does a Query Run? http://brillix.co.il8
  • 9. Optimizer Changes • Parser and Optimizer refactoring • Readability, maintainability and stability • Separate parsing, optimizing, execution stages • Easier feature additions, with lessened risk • New hint framework: easier to manage, new hints • Cost-based optimizer • Configurable and tunable: mysql.server_cost and mysql.engine_cost • API for where data resides: on disk or in cache http://brillix.co.il9
  • 11. Cost-based Query Optimization •Assign cost to operations •Assign cost to partial or alternative plans •Search for plan with lowest cost (“best plan”) •Cost base optimization control • Access method • Join order • Subquery strategy http://brillix.co.il11
  • 13. 0 20 40 60 80 100 Q3 Q7 Q8 Q9 Q12 Executiontimerelativeto5.6(%) 5 out of 22 queries get a much improved query plan (others remain the same) MySQL 5.6 MySQL 5.7 13 Source: MySQL 5.7: 20 Years in the Making! By Geir Høydalsvik, Sr. Director, MySQL Engineering Optimizer Cost Model: Performance Improvements DBT-3 (Size Factor 10, CPU Bound)
  • 14. 0 20 40 60 80 100 Q2 Q18 Executiontimerelativeto5.6(%) CPU bound 5.6 5.7 Optimizer Cost Model: Performance Improvements DBT-3 (Size Factor 10) 2 out of 22 queries get a significantly improved query plan (others remain the same) 0 20 40 60 80 100 Q2 Q18 Executiontimerelativeto5.6(%) Disk bound 5.6 5.7 14 Source: MySQL 5.7: 20 Years in the Making! By Geir Høydalsvik, Sr. Director, MySQL Engineering
  • 15. Adjustable Cost Constants (Experimental!) • We can change the costs factors by changing system tables: • Use mysql.engine_cost and mysql.server_costs to change default values • Use FLUSH command to make server aware of new values (only new connections will see updated cost constants) http://brillix.co.il15 update mysql.engine_cost set cost_value=2 where cost_name='io_block_read_cost'; flush optimizer_costs;
  • 16. The Query Rewrite Plugin • New pre and post parse query rewrite APIs • Users can write their own plug-ins • Provides a post-parse query plugin • Rewrite problematic queries without the need to make application changes • Add hints • Modify join order • Improve problematic queries from ORMs, third party apps, etc. • Eliminates many legacy use cases for proxies http://brillix.co.il16
  • 17. InnoDB Improvements: Temporary Tables • Temp tables are no longer stored in normal system tables • Definitions can be maintained in-memory (without persisting to the disk) • Locking constraints can be relaxed since only one client can see these tables. http://brillix.co.il17
  • 18. InnoDB Improvements: Native Partitioning •Eliminates previous limitations •Eliminates resource usage problems • No longer using the ha_partition handler • Reduce memory usage by 90% • MySQL 5.7.9 will try to upgrade old partitions to native or Use ALTER TABLE ... UPGRADE PARTITIONING command •Transportable tablespace support (5.7.4) http://brillix.co.il18
  • 19. InnoDB Bulk Load Performance •Bulk loading is now used when creating or rebuilding indexes •Much faster INDEX creation: • 2-3 x performance improvement for ADD/CREATE INDEX operations • 2-5% improvement for standard INSERT operations http://brillix.co.il19
  • 20. InnoDB Page level Compression •Not the same as Table Compression (5.1 feature) •Reduces IO for better performance •The compressed data is written to disk, where the hole punching mechanism then releases empty blocks from the end of the page. •If compression fails, data is written out as-is. •Supports Zlib and LZ4 compressions http://brillix.co.il20
  • 21. InnoDB Online Operations •Resize the InnoDB Buffer Pool online •More online ALTER operations • Rename indexes • Enlarge Varchar columns • Optimize Table (5.7.4) •Truncate undo logs •More dynamic configuration variables http://brillix.co.il21
  • 23. The JSON Native Datatype • New native data type: JSON • Supports all JSON internal types • Numbers, strings, bool • Objects, JSON arrays • Supports also extended data types: date, time, datetime, and timestamp • Efficient access: optimized for read intensive workload • Performance: fast access to array cells by creating indexes • MySQL Document Store (5.7.12) http://brillix.co.il23
  • 24. Why Not Just Use TEXT/Varchar? •Document validation: parse and validation on insert •Efficient binary format • Allows quicker access to object members and array elements • Binary format of JSON type is very efficient at searching • Storing as TEXT performs over 10x worse at traversal •Built-in handling functions http://brillix.co.il24
  • 25. Built-in JSON Functions •5.7 has built in functions to CREATE, SEARCH, MODIFY and RETURN JSON documents and JSON values •For a complete list of the JSON functions: https://dev.mysql.com/doc/refman/5.7/en/json-function- reference.html http://brillix.co.il25
  • 26. Create JSON_OBJECT and JSON_ARRAY •Use JSON_OBJECT to create JSON from tables: •JSON_ARRAY is a function that generates a JSON array from a list of values http://brillix.co.il26 mysql> select JSON_OBJECT('id', id, 'firstName', first_name, 'lastName', last_name) from employees_old; +-----------------------------------------------------------------------+ | JSON_OBJECT('id', id, 'firstName', first_name, 'lastName', last_name) | +-----------------------------------------------------------------------+ | {"id": 1, "lastName": "Elkayam", "firstName": "Tamar"} | | {"id": 2, "lastName": "Elkayam", "firstName": "Efrat"} | | {"id": 3, "lastName": "Elkayam", "firstName": "Zohar"} | | {"id": 4, "lastName": "Elkayam", "firstName": "Ido"} | +-----------------------------------------------------------------------+ 4 rows in set (0.00 sec)
  • 27. Extracting a Value: JSON_EXTRACT •JSON_EXTRACT – Extracts data from the JSON • Uses JSON Path • supports two shorthand operators: http://brillix.co.il27 JSON_EXTACT (column_name, “$.type”( column_name->"$.type" (extract) column_name->>"$.type" (extract + unquote)
  • 28. Searching In JSON •Use JSON_SEARCH to find paths with certain data •Use JSON_CONTAINS and JSON_CONTAIN_PATH to know if data exists in the document •Use the extract shorthand syntax to locate the rows containing data http://brillix.co.il28 JSON_SEARCH (column_name, ‘one-or-all’, ‘value’( WHERE column_name->"$.type" = ‘value’
  • 29. Modifying JSON Documents •We can modify existing JSON with various functions • JSON_APPEND/JSON_ARRAY_APPEND: appends value/JSON array to a JSON documents • JSON_INSERT/JSON_ARRAY_INSERT: adds data/JSON array to a JSON • JSON_MERGE: merge JSONs • JSON_REPLACE: replace values at path • JSON_SET: replace value at path or adds it if not exist http://brillix.co.il29
  • 30. Performance: Functional Indexes with JSON •Indexing of Documents using Generated Columns •InnoDB supports indexes on both STORED and VIRTUAL (default) Generated Columns •New expression analyzer automatically uses the best “functional” index available http://brillix.co.il30 alter table employees add id numeric as (data->>"$.id"); create index emp_id on employees(id);
  • 31. Performance Schema and SYS Schema http://brillix.co.il31
  • 32. Performance Schema •Performance monitoring schema •Include various table to help us with instrumentation and performance monitoring • Memory Instrumentation • Statement Instrumentation • Transactions and Locks • Additional Information: replication, stored routines, etc. http://brillix.co.il32
  • 33. What’s New in Performance Schema •User variables, status variables (session/global) •Reduced footprint, memory usage and overhead •Total of 35 new tables – 5.6 had 52, 5.7 has 87 (with 983 instrumentations!) •But using the performance schema might be a bit too complicated…. http://brillix.co.il33
  • 34. The SYS Schema • A set of objects that helps DBAs and developers interpret data collected by the Performance Schema • Provides helper objects that answer common performance, health, usage, and monitoring questions • Introduced in 5.6 as part of an extension to MySQL (available at GitHub: https://github.com/mysql/mysql-sys) • MySQL 5.7.7+ includes the SYS schema by default http://brillix.co.il34
  • 35. MySQL SYS Summary Views • Reference set of views solving various administrator use cases • Simple views, you can create/copy your own, sys is not “locked down” • Build upon both performance_schema and INFORMATION_SCHEMA • Both formatted and raw views are available • All raw views are prefixed with x$ • Raw views are there for tools to poll • Formatted views are for humans and the command line http://brillix.co.il35
  • 36. What Data Can We See In Summary Views? •SYS schema comes with multiple dimensions for summary views: • User/Host summary views • IO summary views • Schema analysis • Wait and Lock wait analysis • Statement analysis • Memory views http://brillix.co.il36
  • 37. Formatter and Helper Functions • SYS Schema also provides formatter and helper functions: • Make output human readable • Format time appropriately • Format bytes appropriately • Truncate output for large width values for CLI • Extract object names • Check instrumentation state • Performance Schema Config Helper Procedures http://brillix.co.il37
  • 38. Useful SYS Functions • Formatter: • format_time • format_bytes • format_path • format_statement • Extractor • extract_table_from_file_name • extract_schema_from_file_name • Performance Schema States • ps_is_account_enabled • ps_is_consumer_enabled • ps_is_instrument_default_enabled • ps_is_instrument_default_timed • ps_is_thread_instrumented http://brillix.co.il38
  • 39. Short Demo for SYS Schema http://brillix.co.il39
  • 40. Other Features and MySQL 8.0 http://brillix.co.il40
  • 41. Generated Columns (5.7.5) •Virtual Columns – functional columns calculated on the fly OR stored result •Generated column can use JSON extracts •Support Indexes – Functional Indexes •Example by Percona: https://www.percona.com/blog/2015/04/29/generated- virtual-columns-in-mysql-5-7-labs/ http://brillix.co.il41
  • 42. Server Side Timeouts (5.7.5) •Interrupting the execution of a statement when it takes longer to complete • Defined at the Global for server, per session, or for individual SELECT statements •Example http://brillix.co.il42 SET GLOBAL MAX_STATEMENT_TIME=1000; SET SESSION MAX_STATEMENT_TIME=2000; SELECT /* MAX_STATEMENT_TIME=1000 */ * FROM table;
  • 43. What Are We Waiting For In MySQL 8.0? •Improve with UTF8 support: default will be utf8mb4 instead of latin1 •Transactional data dictionary •Common Table Expression (CTE) •Invisible mode for Indexes and other object types http://brillix.co.il43
  • 44. What Are We Waiting For In MySQL 8.0? (cont.) •Performance changes • Cost based optimizer statistics • Remove buffer pool mutexes • Redo log improvements for scalability • Memcache improvement to support multiple get and range scan •Bug Fixes: for example, persistent auto increment (bug #199, created on 27 March 2003) http://brillix.co.il44
  • 45. What Features Did We NOT Talk About? •MySQL Document Store (The X Plugin and X Protocol) •Security Improvements •GIS Improvements •Replication Improvements •More (200+ new features!): see http://www.thecompletelistoffeatures.com/ for more details! http://brillix.co.il45
  • 47. Summary •Performance, Optimizer and other InnoDB features are really important •Use JSON and other document store features to make more with MySQL •Learn how to use SYS Schema to leverage internal knowledge to your advantage http://brillix.co.il47
  • 48. Thank You Zohar Elkayam twitter: @realmgic [email protected] www.realdbamagic.com http://brillix.co.il48

Editor's Notes

  • #10: UNION ALL queries no longer use temporary tables Improved optimizations for queries with IN expressions Improved optimizations for full-text queries More efficient sorting
  • #14: 13
  • #15: 14
  • #16: Only new connections will see updated cost constants
  • #17: As you may know, MySQL supports a plugin API that enables creation of server components. Plugins can be loaded at server startup, or loaded and unloaded at runtime without restarting the server. In 5.7, we provide you two rewrite APIs so that you can write your own plugin. Pre parse API: interface is query text, you rewrite queries by replacing text with other text Post parse API: you have to modify the parse tree. May not be as difficult as it sounds. We offer a parser service through the plugin API. It contains methods to invoke parsing, get a normalized query text from parser tree, walk the parse tree. In addition to providing interfaces for writing your own plugin, we also provide a production quality query rewrite plugin which rewrites queries without the need to make application changes. You can use this plugin to add hints, mofify join order and more. Our query rewrite plugin uses the post parse plug-in interface, because it gives next to zero performanc overhead. I will explain how this works. The main point of choosing post parsing is that digest is computed during parsing, and we use the digest to match incoming query with rules.
  • #18: Insert/Update/Delete workload: (2-4x performance gain) insert workload: insert n entries: sorted, n entries: reverse sorted, n entries: random (total 3n entries) delete workload: delete n entries: first initiate insert workload to load table, delete n entries using primary key, delete n entries using secondary index, delete n entries using primary key such that complete table is empty. update workload: update n entries: first initiate insert workload to load table, update n entries using primary key, update n entries using secondary index, update all 3n entries 2 times. (no explicit key specified).
  • #19: In the past, partitioning required the use of the ha_partition handler, which requires one handler object per partition instead of one per table. Partitioned tables are also easier to move using the Transportable Tablespace feature. Before "native partitions" (5.7.6), each partition consumed a chunk of memory. The InnoDB native partitioning removes overhead and reduces memory requirements by up to 90% ALTER TABLE ... UPGRADE PARTITIONING - locks the table!
  • #22: As of 5.7.4, OPTIMIZE TABLE uses online DDL (ALGORITHM=INPLACE) for both regular and partitioned InnoDB tables. The table rebuild, triggered by OPTIMIZE TABLE and performed under the cover by ALTER TABLE ... FORCE, is now performed using online DDL (ALGORITHM=INPLACE) and only locks the table for a brief interval, which reduces downtime for concurrent DML operations.
  • #28: https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html - Json path syntax guide
  • #29: https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html - Json path syntax guide
  • #34: The Performance schema main issue is its complexity. We sometime wish we had a better set of tools that helps us see things more clearly