MySQL5.6 features

This is the MySQL™ Reference Manual. It documents MySQL 5.6 through 5.6.28

添加的新特性(Added Features)

安全提高(security)

1)提供保存加密认证信息的方法,使用.mylogin.cnf文件。使用mysql_config_editor可以创建此文件。这个文件可以进行连接数据库的访问授权。mysql_config_editor会进行加密而不是明文存储。客户端只会在内存中进行解密。这样密码以非明文方式存储,不会在命令行或者环境变量中暴露。

2)mysql.user表现在增加password_expired列,默认值是’N’,使用新的ALTER USER命令可以设置为’Y’。当密码过期后,使用此账号的后续连接都会报错,只到用户使用SET PASSWORD命令创建一个新密码。

3)现在提供密码安全策略,使用明文指定密码时,密码会被当前的密码策略检查,如果太弱会被拒绝(返回ER_NOT_VALID_PASSWORD错误)。会影响CREATE USER, GRANT,和SET PASSWORD命令。密码作为参数被password(),old_password()引用时也会被检查。

优化器提升(Optimization)

1)查询优化器对于以下查询(子查询)更有效率SELECT … FROM single_table … ORDER BYnon_index_column[DESC] LIMIT [M,]N;

此类在大结果集中显示几行的查询在网站中很常见。如:SELECT col1, … FROM t1 … ORDER BY name LIMIT 10; SELECT col1, … FROM t1 … ORDER BY RAND() LIMIT 15。排序缓存由 sort_buffer_size.指定。如果N行被排序的元素足够小可以被入排序缓存(M+N行如果M被指定),可以避免使用合并文件,整个查询可以都放入内存中。见Section 8.2.1.3, “Optimizing LIMIT Queries”。

2)优化器使用MRR,使用非聚集索引进行索引扫描时,如果表很大没有缓存,会导致大量的随机磁盘访问。使用MRR优化,优化器会先对扫描索引,然后收集每行的主键并对主键排序,此时就可以用主键顺序访问基表。这样就用顺序访问代替了随机磁盘访问。

3)优化器使用ICP,没有ICP,引擘使用索引定位行,并返回给服务层,使用where丢弃不符合条件记录。使用ICP后,如果索引中只有部分能被where条件利用,MySQL将where条件压到引擘层。引擘层使用索引项进行评估,只有满足条件的会被读取。ICP可以减少引擘层对基表的访问,同时减少了服务层对引擘层的访问。

4)EXPLAIN命令现在可以用在DELETE, INSERT, REPLACE,UPDATE语句上。以前,只能用在查询语句上。另外,现在支持json格式输出。

5)优化器对于from子句的子查询更有效率,查询执行中会物化子查询以提高性能,另外,优化器还可能对派生表创建索引来加速行检索。

6)优化器使用semi-join和物化来优化子查询。

7)对关联表查询或者使用join buffer的查询,新算法BKA被使用。BKA支持inner join,outer join,semi-join,包手nested outer joins 和 nested semi-joins。好处是提高了表扫描的性能。

8)优化器有追踪功能,对于开发者很有用。

数据类型(Data types)

1)TIME, DATETIME, 和 TIMESTAMP 支持更小时的时间粒度,精确到微秒(6位)。

2)以前每个表最多只有一个TIMESTAMP 列可以用当前时间初始化和更新。这个限制没有了。所有TIMESTAMP列都可以设置这2个属性。另外,DATETIME 也支持这些属性了。

3)YEAR(2)类型被抛弃,现存的表中的year(2)列会和以前一样处理,但新建或者修改表结构时会转化为YEAR(4)

InnoDB的增强(The InnoDB storage engine)

1)MySQL 5.6完全集成InnoDB作为默认的存储引擎。同时5.6版本在使用InnoDB上的很多细节做了改进。

2)InnoDB现在可以限制大量表打开的时候内存占用过多的问题(比如这里提到的)(第三方已有补丁)。

3)Innodb redo log大小从最大4GB提高到512GB,通过参数 innodb_log_file_size 配置。

4)Innodb使用了一种新的,更快的算法来检测deadlocks. 所有死锁信息都可以被记录到错误日志。方便分析。

5)Online DDL,几种ALTER TABLE操作不再拷备表,不会阻塞insert,update,delete或者全部写入操作。仍然有一些Alter操作需要重建表,比如增加/删除列,增加/删除主键,改变数据类型等。这也就是所谓的online DDL。(之前版本中DDL操作需要全部加锁重建表)。

6)Innodb强化了几种内部性能,包括拆分kernel mutex来减少竞争,将刷新操作移出主线程,允许使用多个清理线程,以及减少了大内存系统中的buffer_pool竞争。

7)可以通过NoSQL API开发应用访问InnnoDB表。它使用流行的memcached守护进程来响应对于key-value对的Add,Set和GET请求。这样避免了解析和构建query execution plan的成本。你可以使用NoSQL API或者SQL来访问同一份数据。比如:你可以通过NoSQL API快速访问和查询表数据,使用SQL来进行复杂查询以及兼容已有的应用,大大提升了数据访问的性能。

8)为了避免大buffer_pool的实例重启服务时过长的warmup时间,你可以在重启后立即加载缓存页面。MySQL可以在关闭时导出完全数据文件,检阅此文件找出重启时需要加载的pages。你可以在任何手工导入导出buffer_pool,比如在性能测试时或者在执行复杂的OLAP查询后。

分区的改进(partition)

1)最大分区数量提高到8192,这包括所有的分区和子分区。使用ALTER TABLE … EXCHANGE PARTITION 可以在未分区表和分区表和子分区表之间交换分区。这可以用来导出导入分区。

2)支持显式分区数据查询,例如:

SELECT * FROM employees PARTITION (p0, p2);

DELETE FROM employees PARTITION (p0, p1);

UPDATE employees PARTITION (p0) SET store_id = 2 WHERE fname = ‘Jill’;

SELECT e.id, s.city FROM employees AS e JOIN stores PARTITION (p1) AS s …;

复制和日志(replication)

1)支持延时复制,MySQL现在支持延迟复制,默认是0秒。使用CHANGE MASTER TO参数 MASTER_DELAY 来设置延迟。可以让slave跟master之间控制一个时间间隔,方便特殊情况下的数据恢复。(以前是使用第三方工具可以做到)

2)行级复制功能加强,可以降低磁盘、内存、网络等资源开销(只记录能确定行记录的字段即可)。

3)现在支持多线程复制。如果开启,sql线程作为协调者协调多个工作线程,数量取决于slave_parallel_workers。现在多线程复制以单库为基础,特定库的更新的相对顺序和主库一样。不过,没有必要协调不同库之间的事务。事务可以被分布到每个库,意味着一个复制从库的工作线程可以顺序执行事务而不必等待其它库的更新完成。

4)支持以全局统一事务ID(GTID)为基础的复制。当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务。GTID复制是全部以事务为基础,使得检查主从一致性变得非常简单。如果所有主库上提交的事务也同样提交到从库上,一致性就得到了保证。

5)支持启用GTID,对运维人员来说应该是一件令人高兴的事情,在配置主从复制,传统的方式里,你需要找到binlog和POS点,然后change master to指向,而不是很有经验的运维,往往会将其找错,造成主从同步复制报错,在mysql5.6里,如果使用了GTIDs,启动一个新的复制从库或切换到一个新的主库,就不必依赖log文件或者pos位。需要知道master的IP、端口,账号密码即可,因为同步复制是自动的,mysql通过内部机制GTID自动找点同步。

6)binlog的读写现在是崩溃安全的,因为只有完整的事件(或者事务)才会被记录和读取。默认会记录事件的大小以及事件本身,使用大小来验证事件被正确记录。你也可以使用参数binlog_checksum设置使用crc32记录事件的校验值。使用参数master_verify_checksum可以让服务读取校验值。slave-sql-verify-checksum参数使从库读relay日志的时候读取校验值。

MySQL支持在表中保存主库连接信息了。使用参数–master-info-repository和 –relay-log-info-repository来设置。设置 –master-info-repository为表,会记录连接信息到slave_master_info表。设置–relay-log-info-repository为表,会记录relay log信息到slave_relay_log_info表。这几个表都是自动建立在mysql系统库。

增强Performance Schema数据库(Mysql performance schema)

1)记录表的输入与输出,操作包括行级访问表和临时表,如insert,upate,delete.

2)表的事件过滤,以库或者表名为基础。

3)线程的事件过滤,更多关于线程的信息被搜集

4)表和索引I/O以及表锁的统计表。

5)记录命令以及命令的阶段。

移除的特性(Removed Features)

以下被参数移除,同时会显示新的参数。

移除–log,换为–general_log 指定是否开启,–general_log_file=file_name 指定文件名。

移除–log-slow-queries和 log_slow_queries,用–slow_query_log 开启慢查询日志,用–slow_query_log_file=file_name 指定文件名。

移除–one-thread ,使用–thread_handling=no-threads 替换。

移除–safe-mode

移除–skip-thread-priority

移除–table-cache,改为table_open_cache

移除–init-rpl-role 和 –rpl-recovery-rank选项和rpl_recovery_rank 系统参数,以及Rpl_status状态值。

移除engine_condition_pushdown,使用engine_condition_pushdown标识optimizer_switch 参数。

移除have_csv, have_innodb, have_ndbcluster, 和 have_partitioning,使用show engines替换。

移除sql_big_tables,使用big_tables。

移除sql_low_priority_updates ,使用low_priority_updates 。

移除 sql_max_join_size,使用 max_join_size 。

移除max_long_data_size,使用max_long_data_size。

移除 FLUSH MASTER 和 FLUSH SLAVE命令,使用RESET MASTER 和 RESET SLAVE 替换。

移除SLAVE START 和 SLAVE STOP命令,使用START SLAVE 和 STOP SLAVE替换。

移除SHOW AUTHORS 和 SHOW CONTRIBUTORS命令。

移除set命令的OPTION and ONE_SHOT修改器。

不允许在存储过程中或者函数参数中或者存储程序本地变量中使用default来指定(如:SET var_name = DEFAULT命令),但可以在指定系统变量时使用default。

如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。

mysql 5.6特性_MySQL 5.6新特性概览相关推荐

  1. mysql 主从特性_mysql 5.6 新特性 主从推延

    mysql 5.6 新特性 主从延迟 前面一篇文章<mysql replication 主从间如何延迟 --- 某大型互联网面试题>已经写到如何延迟主从配置,在5.6里已经实现了这个功能, ...

  2. mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)

    MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  3. mysql is双竖线_MySQL 5.0 新特性教程 存储过程:第二讲

    MySQL 5.0 新特性教程 存储过程:第二讲推荐查看本文HTML版本 什么样的SQL语句在Mysql存储过程中才是合法的呢?你可以创建一个包含INSERT, UPDATE,DELETE, SELE ...

  4. mysql 5.9 新特性_MySQL 5.7新特性介绍

    1. 介绍身处MySQL这个圈子,能够切身地感受到大家对MySQL 5.7的期待和热情,似乎每个人都迫不及待的想要了解.学习和使用MySQL 5.7.那么,我们不禁要问,MySQL 5.7到底做了哪些 ...

  5. mysql cte的好处_Mysql 8 重要新特性 - CTE 通用表表达式

    前言 Mysql 8 正式发布了,新增了很多优秀特性,之后我会挑些重点来分享. 下面和大家一起熟悉下CTE(Common Table Expressions)通用表表达式. CTE 是什么 派生表大家 ...

  6. Mysql Connector 5.1 好用的新特性

    Mysql Connector 5.1 好用的新特性 转载自并发编程网 – ifeve.com本文链接地址: Mysql Connector 5.1 好用的新特性 Mysql Connector 5. ...

  7. Jdk8新特性一:jdk8新特性之default关键字、日期类、Base64类、Optional

    Jdk8新特性一:jdk8新特性之default关键字.日期类.Base64类.Optional 文章目录 Jdk8新特性一:jdk8新特性之default关键字.日期类.Base64类.Option ...

  8. mysql 直方图统计_MySQL 8.0 新特性之统计直方图

    原标题:MySQL 8.0 新特性之统计直方图 | 译者简介 译者 韩杰·沃趣科技MySQL数据库工程师 熟悉mysql体系架构.主从复制,熟悉问题定位与解决 出品 沃趣科技 原文链接: https: ...

  9. MySQL数据处理之增删改,MySQL8新特性计算列,完整详细可收藏

    文章目录 1.插入数据 2.更新数据 3.删除数据 4.MySQL8新特性:计算列 1.插入数据 1.1 方式1:VALUES的方式添加 情况1:为表的所有字段按默认顺序插入数据 INSERT INT ...

最新文章

  1. 从“如何学会做一只机械表”讲如何创新,如何做好产品
  2. Spring核心AOP(面向切面编程)
  3. linux for循环
  4. 【栈】【856. 括号的分数】【中等】(需回顾)
  5. CM: 使用ICF node实现对附件的读取
  6. 微服务实战(六):落地微服务架构到直销系统(事件存储)
  7. 实例13:python
  8. CryptoJS -- JS加密算法库
  9. python中最难的是什么_传说中Python最难理解的点|看这完篇就够了
  10. 2017蓝桥杯c语言C组承压计算,2017蓝桥杯 省赛C题(承压计算)
  11. 在javascript中NodeList和Array的区别及转换方法
  12. git SSH 公钥拉取代码(使用及配置)
  13. java面试知识题 app_java面试宝典_java面试宝典下载app_java面试题大全带答案
  14. Hadoop配置和启动
  15. socket里sendto()函数
  16. android app 嵌入广告,流氓来了!如何拯救手机中嵌入广告的应用
  17. 多线程编程中条件变量和的spurious wakeup 虚假唤醒
  18. 读书笔记—情商:为什么情商比智商更重要
  19. IPSec之IKEv2详解
  20. android手机怎么取电池,荣耀V8后盖怎么打开 华为荣耀V8手机后盖拆解与更换电池图文教程...

热门文章

  1. 读SRE Google运维解密有感(一)
  2. (原创)使用tensorflow及anaconda(spyder)时遇到的问题
  3. 2017.9.6.语文
  4. Eclipse+Maven+Spring+CXF 构建webservice 服务
  5. (10)JavaScript学习笔记 - 数组
  6. PowerShell 解决红字一闪而过问题
  7. Android第三十二期 - 辅助类Android
  8. [20170828]grep过滤技巧.txt
  9. 学习使用常用的windbg命令(u、dt、ln、x)
  10. SynchronizedMap和ConcurrentHashMap 区别