- The
format_bytesfunction now shows no decimal places when outputting a simple bytes value - The
processlist/x$processlistviews where improved, changes include: - The
pidandprogram_nameof the connection are shown, if set within theperformance_schema.session_connect_attrstable (Contributed by Daniël van Eeden) - Issue #50 - The current statement progress is reported via the new stage progress reporting within Performance Schema stages within 5.7 (such as ALTER TABLE progress reporting)
- Issue #60 - A new
statement_latencycolumn was added to all versions, which reports the current statement latency with picosecond precision from theperformance_schema.events_statements_currenttable, when enabled - Some transaction information was exposed, with the
trx_latency(for the current or last transaction depending ontrx_state),trx_state(ACTIVE, COMMITTED, ROLLED BACK), andtrx_autocommit(YES/NO) columns - A new
metricsview has been added. On 5.7 this provides a union view of the performance_schema.global_status and information_schema.innodb_metrics tables, along with P_S memory and the current time, as a single metrics output. On 5.6 it provides a union view of the information_schema.global_status and information_schema.innodb_metrics tables, along with the current time. (Contributed by Jesper Wisborg Krogh) - New
session/x$sessionviews have been added, which give the same output as theprocesslistview counterparts, but filtered to only show foreground connections (Contributed by Morgan Tocker) - A new
session_ssl_statusview was added, which shows the SSL version, ciper and session resuse statistics for each connection (Contributed by Daniël van Eeden) - A new
schema_auto_increment_columnsview was added, that shows statistics on each auto_incrment within the instance, including theauto_increment_ratio, so you can easily monitor how full specific auto_increment columns are (Contributed by Shlomi Noach) - A new
schema_redundant_indexesview was added, that shows indexes made redundant (or duplicated) by other more dominant indexes. Also includes the the helper viewx$schema_flattened_keys. (Contributed by Shlomi Noach) - New
schema_table_lock_waits/x$schema_table_lock_waitsviews have been added, which show any sessions that are waiting for table level metadata locks, and the sessions that are blocking them. Resolves Git Issue #57, inspired by the suggestion from Daniël van Eeden - The
innodb_lock_waitsview had the following columns added to it, following a manually merged contribution from Shlomi Noach for a similar view wait_age_secs- the current row lock wait time in secondssql_kill_blocking_query- the "KILL QUERY <connection_id>" command to run to kill the blocking session current statementsql_kill_blocking_connection- the "KILL <connection_id" command to run to kill the blocking session- A new
table_existsprocedure was added, which checks for the existence of table, and if it exists, returns the type (BASE TABLE, VIEW, TEMPORARY) (Contributed by Jesper Wisborg Krogh) - A new
execute_prepared_stmt()procedure was added, which takes a SQL statement as an input variable and executes it as a prepared statement (Contributed by Jesper Wisborg Krogh) - A new
statement_performance_analyzer()procedure was added, that allows reporting on the statements that are have been running over snapshot periods (Contributed by Jesper Wisborg Krogh) - A new
diagnostics()procedure was added, which creates a large diagnostics report based upon most of the new instrumentation now available, computed over a configurable number of snapshot intervals (Contributed by Jesper Wisborg Krogh) - A 5.7 specific
ps_trace_thread()procedure was added, which now shows the hierarchy of transactions and stored routines, as well as statements, stages and waits, if enabled - Added a new
ps_thread_account()stored function, that returns the "user@host" account for a given Performance Schema thread id - Added a new
ps_thread_trx_info()stored function which outputs, for a given thread id, the transactions, and statements that those transactions have executed, as a JSON object - Added new
list_add()andlist_drop()stored functions, that take a string csv list, and either add or remove items from that list respectively. Can be used to easily update variables that take such lists, likesql_mode. - The
ps_thread_idstored function now returns the thread id for the current connection if NULL is passed for the in_connection_id parameter - Added a new
version_major()stored function, which returns the major version of MySQL Server (Contributed by Jesper Wisborg Krogh) - Added a new
version_minor()stored function, which returns the minor (release series) version of MySQL Server (Contributed by Jesper Wisborg Krogh) - Added a new
version_patch()stored function, which returns the patch release version of MySQL Server (Contributed by Jesper Wisborg Krogh) - The
ps_is_account_enabledfunction was updated to take a VARCHAR(32) user input on 5.7, as a part of WL#2284 - The generate_sql_file.sh script had a number of improvements:
- Generated files are now output in to a "gen" directory, that is ignored by git
- Added using a new default "mysql.sys@localhost" user (that has the account locked) for the MySQL 5.7+ integration as the DEFINER for all objects
- Added a warning to the top of the generated integration file to also submit changes to the sys project
- Improved the the option of skipping binary logs, so that all routines can load as well - those that used SET sql_log_bin will now select a warning when being used instead of setting the option
- Git Issue #51 - Fixed the
generate_sql_file.shscript to also replace the definer in the before_setup.sql output - Git Issue #52 - Removed apostrophe from the
format_statementfunction comment because TOAD no likey - Git Issue #56 - Installation failed on 5.6 with ONLY_FULL_GROUP_BY enabled
- Git Issue #76 - Fixes for the new show_compatibility_56 variable. 5.7 versions of the
format_path()function andps_check_lost_instrumentationview were added, that use performance_schema.global_status/global_variables instead of information_schema.global_status/global_variables - Git Issue #79 - Fixed grammar within
statements_with_runtimes_in_95th_percentileview descriptions - Oracle Bug #21484593 / Oracle Bug #21281955 - The
format_path()function incorrectly took and returned a VARCHAR(260) instead of VARCHAR(512) (as the underlying is exposed as in Performance Schema) causing sporadic test failures - Oracle Bug #21550271 - Fixed the
ps_setup_reset_to_defaultfor 5.7 with the addition of the newhistorycolumn on theperformance_schema.setup_actorstable - Oracle Bug #21550054 - It is possible that the views can show data that overflows when aggregating very large values, reset all statistics before each test to ensure no overflows
- Oracle Bug #21647101 - Fixed the
ps_is_instrument_default_enabedandps_is_instrument_default_timedto take in to account the new instruments added within 5.7 - MySQL Bug #77848 - Added the missing ps_setup_instruments_cleanup.inc
- Fixed the
ps_setup_reset_to_default()procedure to also set the newENABLEDcolumn withinperformance_schema.setup_actorswithin 5.7 - The
user_summary_by_file_io/x$user_summary_by_file_ioandhost_summary_by_file_io/x$host_summary_by_file_iotables were incorrectly aggregating all wait events, not justwait/io/file/%
- Tests were improved via 5.7 integration
- Template files were added for stored procedures and functions
- Improved the sys_config_cleanup.inc procedure in tests to be able to reset the sys_config table completely (including the set_by column to NULL). The triggers can now be set to not update the column by setting the @sys.ignore_sys_config_triggers user variable to true
- The
memory_global_by_current_allocatedviews were renamed tomemory_global_by_current_bytesfor consistency with the other memory views - The
ps_setup_enable_consumersprocedure was renamed tops_setup_disable_consumerfor naming consistency (everything is now singular, not plural) - The
format_timefunction displayed values in minutes incorrectly, it now rounds to minutes, and uses an 'm' suffix, like the rest of the units
- The beginnings of a mysql-test suite have been added
- The
innodb_lock_waits/x$innodb_lock_waitsviews were improved (Contributions by both Jesper Wisborg Krogh and Mark Matthews) - Added the
wait_started,wait_age,waiting_trx_startedwaiting_trx_age,waiting_trx_rows_lockedandwaiting_trx_rows_modifiedcolumns for waiting transactions - Added the
blocking_trx_started,blocking_trx_age,blocking_trx_rows_lockedandblocking_trx_rows_modifiedfor blocking transactions - Order the result set so the oldest lock waits are first
- The
waiting_tableandwaiting_indexwere always the same as theblocking_tableandblocking_index. So the blocking_% columns have been removed and the waiting_% columns have been renamed to locked_% - The
waiting_lock_typeandblocking_lock_typewere also always the same. So these were removed and replaced with a singlelocked_typecolumn - Renamed the
waiting_threadandblocking_threadtowaiting_pidandblocking_pidrespectively to avoid confusion with the threads from the Performance Schema. - Added the
sys_get_configfunction, used to get configuration parameters from thesys_configtable - primarily from other sys objects, but can be used individually (Contributed by Jesper Wisborg Krogh) - Add an option to generate_sql_file.sh to generate a mysql_install_db / mysqld --initialize format friendly file
- Added the
ps_is_thread_instrumentedfunction, to check whether a specified thread is instrumented within Performance Schema - Added the
ps_is_consumer_enabledfunction, to check whether a specified consumer is enabled within Performance Schema (Contributed by Jesper Wisborg Krogh) - Added some further replacements to the
format_pathfunction (slave_load_tmpdir,innodb_data_home_dir,innodb_log_group_home_dirandinnodb_undo_directory)
- The 5.6
host_summaryandx$host_summaryviews incorrectly had the column withCOUNT(DISTINCT accounts.user)namedunique_hostsinstead ofunique_users(Contributed by Jesper Wisborg Krogh) - Both the
format_timeandformat_bytestook a BIGINT as input, and output VARCHAR, but BIGINT could be too small for aggregated values for the inputs. Now both functions both use TEXT as their input (Issue #34, Issue #38) - The
format_timefunction displayed values in minutes incorrectly, it now rounds to minutes, and uses an 'm' suffix, like the rest of the units - The
sys_configrelated triggers had no DEFINER clause set - The
ps_setup_disable_threadprocedure always disabled the current thread and was ignoring the connection id given as an argument (Contributed by Jesper Wisborg Krogh) - The
ps_trace_threadprocedure had an incorrect calculation of how long the procedure has been running (Contributed by Jesper Wisborg Krogh)
Various changes were made to allow better generation of integration sql files:
- The formatting for all comments has been standardized on -- line comments. C-style /* comments */ have been removed
- Issue #35 had one instance of this resolved in this release (Contributed by Joe Grasse), but the entire code base has now been done
- Each object has been created within it's own file. No longer do x$ views live with their non-x$ counterparts
- DELIMITERs were standardized to $$
- Added an
innodb_lock_waitsset of views, showing each thread that is waiting on a lock within InnoDB, and the blocking thread lock information (Contributed by Jesper Wisborg Krogh)
- Fixed broken
host_summary_by_stagesviews, broken with a last minute change before the 1.2.0 release that went unnoticed (facepalm)
- The
host_summary_by_stagesanduser_summary_by_stageswait_sumandwait_avgcolumns were renamed tototal_latencyandavg_latencyrespectively, for consistency. - The
host_summary_by_file_io_typeanduser_summary_by_file_io_typelatencycolumn was renamed tototal_latency`, for consistency.
- Made the truncation length for the
format_statementview configurable- This includes adding a new persistent
sys_configtable to store the new variable -statement_truncate_len- see the README for usage
- This includes adding a new persistent
- Added
total_latencyto theschema_tables_with_full_table_scansview, and added an x$ counterpart - Added
innodb_buffer_freeto theschema_table_statistics_with_bufferview, to summarize how much free space is allocated per table in the buffer pool - The
schema_unused_indexesview now ignores indexes namedPRIMARY(primary keys) - Added
rows_affectedandrows_affected_avgstats to thestatement_analysisviews - The
statements_with_full_table_scansview now ignores any SQL that starts withSHOW - Added a script,
generate_sql_file.sh, that can be used to generate a single SQL file, also allowing substitution of the MySQL user to use, and/or whether theSET sql_log_bin ...statements should be omitted. - This is useful for those using RDS, where the root@localhost user is not accessible, and sql_log_bin is disabled (Issue #5)
- Added a set of
memory_by_thread_by_current_bytesviews, that summarize memory usage per thread with MySQL 5.7's memory instrumentation - Improved each of the host specific views to return aggregate values for
backgroundthreads, instead of ignoring them, in the same way as the user summary views
- Added the missing
memory_by_hostview for MySQL 5.7 - Added missing space for hour notation within the
format_timefunction - Fixed views affected by MySQL 5.7 ONLY_FULL_GROUP_BY and functional dependency changes
-
Added host summary views, which have the same structure as the user summary views, but aggregated by host instead (Contributed by Arnaud Adant)
host_summaryhost_summary_by_file_io_typehost_summary_by_file_iohost_summary_by_statement_typehost_summary_by_statement_latencyhost_summary_by_stageswaits_by_host_by_latency
-
Added functions which return instruments are either enabled, or timed by default (#15) (Contributed by Jesper Wisborg Krogh)
ps_is_instrument_default_enabledps_is_instrument_default_timed
-
Added a
ps_thread_idfunction, which returns the thread_id value exposed within performance_schema for the current connection (Contributed by Jesper Wisborg Krogh) -
Improved each of the user specific views to return aggregate values for
backgroundthreads, instead of ignoring them (Contributed by Joe Grasse) -
Optimized the
schema_table_statisticsandschema_table_statistics_with_bufferviews, to use a new view that will get materialized (x$ps_schema_table_statistics_io), along with the changes to the RETURN types forextract_schema_from_file_nameandextract_table_from_file_name, this results in a significant performance improvement - in one test changing the run time from 14 minutes to 20 seconds. (Conceived by Roy Lyseng, Mark Leith and Jesper Wisborg Krogh, implemented and contributed by Jesper Wisborg Krogh)
- Removed unintentially committed sys_56_rds.sql file (See Issue #5, which is still outstanding)
- Fixed the
ps_trace_statement_digestandps_trace_threadprocedures to properly set sql_log_bin, and reset the thread INSTRUMENTED value correctly (Contributed by Jesper Wisborg Krogh) - Removed various sql_log_bin disabling from other procedures that no longer require it - DML against the performance_schema data is no longer replicated (Contributed by Jesper Wisborg Krogh)
- Fixed EXPLAIN within
ps_trace_statement_digestprocedure (Contributed by Jesper Wisborg Krogh) - Fixed the datatype for the
thd_idvariable within theps_thread_stackprocedure (Contributed by Jesper Wisborg Krogh) - Fixed datatypes used for temporary tables within the
ps_trace_statement_digestprocedure (Contributed by Jesper Wisborg Krogh) - Fixed the RETURN datatype
extract_schema_from_file_nameandextract_table_from_file_nameto return a VARCHAR(64) (Contributed by Jesper Wisborg Krogh) - Added events_transactions_current to the default enabled consumers in 5.7 (#25)
-
Added procedures to enable / disable Performance Schema consumers. (Contributed by the MySQL QA Team)
ps_setup_disable_consumers(<LIKE string>)allows disabling any consumers matching the LIKE string.ps_setup_enable_consumers(<LIKE string>)allows enabling any consumers matching the LIKE string.
-
Added procedures to show both enabled and disbled consumers or instruments individually, these are more useful for tooling than the
ps_setup_show_enabled/ps_setup_show_disabledprocedures which show all configuration in multiple result sets. (Contributed by the MySQL QA Team)ps_setup_show_disabled_consumersshows only disabled consumers.ps_setup_show_disabled_instrumentsshows only disabled instruments.ps_setup_show_enabled_consumersshows only enabled consumers.ps_setup_show_enabled_instrumentsshows only enabled instruments.
- Running the installation scripts sometimes failed because of the comment format. (#1) (Contributed by Joe Grasse)
- Some views did not work with the ERROR_FOR_DIVISION_BY_ZERO SQL mode. (#6) (Contributed by Joe Grasse)
- On Windows the
ps_thread_stack()stored function failed to escape file path backslashes correctly within the JSON output.