20 KiB
Change history for the MySQL sys schema
1.5.1 (07/07/16)
Improvements
- A
quote_identifierfunction was added, which can be used to properly backtick identifier names - The
Tls_versioncolumn was added to the output from themysql.slave_master_infotable, from thediagnosticsprocedure (backported from 5.7 upstream change)
Bug Fixes
- MySQL Bug #77853 / Oracle Bug #21512106 - The
format_pathfunction did not consider directory boundaries when comparing variables to paths - it now does. Also fixed to no longer translate backslashes within Windows paths to forward slash - Oracle Bug #21663578 - Fixed an instability within the sysschema.v_schema_tables_with_full_table_scans test
- Oracle Bug #21970078 - The host_summary view could fail with a division by zero error
- MySQL Bug #78874 / Oracle Bug #22066096 - The
ps_setup_show_enabledprocedure showed all rows for theperformance_schema.setup_objectstable, rather than only those that are enabled - MySQL Bug #80569 / Oracle Bug #22848110 - The
max_latencycolumn for thehost_summary_by_statement_latencyview incorrectly showed the SUM of latency - MySQL Bug #80833 / Oracle Bug #22988461 - The
pages_hashedandpages_oldcolumns within theinnodb_buffer_stats_by_schemaandinnodb_buffer_stats_by_tableviews were calculated incorrectly (Contributed by Tsubasa Tanaka) - MySQL Bug #78823 / Oracle Bug #22011361 - The
create_synonym_dbprocedure failed when using reserved words as the synonym name (this change also introduced thequote_identifierfunction mentioned above Contriubuted by Paul Dubois) - MySQL Bug #81564 / Oracle Bug #23335880 - The
ps_setup_show_enabledandps_setup_show_disabledprocedures were fixed to: ** Showuser@hostinstead ofhost@userfor accounts ** Fixed the column header fordisabled_userswithinps_setup_show_disabled** Explicitly ordered all output for test stability ** Show disabled users for 5.7.6+ - Oracle Bug #21970806 - The
sysschema.fn_ps_thread_trx_infotest was unstable - Oracle Bug #23621189 - The
ps_trace_statement_digestprocedure ran EXPLAIN incorrectly in certain cases (such as on a SHOW statement, no query being specified, or not having a full qualified table), the procedure now catches these issues and ignores them
1.5.0 (11/09/15)
Improvements
- 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
Bug Fixes
- 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/%
Implementation Details
- 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
1.4.0 (09/03/2015)
Backwards Incompatible Changes
- 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
Improvements
- 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)
Bug Fixes
- 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)
Implementation Details
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
1.3.0 (23/10/2014)
Improvements
- 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)
Bug Fixes
- Fixed broken
host_summary_by_stagesviews, broken with a last minute change before the 1.2.0 release that went unnoticed (facepalm)
1.2.0 (22/10/2014)
Backwards Incompatible Changes
- 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.
Improvements
- 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
Bug Fixes
- 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
1.1.0 (04/09/2014)
Improvements
-
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)
Bug Fixes
- 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)
1.0.1 (23/05/2014)
Improvements
-
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.
Bug Fixes
- 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.