译者励志:个人开始从MySQL 5.7 进行翻译,目的以自学英语为主,原文来自MySQL 官方文档(参考:MySQL 5.7 Reference Manual)
MySQL5.6 因为是现在环境使用的默认版本,所以想还是学习一下,毕竟以前也没看过。
预言和法律公告(略)
Chapter 1 General Information
目录表
MySQL 5.6 的新特性
MySQL 5.6 新特性 分三部分列出来
Features Added in MySQL 5.6
Features Deprecated in MySQL 5.6
Features Removed in MySQL 5.6
Features Added in MySQL 5.6
以下特性已在MySQL5.6 中应用:
安全增加。以下都是对安全性增强的项:
在一个.mylogin.cnf 的文件中,提供加密证书认证。
插件
sha256_password
更强的账户密码加密存储。mysql.user表有了
password_expired
字段列,默认是N,可以修改为Y 。密码安全检查:
密码支持文本值,如果密码较简单会返回一个error
ER_NOT_VALID_PASSWORD。
SQL 函数
VALIDATE_PASSWORD_STRENGTH()
对密码进行评估。以上两个都是通过 插件 validate_password 下执行
如果存储过程发现使用了 账号密码是老版本的 pre-4.1 hashing ,那么 mysql_upgrade 将产生一个warning。
在unix 平台 mysql_install_db 支持一个新参数
--random-p
asswords
, 提供更安全的安装密码修改动作不会记录到普通文件如binlog ,querylog。
start slave 命令允许使用在连接参数后面
MySQL Enterprise:审计日志 文件格式化更通用(Oracle 日志格式)
从MySQL5.6.6开始server 端的默认参数不同于之前的发布版
InnoDB enhancements .These
InnoDB
enhancements were added:在innodb 表中可以创建
FULLTEXT
索引,查询的时候使用MATCH() ... AGAINST
语法许多alter table 操作不会有 copying the table 操作(比如:insert update delete 详情参考:https://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_online_ddl )
允许创建数据目录在起初的安装目录之外。
表空间可在线导出到别的实例。不会存在数据不一致等
可以在表上设置8KB到4KB的 数据页 大小了,默认是16KB。详情请看参数
innodb_page_size
提供 adaptive flushing (自适应刷新策略)配置 ,自己控制 io 负载
可以通过 N0SQL API 访问innodb 表(memcached )
执行计划统计 更稳健
只读事务功能(如:
START TRANSACTION READ ONLY
)undo log 可移动到别的实例
innodb_checksum_algorithm=crc32
, 替换 innodb_checksums 做cheacksumsredo log 文件大小从4GB 提升到了最大可为512GB.(见参数:
innodb_log_file_size
)--innodb-read-only
MySQL server 只读模式参数可以通过 压缩工具 zlib 以参数
innodb_compression_level
, 设置 0-9 的压缩级别由于表数据多次修改等操作后,会造成一定量的空闲空间,时间过长后就需要重建表,或者压缩,会随着量增加操作失败率也会加大。现在DBA 们可以用 参数
innodb_compression_failure_threshold_pct
,innodb_compression_pad_pct_max
. 动态调整空白页的大小。许多元数据 innodb buffer pool 索引外键等信息放到了
INFORMATION_SCHEMA
的表里面去了现在数据量巨大的表使用LRU 算法,让 访问数据更快了。
InnoDB
has several internal performance enhancements, including reducing contention by splitting the kernel mutex, moving flushing operations from the main thread to a separate thread, enabling multiple purge threads, and reducing contention for the buffer pool on large-memory systems.(大家都看得懂)算法提升,能快速发现死锁(可以到error log 查看)
数据库异常等宕机后,启动不在漫长了。数据库会自动加载上次在buffer pools 中的数据。(https://dev.mysql.com/doc/refman/5.6/en/innodb-preload-buffer-pool.html)
到MySQL5.6.16 innochecksum 支持超过2GB 的文件,以前只支持2GB 以内
全局可动态修改参数
innodb_status_output
andinnodb_status_output_locks
,到MySQL5.6.17 ,在线DDL 支持以下操作(包括分区表):
OPTIMIZE TABLE
ALTER TABLE ... FORCE
ALTER TABLE ... ENGINE=INNODB
(when run on anInnoDB
table)zlib 库从1.2.3 升级到了1.2.11
Partitioning. 表分区特性:
分区支持最大数量8192 ,包括表的所有分区以及自分区
支持分区与不是分区的表进行转变:
ALTER TABLE ... EXCHANGE PARTITION
明确的一些操作能在一个或者多个分区表或者子分区表进行操作:
select
delete
insert
replace
update
load data
load xml
举个列子 :SELECT * FROM t PARTITION (p0, p1) WHERE c < 5 ; 只会返回p0和p1 分区的数据。
Performance Schema. 的新特性:
输入输出手段:数据表和临时表行级别的输入输出(包括行级别的fetch , insert, update, delete.)
基于shema或者表名字 的事件过滤
基于线程的事件过滤
表和锁的语法
Instrumentation for statements and stages within statements.(不太懂)
Configuration of instruments and consumers (instruments 是个什么鬼?)以前只能运行时可能,现在启动的时候
MySQL NDB Cluster. 不介绍,我用不到
Replication and logging. These replication enhancements were added:
支持GTIDs (global transaction identifiers)
有了GTID 很多日志文件不是必须的了,比如记录位置信息到binlog
row image control。
minimal
(log required columns only),full
(log all columns), ornoblob
(log all columns except for unneededBLOB
orTEXT
columns) (不用翻译)Binary logs crash-safe
MySQL now supports logging of master connection information and of slave relay log information to tables as well as files
mysqlbinlog now has the capability to back up a binary log in its original binary format
支持主从延迟设置通过:CHANGE MASTER TO MASTER_DELAY = N; 延迟N 秒
log_bin_basename
系统变量添加,类似的relay_log_basename
设置relay log通过系统变量
slave_parallel_workers
可支持 slave 多线程通道平行执行Optimizer enhancements. 查询优化器增强:
sort_buffer_size
. order by 排序Disk-Sweep Multi-Range Read
Index Condition Pushdown (ICP) 启用 ICP 能提升索引查询性能
EXPLAIN
语句支持了 DELETE,REPLACE,INSERT AND UPDATE ,以前只针对select使驱动表执行效率更快
uses semi-join and materialization strategies to optimize subquery execution.
A Batched Key Access (BKA) join algorithm
has a tracing capability :可以通过
INFORMATION_SCHEMA.OPTIMIZER_TRACE
表 or optimizer_trace_xxx 体统变量
查看Condition handling.
GET DIAGNOSTICS
语句Data types. 数据类型改变:
TIME
,DATETIME
, andTIMESTAMP 时间类型值支持精确到6位小数
之前是最多一个 TIMESTAMP 列可自动初始化和update ,现在有了很好的改善能够再多个 DATETIME 列定义
启动数据库参数
explicit_defaults_for_timestamp
Host cache.
OpenGIS. 空间位置
在线DDL 将减少rebuild 时间 允许DML并发(https://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html)
(下一节关于MySQL5.6不推荐的部分,尽情期待......)