MySQL 5.6中新增特性、不推荐使用的功能以及废弃的功能有哪些( 三 )


mysqlbinlog工具可以从指定的主机以原始的二进制格式备份二进制日志文件 。工具相关的命令行参数为
read-from-remote-server和 raw
支持延迟复制 , 也即 , 将slave延后于master一段特定的时间 。改特性可以用于测试延迟带来的影响或者挽救 DBA在master上不小心犯的错误(通过CHANGE MASTER TO中的MASTER_DELAY指定) 。
对于有多块网络接口的salve机器可指定只使用其中某一个(通过CHANGE MASTER TO 语句中的 MASTER_BIND指定)
新增log_bin_basename参数用于指定二进制日志文件完整的路径和文件名
支持slave上多个线程并行执行master上传递下来的事务 。通过
slave_parallel_workers指定slave上并发执行事务的worker数量 。这种并发是基于数据库的 , 也即数据库内的操作是有先后顺序的 , 主从上需以一致的顺序执行 , 但不同数据库之间则不需要这种顺序 , 也即一个worker可不必等待其他worker在更新完某个库之后再更新某库 。

Optimizer enhancements.
优化了SELECT FROM single_table ORDER BY
non_index_column [DESC] LIMIT [M,]N;查询性能
实现了Disk-Sweep Multi-Range Read.有效减少了在大表且没有缓存在缓存中的情况下在辅助索引上范围扫描造成的随机磁盘访问 。采用的办法是先扫描找出相关行关联的key , 然后依据主键将key排序 , 最终依据排好序的key回表取出数据 。
实现了ICP(Index Comndition Pushdowndown) 。若没有ICP , 存数引擎层根据索引定位表中的行并返回给Server层然后在这里用WHERE从句中的条件对结果进行过滤 。若使用ICP , 如果WHERE条件中的部分列可由索引中的字段进行评估那么server层会将WHERE条件中的这一部分下推到存储引擎层 。引擎层进行评估后只取出满足要求的行 。这样可有效减少引擎访问表的次数和server访问引擎的次数 。
EXPLAIN支持 DELETE, INSERT, REPLACE和UPDATE , 以前只支持SELECT , 且可以以JSON格式输出 。
处理FROM从句中的子查询(派生表)更加高效 。首先FROM后的子查询的物化过程直到查询执行时需要这一部分的内容时才进行 , 另外查询可能会在派生表上加索引以加快查询 。
使用semi-join和物化策略优化子查询 。
使用BKA(Batched Key Access)join算法提升join性能 。支持inner join、outer join、semi-join、nested outer joins和nested semi-joins 。
新增tracing功能主要供开发者使用 。通过一些列 optimizer_trace_xxx 变量和 INFORMATION_SCHEMA.OPTIMIZER_TRACE来提供
Condition handling.
可通过GET DIAGNOSTICS语句获取各种诊断信息
Data types.
对于TIME、DATETIME、TIMESTAMP类型的值支持小数的秒 , 最多可支持毫秒级别(也即6位的精度) 。
之前的版本中每个表至多只有一个TIMESTAMP列可以初始化为当天日期时间(DEFAULT CURRENT_TIMESTAMP)或者更新至当天日期时间( ON UPDATE CURRENT_TIMESTAMP) 。新版本的中取消了此限制.另外 , 之前只有TIMESTAMP列可以使用DEFAULT CURRENT_TIMESTAMP和 ON UPDATE CURRENT_TIMESTAMP , 现在datetime列也可以 。
之前版本中TIMESTAMP列定义中什么都不指定的话自动的默认为DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 。现在可以通过 explicit_defaults_for_timestamp 变量关闭这一行为 。
Host cache.
提供了更多有关导致连接错误的原因的信息以及对host cache访问的改进 , 其中包含客户端IP和主机名可用以避免DNS查询 。具体实现如下:
增加了一系列 Connection_errors_xxx状态变量 , 提供有关连接错误的信息 , 这些信息是全局的表示所有连接的各类错误信息的聚合 , 不是针对于某个特定IP地址 。

推荐阅读