Contents
  1. 1. 第一章:基本信息
    1. 1.1. 1.4__ Mysql5.6 的新特性
      1. 1.1.1. 新增的特性
      2. 1.1.2. 过时的特性
      3. 1.1.3. 被废除的特性

第一章:基本信息


1.4__ Mysql5.6 的新特性

新增的特性


  • 安全方面的增强

    • mysql 提供存放认真信息在 .mylogin.cnf,“mysql_config_editor — MySQL Configuration Utility”

    • mysql 提供更加强大的用户密码加密,sha256_password

    • mysql.user 现在可以设置过期用户

    • mysql_upgrade如果发现用户密码hasded with older 4.1版本的方法,会提示警告。

    • mysql_install_db 支持随机密码选项,更加安全的mysql 安装

    • start slave 语法,目前已经支持connection信息,用户可以考虑是否需要将信息保存在master.info

  • Mysql 企业版

  • mysql 默认参数的变更,可参考Section 5.1.2.1, “Changes to Server Defaults”.

  • InnoDB的增强

    • innoDB支持全文索引

    • Online ddl

    • InnoDB 支持将某一个表,单独指定存放在某一块磁盘上

    • InnoDB 支持transportable tablespaces,可以在线导出导入innoDB表空间

    • 可以指定innoDB pagesize大小到 8k,4k,默认是16k

    • 自适应刷新算法的增强,可以提高更高的并发。调优可参考: Section 14.3.3.6, “Tuning InnoDB Buffer Pool Flushing”

    • 可以通过NoSQL-style API 访问innoDB 表。详情:Section 14.17, “InnoDB Integration with memcached”

    • 优化innoDB 索引统计信息,详情: Section 14.3.11.1, “Configuring Persistent Optimizer Statistics Parameters”

    • 只读事务的优化,提升了ad-hoc 查询以及报表应用的性能。详情: Section 8.5.3, “Optimizing InnoDB Read-Only Transactions”

    • 可以单独将undo log指定在特殊的磁盘上,如(ssd)

    • 可以配置innoDB checksum算法innodb_checksum_algorithm=crc32来提升checksum速度。

    • innoDB redo log 大小从 4G 可以指定到 512G 了

    • —innodb-read-only 可以设置只读模式。

    • innodb_compression_level 新参数,可以设置压缩表的等级 0-9 ,used by zlib

    • innoDB压缩表数据块中包含了大量的空的space,主要用于DML的时候不需要re-compressing。 这两个参数可以控制:innodb_compression_failure_threshold_pct, innodb_compression_pad_pct_max

    • innoDB 现在可以智能的将很久没有使用的表从内存中清除(LRU),以便更多的元数据可以占用内存。可以调高table_definition_cache 参数,可以缓存更多的open状态表的元数据,但这只是soft limit

    • innoDB 使用了更新,更快的算法来检测死锁。

    • 为了避免instance重启后的长时间预热数据问题,尤其是大内存的实例,mysql 提供了关闭mysql时候dump数据块到文件,然后重启后,可以通过这个文件找到之前热数据page并加载到内存。更多详细信息请关注:Section 14.3.3.5, “Preloading the InnoDB Buffer Pool for Faster Restart”

    • 从mysql5.6.16开始,innochecksum已经支持大于2GB的表,之前版本是不支持2GB以上表的。

    • 从mysql5.6.16开始,新的配置参数innodb_status_output ,innodb_status_output_locks 已经可以动态打开和关闭 innoDB Monitor 和 innoDB lock Monitor。之前通过创建特定名字表的方式打开Monitor的方式已经过时,在新版本中将会被废弃。

    • 从mysql5.6.17开始,mysql 支持ONLINE DDL(ALGORITHM=INPLACE)的rebuilding 操作。

      optimize table 。。。

      alter table 。。。 force

      alter table 。。。 engine=innoDB

  • 分区表的增强

  • performance schema 的增强

  • MySQL Cluster的增强

  • 复制方面的增强

    • GTID 支持,但是还是不能动态开启和关闭

    • 基于row模式的复制,已经可以控制image的方式了 binlog_row_image:minimal,full,nonblob。具体看:System Variables Used with Binary Logging

    • Binary log 现在支持crash-safe了。

      • binlog_checksum: mysql写入binlog的时候用crc32算法 checksum
      • master_verify_checksum: mysql从binary log读取的时候检测checksums
      • slave-sql-verify-checksum: SQL-thread 读取的时候检测checksums
    • 为了让replication支持crash-safe,mysql提供了以下两个参数:

      • —master-info-repository=table: 将master的connection信息可以记录到slave_master_info表
      • —relay-log-info-repository=table: 将slave的connection信息记录到slave_relay_log_info表
      • 必须要设置slave_master_info,slave_relay_log_info为innoDB引擎才可以保证事务的原子性。
      • 更多细节关注: Crash-safe replication
    • 现在可以使用mysqlbinlog工具直接远程连接mysql,并将binlog从远端backup到mysqlbinlog所在host。更多细节:Section 4.6.8.3, “Using mysqlbinlog to Back Up Binary Log Files”

    • mysql现在支持原生的延迟slave,通过设置MASTER_DELAY option for CHANGE MASTER TO

      • 可以避免人为失误操作
      • 可以测试延迟情况下的slave的恢复能力
      • 更多细节: Section 17.3.9, “Delayed Replication”.
    • 新增系统变量,可以查看binlog和relay log的位置

      • show global variables like ‘log_bin_basename’;
      • show global variables like ‘relay_log_basename’;
    • 多线程复制,目前只支持基于schema的多线程。

  • 优化器方面的增强

    • order by xx limit [M],N 查询的优化 , 如果sort_buffer_size足够大,可以避免merge file。 细节: Section 8.2.1.19, “Optimizing LIMIT Queries”.

    • Disk-Sweep MRR 特性。简单描述就是:Mysql从secondary index 中range方式读取主键id后,然后会再去从primary-index 中读取数据。这里就会导致primary-index中根据主键的查询是random查询。MRR主要的方案就是:从secondary index中读取到随机主键后,会先进行主键排序,最后再primary-index中查询的时候,就基本上是order 方式查询了。详情: Section 8.2.1.13, “Multi-Range Read Optimization”

    • Index Condition PushDown (ICP)特性:主要就是存储引擎层也可以使用where条件过滤了。
      更多细节:Section 8.2.1.6, “Index Condition Pushdown Optimization”.

    • explain现在可以支持DML了,并且可以以Jason的方式打印输出

    • 子查询优化 Section 8.2.1.18.3, “Optimizing Derived Tables (Subqueries) in the FROM Clause”.

    • A Batched Key Access (BKA) 连接算法,提升连接性能。更多细节:Section 8.2.1.14, “Block Nested-Loop and Batched Key Access Joins”

    • 可以使用 INFORMATION_SCHEMA.OPTIMIZER_TRACE 来跟踪优化器,主要是针对数据库开发人员。更多细节:MySQL Internals: Tracing the Optimizer.

  • 数据类型

    • fractional seconds 支持:TIME,DATETIME,TIMESTAMP,支持微秒级别(6位精度)

    • mysql5.6之前的版本,一个表最多只能有一个timestamp字段会被自动初始化或者自动更新。
      mysql5.6,以及之后的版本以及放开了这个限制。并且,datetime这个字段也能使用自动初始化了。更多细节:Section 11.3.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”.

    • explicit_defaults_for_timestamp 关闭timestamp的默认值。更多细节: Section 11.3.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”, and Section 5.1.4, “Server System Variables”.

  • Host cache

    • 新增 Connection_errors_xxx status 变量
    • host_cache 在performance schema中有相关变量
    • host_cache_size 可以配置大小
    • 更多细节: Section 8.12.6.2, “DNS Lookup Optimization and the Host Cache”, and Section 22.9.10.1, “The host_cache Table”.
  • OpenGIS

    • 地理位置信息查询的增强,更多细节: Section 12.15.9, “Functions That Test Spatial Relations Between Geometry Objects”.

过时的特性


  • ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and NO_ZERO_IN_DATE SQL modes 将被废弃,mysql 5.7 这些参数就会无效。
  • 依赖Group by 的隐式排序将被废弃,为了获得排序,必须使用显示的order by
  • mysql_old_password 将被废弃
  • —skip-innodb 被废弃,用(—innodb=OFF, —disable-innodb)代替
  • date_format, datetime_format, and time_format 以及无效
  • have_profiling, profiling, and profiling_history_size 将被废弃
  • innodb_use_sys_malloc and innodb_additional_mem_pool_size 将废弃
  • timed_mutexes 已经无效
  • The IGNORE clause for ALTER TABLE 废弃,会导致online ddl 出错
  • The msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, mysql_waitpid, mysql_zap, mysqlaccess, and mysqlbug utilities 废弃
  • mysqlhotcopy utility 废弃

被废除的特性


  • —log 已经移除。 用 —general_log代替
  • —log-slow-queries 已经移除。 用 —slow_query_log_file=file_name 代替
  • —one-thread 已经移除。用 —thread_handling=no-threads 代替
  • —safe-mode 已经移除
  • —skip-thread-priority 已经移除
  • —table-cache 已经移除。 用 —table_opne_cache 代替
  • sql_big_tables 已经移除。 用 big_tables 代替
  • sql_low_priority_updates 已经移除。 用 low_priority_updates代替
  • sql_max_join_size 已经移除。用 max_join_size代替
  • max_long_data_size 已经移除。用 max_allowed_packet 代替
  • FLUSH MASTER and FLUSH SLAVE 已经移除。用 RESET MASTER and RESET SLAVE代替
  • SLAVE START and SLAVE STOP 已经移除。用 START SLAVE and STOP SLAVE代替
  • show engine innoDB mutex 将被移除。 用performance schema 中查询代替
Contents
  1. 1. 第一章:基本信息
    1. 1.1. 1.4__ Mysql5.6 的新特性
      1. 1.1.1. 新增的特性
      2. 1.1.2. 过时的特性
      3. 1.1.3. 被废除的特性

幸福,不在于得到的多

而在于计较的少