10bet网址
MySQL 5.6版本说明
相关的文档10bet官方网站 下载发行说明

MySQL 5.6版本说明MySQL 5.6.1的改动(未发布,里程碑5)

MySQL 5.6.1的变化(未发布,里程碑5)

请注意

这是一个里程碑版本,使用风险自负。不支持在里程碑版本之间(或从里程碑版本到GA版本)升级。重要的开发更改发生在里程碑版本中,您可能会遇到兼容性问题,例如除了通常的运行过程之外还需要注意的数据格式更改mysql_upgrade.例如,您可能会发现有必要转储数据, mysqldump升级前重新加载。(在任何情况下,在升级前进行备份都是一种谨慎的预防措施。)

性能架构说明

  • 性能模式增加了以下内容:

    • setup_consumers表内容已更改。在此之前,该表使用结构,使用使用者名称和目标表之间的一一对应关系。这已被消费者设置的层次结构所取代,该层次结构允许逐步对接收事件的目的地进行更精细的控制。前面的xxx_summary_xxx消费者不复存在。相反,Performance Schema会自动维护用户层次结构中启用设置的级别的适当摘要。例如,如果只启用顶级(全局)消费者,则只维护全局摘要。其他的,比如线程级别的摘要,则不是。看到消费者预过滤.此外,还添加了优化以减少性能模式开销。

    • 现在可以使用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性能模式

添加或更改的功能

  • 不兼容的更改:以下过时的结构已被删除。在显示替代方案的地方,应该更新应用程序以使用它们。

  • 重要的变化;复制:复制过滤选项,例如——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_threshold0禁用预读。在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版本中删除。在显示替代方案的地方,应该更新应用程序以使用它们。

  • 对添加基于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.除了关于用户定义排序规则的项外,这些与上的限制相同ucs2utf16,utf32

    • utf16le不能用作客户端字符集,这意味着它也不能用于组名称字符集

    • 不可能使用加载数据来加载数据文件utf16le

    • 全文不能在使用utf16le.但是,您可以执行布尔模式在没有索引的列上搜索。

    • 使用加密()utf16le不建议使用,因为底层系统调用需要以0字节结束的字符串。

    • 不能为其创建用户定义的UCA排序规则utf16le因为没有utf16le_unicode_ci排序,它将作为此类排序的基础。

  • MySQL 5.6中复制的变化mysqlbinlog生成的输出——base64-output =总选项不可用。总是现在是此选项的无效值。如果给出的选项没有值,效果现在与——base64-output =汽车而不是——base64-output =总

    参考:参见Bug #28760。

  • 为Unicode字符集添加了克罗地亚语排序规则:utf8_croatian_ciucs2_croatian_ciutf8mb4_croatian_ciutf16_croatian_ci,utf32_croatian_ci.你整理有裁剪克罗地亚字母:ČĆĐLj新泽西ŠŽ.它们基于Unicode 4.0。

  • 对优化器相关的系统变量做了一些更改:

  • 以前仅用于内部连接的块嵌套循环(BNL)连接算法已得到扩展,可用于外部连接操作,包括嵌套外部连接。有关更多信息,请参见块嵌套循环和批处理键访问连接

    结合这项工作,一个新的系统变量,optimizer_join_cache_level,控制如何进行连接缓冲。

  • 一个——bind-address选项已经添加到一些MySQL客户端程序:mysql, mysqldumpmysqladminmysqlbinlogmysqlcheckmysqlimport,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语句更新数据,而另一个连接试图执行用读锁刷新表同时。

    这些问题是由全局读锁实现导致的,重新实现后产生了以下后果:

    • 要解决此补丁暴露的事件处理代码中的死锁,请使用LOCK_event_metadata互斥锁被事件的元数据锁取代。因此,下面禁止对事件进行DDL操作锁表.这是一种不相容的变化。

    • 全局读锁(用读锁刷新表)不再阻塞临时表上的DML和DDL。在此补丁之前,服务器在这方面的行为并不一致:在某些情况下,临时表上的DML/DDL语句被阻塞;在其他国家,情况并非如此。因为主要用例为用读锁刷新表如果在备份期间不保留各种形式的备份和临时表,服务器现在一致地允许在全局读锁下的临时表上使用DML/DDL。

    • 线程状态集已经改变:

      • 等待全局元数据锁定等待全局读锁

      • 在此之前,等待释放readlock用于表示DML/DDL语句正在等待读取锁的释放和等待读取锁是用来表示的吗用读锁刷新表正在等待获取全局读锁。现在等待全局读锁用于这两种情况。

      • 在此之前,等待释放readlock用于所有导致显式或隐式提交的语句,以表明它们正在等待读取锁的释放和等待所有正在运行的提交完成是由用读锁刷新表.现在等待提交锁用于这两种情况。

      • 还有两个新州,等待触发元数据锁定而且等待事件元数据锁定

    (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到其中一个排序规则ucs2utf16字符集,此后不可能更改排序规则。(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)