这是一个里程碑版本,使用风险自负。不支持在里程碑版本之间(或从里程碑版本到GA版本)升级。重要的开发更改发生在里程碑版本中,您可能会遇到兼容性问题,例如除了通常的运行过程之外还需要注意的数据格式更改mysql_upgrade.例如,您可能会发现有必要转储数据, mysqldump升级前重新加载。(在任何情况下,在升级前进行备份都是一种谨慎的预防措施。)
性能模式增加了以下内容:
的
setup_consumers
表内容已更改。在此之前,该表使用”平”结构,使用使用者名称和目标表之间的一一对应关系。这已被消费者设置的层次结构所取代,该层次结构允许逐步对接收事件的目的地进行更精细的控制。前面的
消费者不复存在。相反,Performance Schema会自动维护用户层次结构中启用设置的级别的适当摘要。例如,如果只启用顶级(全局)消费者,则只维护全局摘要。其他的,比如线程级别的摘要,则不是。看到消费者预过滤.此外,还添加了优化以减少性能模式开销。xxx
_summary_xxx
现在可以使用new来按对象筛选事件
setup_objects
表格目前,这个表可以根据模式名和/或表名有选择地检测表。看到按对象预过滤.一张新桌子,objects_summary_global_by_type
,总结对象的事件。现在可以按线程筛选事件,并且Performance Schema为每个线程收集更多信息。一张新桌子,
setup_actors
,可以根据每个连接会话的用户名和/或主机名,有选择地检测用户连接。的线程
表,其中包含每个活动服务器线程的一行,扩展了几个新列。有了这些补充,在线程
像这样可以从INFORMATION_SCHEMA。PROCESSLIST
表或输出显示PROCESSLIST
.因此,所有三个线程都为线程监视目的提供信息。使用线程
与其他两个线程信息源的不同之处在于:访问
线程
不需要互斥,对服务器性能的影响最小。INFORMATION_SCHEMA。PROCESSLIST
而且显示PROCESSLIST
对性能有负面影响,因为它们需要互斥。线程
提供每个线程的附加信息,例如它是前台线程还是后台线程,以及与线程关联的服务器中的位置。属性可以控制监视哪些线程
检测
列或使用setup_actors
表格
由于这些原因,执行服务器监视的dba使用
INFORMATION_SCHEMA。PROCESSLIST
或显示PROCESSLIST
不妨监控使用线程
代替。
如果您从早期版本升级到此MySQL版本,则必须运行mysql_upgrade(并重新启动服务器)以将这些更改合并到
performance_schema
数据库。有关更多信息,请参见MySQL性能模式.
不兼容的更改:以下过时的结构已被删除。在显示替代方案的地方,应该更新应用程序以使用它们。
的
——日志
服务器选项和日志
系统变量。相反,使用general_log
系统变量,以启用常规查询日志和general_log_file
设置通用查询日志文件名的系统变量。的
log_slow_queries
系统变量。相反,使用slow_query_log
系统变量以启用慢速查询日志和slow_query_log_file
设置慢查询日志文件名的系统变量。的
——一个线程
服务器选项。使用——thread_handling =没有线程
代替。的
——skip-thread-priority
服务器选项。的
engine_condition_pushdown
系统变量。使用engine_condition_pushdown
国旗optimizer_switch
变量来代替。的
have_csv
,have_innodb
,have_ndbcluster
,have_partitioning
系统变量。使用显示引擎
代替。的
sql_big_tables
系统变量。使用big_tables
代替。的
sql_low_priority_updates
系统变量。使用low_priority_updates
代替。的
sql_max_join_size
系统变量。使用max_join_size
代替。的
ONE_SHOT
的修饰符。集
声明。
重要的变化;复制:复制过滤选项,例如
——replicate-do-db
,——replicate-rewrite-db
,——replicate-do-table
在区分大小写方面彼此不一致。现在所有——复制- *
选项遵循适用于MySQL服务器其他地方的数据库和表名称的相同大小写敏感性规则,包括lower_case_table_names
系统变量。(Bug #51639, Bug #11759334)重要的变化;复制:添加了
MASTER_RETRY_COUNT
选项。将master更改为
语句,与之对应Master_Retry_Count
列的输出显示奴隶状态
.该选项设置此列中显示的值。MASTER_RETRY_COUNT
最终将取代旧的(现在已弃用)——master-retry-count
服务器选项,现在是设置从服务器在失去与主服务器的连接后尝试重新连接的最大次数的首选方法。(Bug #44209, Bug #11752887, Bug #44486, Bug #11753110)InnoDB:设置
innodb_read_ahead_threshold
来0
禁用预读。在5.6.1之前,值为0
在读取64页范围的边界页时触发预读操作。(Bug #11763876, Bug #56646)InnoDB:
InnoDB
现在可以报告总大小了吗回滚段,以页面.该值通过information_schema.innodb_metrics
桌子,使用柜台trx_rseg_current_size
.启用和查询计数器的操作如下:mysql> SET GLOBAL innodb_monitor_enable = 'trx_rseg_current_size';mysql> SELECT name, count, max_count, comment -> FROM innodb_metrics WHERE name = 'trx_rseg_current_size';+-----------------------+-------+-----------+----------------------------------------+ | 名字| |计数max_count |发表评论 | +-----------------------+-------+-----------+----------------------------------------+ | 当前trx_rseg_current_size | 346 | 346 |回滚段大小的页 | +-----------------------+-------+-----------+----------------------------------------+
(错误# 57584)
复制:
显示奴隶状态
现在显示I/O线程对每个连接尝试的实际重试次数。(Bug #56416, Bug #11763675)复制:添加了
Slave_last_heartbeat
状态变量,它显示复制从机最后一次接收心跳信号的时间。显示为using时间戳
格式。(错误# 45441)复制:的输出中添加了时间戳
显示奴隶状态
显示最近发生I/O和SQL线程错误的时间。的Last_IO_Error
列现在以最近I/O错误的时间戳为前缀,并且Last_SQL_Error
显示最近SQL线程错误的时间戳。时间戳值使用该格式YYMMDD hh: mm: ss
在这两列中。有关更多信息,请参见SHOW SLAVE STATUS语句.(Bug #43535, Bug #11752361, Bug #64255, Bug #13726435)现在有一个
bind_address
属性的值——bind-address
选择。这样就可以在运行时访问地址。(Bug #44355, Bug #11752999)”未知的表”只包含表名的错误消息现在也包含数据库名。(Bug #34750, Bug #11747993)
在此之前,
解释
控件截断的大型联合的输出联盟的结果
如果字符串变得太大,则按如下方式在列表的末尾行:< union1、2、3、4、…>
为了更容易理解联合边界,截断现在发生在字符串中间:
< union1, 2、3、…9 >
(Bug #30597, Bug #11747073)
OpenGIS规范定义了测试两个几何值之间关系的函数。MySQL最初实现了这些函数,它们使用对象包围矩形,并返回与相应的基于mbr的函数相同的结果。相应的版本现在可以使用精确的物体形状。这些版本以
ST_
前缀。例如,包含()
使用对象包围矩形,而ST_Contains ()
使用对象形状。有关更多信息,请参见测试几何对象之间空间关系的函数.现在也有
ST_
已经精确的现有空间函数的别名。例如,ST_IsEmpty ()
的别名。IsEmpty ()
此外,
IsSimple ()
而且ST_Distance ()
现在实现了空间函数以及集合算子函数ST_Difference ()
,ST_Intersection ()
,ST_SymDifference ()
,ST_Union ()
, (Bug #4249, Bug #11744883)以下项目已弃用,并将在未来的MySQL版本中删除。在显示替代方案的地方,应该更新应用程序以使用它们。
的
thread_concurrency
系统变量。的
——语言
服务器选项。使用lc_messages_dir
而且lc_messages
而是系统变量。的
——master-retry-count
服务器选项。使用MASTER_RETRY_COUNT
选择的将master更改为
语句代替。
对添加基于Unicode排序算法(UCA)的Unicode排序的支持已得到改进:
MySQL现在可以识别用于编写排序描述的更大的LDML语法子集。在许多情况下,可以从Unicode Common Locale Data Repository下载排序规则定义,并粘贴相关部分(即
<规定>
而且> < /规则
标签)到MySQLIndex.xml
文件。LDML规则中的字符表示更加灵活。任何字符都可以按字面写,而不仅仅是基本的拉丁字母。对于基于UCA 5.2.0的排序规则,十六进制表示法可以用于任何字符,而不仅仅是BMP字符。
在解析时发现问题
Index.xml
,产生了更好的诊断方法。对于需要裁剪规则的排序规则,裁剪信息不再有固定的大小限制。
有关更多信息,请参见MySQL支持的LDML语法,解析Index.xml时的诊断.
TO_BASE64 ()
而且FROM_BASE64 ()
现在可以使用函数对base-64字符串进行编码。Unicode实现已经扩展到包含
utf16le
字符集,对应于Unicode字符集的UTF-16LE编码。这类似于utf16
(UTF-16),但它是小端序而不是大端序。两个
utf16le
排序规则如下:utf16le_general_ci
:默认的排序规则,区分大小写(类似于utf16_general_ci
).utf16le_bin
:区分大小写,按代码点进行比较,提供与utf16_bin
.
的使用有一些限制
utf16le
.除了关于用户定义排序规则的项外,这些与上的限制相同ucs2
,utf16
,utf32
.MySQL 5.6中复制的变化mysqlbinlog生成的输出
——base64-output =总
选项不可用。总是
现在是此选项的无效值。如果给出的选项没有值,效果现在与——base64-output =汽车
而不是——base64-output =总
.参考:参见Bug #28760。
为Unicode字符集添加了克罗地亚语排序规则:
utf8_croatian_ci
,ucs2_croatian_ci
,utf8mb4_croatian_ci
,utf16_croatian_ci
,utf32_croatian_ci
.你整理有裁剪克罗地亚字母:Č
,Ć
,Dž
,Đ
,Lj
,新泽西
,Š
,Ž
.它们基于Unicode 4.0。对优化器相关的系统变量做了一些更改:
的
optimizer_switch
系统变量有新的engine_condition_pushdown
而且index_condition_pushdown
标志,用于控制是否使用存储引擎条件下推优化和索引条件下推优化。的engine_condition_pushdown
系统变量现在已弃用。有关条件下推的信息,请参见发动机状态下压优化,索引条件下推优化.的
optimizer_switch
系统变量有新的mrr
而且mrr_cost_based
标志来控制多范围读取优化的使用。的optimizer_use_mrr
系统变量已被移除。有关多范围读取的信息,请参见多范围读优化.的
join_cache_level
系统变量已重命名为optimizer_join_cache_level
.这将启用单个显示类似“优化器%”的变量
语句显示更多与优化器相关的设置。
以前仅用于内部连接的块嵌套循环(BNL)连接算法已得到扩展,可用于外部连接操作,包括嵌套外部连接。有关更多信息,请参见块嵌套循环和批处理键访问连接.
结合这项工作,一个新的系统变量,
optimizer_join_cache_level
,控制如何进行连接缓冲。一个
——bind-address
选项已经添加到一些MySQL客户端程序:mysql,, mysqldump,mysqladmin,mysqlbinlog,mysqlcheck,mysqlimport,mysqlshow.这适用于具有多个网络接口的计算机,并允许您选择使用哪个接口连接到MySQL服务器。对。进行了相应的更改
mysql_options ()
C API函数,现在有一个MYSQL_OPT_BIND
选项,用于指定接口。参数为主机名或IP地址(以字符串形式指定)。
不兼容的更改;复制:的行为
插入延迟
语句在使用基于语句的复制时发生了如下变化:以前,当使用
binlog_format =声明
,执行时在客户端发出警告插入延迟
;现在,在这种情况下没有发出警告。以前,当使用
binlog_format =声明
,插入延迟
日志记录为插入延迟
;现在,它被记录为插入
,没有延迟
选择。然而,当
binlog_format =声明
,插入延迟
继续执行为插入
(没有延迟
选项)。的行为插入延迟
使用时保持不变binlog_format =行
:插入延迟
不生成警告,执行为插入延迟
,使用基于行的格式进行日志记录。此更改还会影响
binlog_format =混合
,因为插入延迟
不再被认为不安全。现在,当日志格式为混合
,则不会切换到基于行的日志记录。这意味着该语句被记录为简单语句插入
(即没有延迟
选项),使用基于语句的日志记录格式。(Bug #54579, Bug #11762035)参考:参见Bug #56678, Bug #11763907, Bug #57666。此问题是Bug #39934, Bug #11749859的回归。
不兼容的更改;复制:当决定是否复制
创建数据库
,删除数据库
,或修改数据库
语句,数据库级选项现在优先于任何选项——replicate-wild-do-table
选项。换句话说,当试图复制这些语句之一时,——replicate-wild-do-table
现在,当且仅当没有数据库级选项应用于语句时,才会检查选项。(Bug #46110, Bug #11754498)不兼容的更改:饥饿的
用读锁刷新表
语句发生在两个或多个连接中有恒定的并发DML语句负载时。类打开某个表的连接会发生死锁处理程序
语句试图通过DML语句更新数据,而另一个连接试图执行用读锁刷新表
同时。这些问题是由全局读锁实现导致的,重新实现后产生了以下后果:
(Bug #57006, Bug #11764195, Bug #54673, Bug #11762116)
不兼容的更改:
创建表
语句(包括创建表…就像
)现已被禁止锁表
声明生效。这种变化的一个后果是
创建表…就像
进行相同的检查创建表
并且不只是复制.frm
文件。这意味着,如果当前SQL模式与创建原始表时的有效模式不同,那么对于新模式,表定义可能被认为是无效的,语句将失败。(Bug #42546, Bug #11751609)InnoDB;复制:如果主人
innodb_file_per_table =了
,innodb_file_format =羚羊
(和innodb_strict_mode =了
),或两者兼而有之创建表
选项,例如KEY_BLOCK_SIZE
,都被忽略了。这样主人就可以避免饲养ER_TOO_BIG_ROWSIZE
错误。然而,被忽视的
创建表
选项仍然被写入二进制日志,因此,如果从机有innodb_file_per_table =对
而且innodb_file_format =梭鱼
,它可能会遇到一个ER_TOO_BIG_ROWSIZE
错误,导致从SQL线程中止,复制失败。在主服务器运行MySQL 5.1而从服务器运行MySQL 5.5(或更高版本)的情况下,当主服务器和从服务器都以默认值运行时,就会发生故障
innodb_file_per_table
而且innodb_file_format
.这可能会导致升级过程中出现问题。的默认值可解决此问题
innodb_file_per_table
而且innodb_file_format
将恢复到MySQL 5.1的默认值,即从
而且羚羊
,分别。(Bug #56318, Bug #11763590)InnoDB:如果MySQL服务器在创建后立即崩溃
InnoDB
表,服务器可以退出信号11
后续重启时。如果服务器在之后停止,则可能发生此问题InnoDB
为表创建主索引,但是在索引定义记录到MySQL元数据之前。(错误# 57616)参考:这个问题是Bug #54582的回归。
InnoDB:启用二进制日志记录后,
InnoDB
可以在崩溃恢复期间使用引用事务ID为0的消息暂停。(Bug #54901, Bug #11762323)复制:由于在MySQL 5.5.3中所做的更改,在
binlog_cache_size
而且max_binlog_cache_size
服务器系统变量同时影响二进制日志语句缓存(也在该版本中引入)和二进制日志事务缓存(以前简称为二进制日志缓存)。这意味着设置这两个变量中的一个或两个所使用的资源是预期数量的两倍。为了纠正这个问题,这些变量现在只影响事务缓存。此问题的修复还引入了两个新的系统变量binlog_stmt_cache_size
而且max_binlog_stmt_cache_size
,它只影响二进制日志语句缓存。此外,
Binlog_cache_use
每当使用任何一个缓存时,状态变量都会增加Binlog_cache_disk_use
每当使用来自任何一个缓存的磁盘空间时,都会增加,这会导致语句和事务缓存的性能调优问题,因为在试图排除过多的磁盘寻道和相关问题时,无法确定超出了其中的哪一个。通过更改这两个状态变量的行为,使它们仅在响应二进制日志事务缓存的使用时递增,以及引入两个新的状态变量,可以解决这个问题Binlog_stmt_cache_use
而且Binlog_stmt_cache_disk_use
,仅通过使用二进制日志语句缓存进行递增。的行为
max_binlog_cache_size
活动会话的系统变量也已更改为与binlog_cache_size
系统变量:以前,在max_binlog_cache_size
在现有届会生效;现在,随着变化binlog_cache_size
的变化。max_binlog_cache_size
仅在该值更改后开始的会话中生效。有关更多信息,请参见二进制日志记录使用的系统变量,服务器状态变量.(Bug #57275, Bug #11764443)
复制:的
Binlog_cache_use
而且Binlog_cache_disk_use状态
通过使用事务性存储引擎更改表,变量增加了两次。(Bug #56343, Bug #11763611)参考:这个问题是Bug #50038的回归。
复制:当
停止奴隶
时,从SQL线程回滚当前事务并立即停止,如果事务仅更新使用事务存储引擎的表。以前,即使包含事务也会发生这种情况创建临时表
语句,删除临时表
语句,或者两者都可以,尽管这些语句不能回滚。因为临时表在用户会话(在本例中是复制用户)的生命周期中一直存在,所以它们会一直存在,直到从服务器停止或重置。在后续事务之后重新启动事务时开始的奴隶
语句时,SQL线程会中止,并报错要创建(或删除)的临时表已经存在(或不存在,在后一种情况下)。执行此修复后,如果正在进行的事务包含
创建临时表
语句,删除临时表
语句,或者两者都有,SQL线程现在等待事务结束,然后停止。(Bug #56118, Bug #11763416)复制:当在生成一个新的二进制日志文件的名称时发生错误,该错误被记录下来,但不会显示给用户。(错误# 46166)
参考:参见:Bug #37148, Bug #11748696, Bug #40611, Bug #11750196, Bug #43929, Bug #51019。
复制:当
lower_case_table_names
在从服务器上设置为1,而在主服务器上未设置为1,则复制语句中的数据库名称不会转换,导致在使用区分大小写的文件系统的从服务器上复制失败。基于语句的复制和基于行的复制都会出现这种情况。此外,在使用基于行的复制时
lower_case_table_names
如果仅在从服务器上设置为1,则表名也不会转换,这也会导致在使用区分大小写的文件系统的从服务器上复制失败。(错误# 37656)设置后
collation_connection
到其中一个排序规则ucs2
或utf16
字符集,此后不可能更改排序规则。(Bug #65000, Bug #13970475)cmake
-DBUILD_CONFIG = mysql_release
在Linux系统上libaio
被连接。现在可以指定了-DIGNORE_AIO_CHECK
建造没有libaio
.(Bug #58955, Bug #11765940)年发生Valgrind故障
fn_format
当从archive_discover
.(Bug #58205, Bug #11765259)传递一个不以空结束的字符串给
UpdateXML ()
或ExtractValue ()
导致服务器断言失败。(Bug #57279, Bug #11764447)在引导模式下,服务器不能执行超过10,000个字符的语句。(Bug #55817, Bug #11763139)
零
包含的某些连接的值没有正确分组集团
.(Bug #45267, Bug #11753766)一个
有
的索引时,子句可能丢失命令
可用,错误地允许返回额外的行。(Bug #45227, Bug #11753730)在联接处理期间,优化器可能低估列描述符所需的内存,并导致内存损坏或服务器崩溃。(Bug #42744, Bug #11751763)
服务器返回错误的结果
在那里……还是……集团
查询InnoDB
表。(Bug #37977, Bug #11749031)错误的检查
XOR
子查询优化导致断言失败。(Bug #37899, Bug #11748998)如果查询使用一个索引生成所需的排序,而使用另一个索引进行范围访问,并使用索引条件下推,则可能导致服务器崩溃。(Bug #37851, Bug #11748981)
启用索引条件下推,
InnoDB
可能由于记录中预期的下推代码与实际的下推代码不匹配而导致崩溃。(Bug #36981, Bug #11748647)范围优化器忽略了半连接中内部表上的条件
在
子查询,导致优化器错过良好的查询执行计划。(Bug #35674, Bug #11748263)依赖子查询和连接可能会导致服务器崩溃或内存溢出。(Bug #34799, Bug #11748009)
类中引用同一表的视图进行选择
从
条款及在
子句导致服务器崩溃。(错误# 33245)嵌套很深的子查询可能导致堆栈溢出或服务器崩溃。(Bug #32680, Bug #11747503)
服务器在优化比较索引的查询时崩溃
小数
具有字符串值的列。(Bug #32262, Bug #11747426)类型的优化时,服务器崩溃
范围检查每个记录
访问方法。(Bug #32229, Bug #11747417)包含()
多多边形几何失败。(Bug #32032, Bug #11747370)如果优化器使用Multi-Range Read访问方法进行索引查找,则包含任何索引的行可能会出现错误的结果
团
或文本
数据类型。(Bug #30622, Bug #11747076)与MySQL 5.1相比,优化器无法对某些查询使用连接缓冲,导致这些查询的性能变慢。(Bug #30363, Bug #11747028)
用于解析的多范围读扫描
限制
查询时,关闭扫描失败导致的文件描述符泄漏MyISAM
表。(Bug #30221, Bug #11746994)显示创建数据库
没有占到价值吗lower_case_table_names
系统变量。(Bug #21317, Bug #11745926)