天天看点

MySQL 5.6的72个新特性(译)

4. 现在提供密码安全策略

设备。

配置。

19. 多个关于innodb的新information_schema表,提供了关于buffer pool,表的元数据,索引,数据字典中的外键,以及更细的性能粒度信息,补充了performance schema表的信息。

20. 打开多个表时,innodb限制了保持表信息的内存。

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

24. 最大分区数量提高到8192,这包括所有的分区和子分区。

26. 可以在分区表中显示查询一个或者多个分区,或者更改数据。比如,表t有int 列c,有4个分区p0-03,查询select * from t partition (p0, p1) where c < 5 只返回po,p1符合条件结果。

以下语句支持显式分区查询

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

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

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

31. 表和索引i/o以及表锁的统计表。

32. 记录命令以及命令的阶段。

33. 服务启动的的时候配置参数,以前只能运行时设设置。

34. 支持以全局统一事务id(gtid)为基础的复制。当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务。

36. 如果使用了gtids,启动一个新的复制从库或切换到一个新的主库,就不必依赖log文件或者pos位。

37. gtid复制是全部以事务为基础,使得检查主从一致性变得非常简单。如果所有主库上提交的事务也同样提交到从库上,一致性就得到了保证。

设置使用crc32记录事件的校验值。使用参数 master_verify_checksum可以让服务读取校验值。–slave-sql-verify-checksum 参数使从库读relay日志的时候读取校验值 。

为表,会记录relay log信息到slave_relay_log_info表。这几个表都是自动建立在mysql系统库。

只控制是否开启binlog.

49. 查询优化器对于以下查询(子查询)更有效率
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;

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

58. 另外,一些低效的条件处理被修正,使得更像标准的sql

59. 可以在某个块范围定义选择哪个handler,以前一个存储程序只能有一个全局的handler.

60. 条件顺序被更准确的解决。

62. 以前当条件触发时handler立即被激活。现在只有当条件执行完成后再激活,这样可以选择更为合适的handler.这对于触发多个条件的语句和以往的处理是不同的,如当某个更高优先级的条件稍后被触发,而在此范围内有handlers可以处理这些条件时。以前,只有第一个触发的会被选择,即使它的优先级低。现在更高优先级的会被选择,即使不是第一个触发的。

67. 现在提供更多关于客户端连接失败的信息,并提高了对于主机缓存的访问,主机缓存包括客户端ip和主机名,避免了dns解析。

72. 移除参数

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

指定文件名。

移除–safe-mode

移除–skip-thread-priority

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

参数。

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

移除max_long_data_size,使用max_long_data_size。

移除show authors 和 show contributors命令。

移除set命令的option and one_shot修改器。

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

继续阅读