10bet网址
MySQL 5.6版本说明
相关的文档10bet官方网站 下载这些发布说明
PDF (Ltr)- 2.3 mb
PDF (A4)- 2.3 mb
HTML下载(TGZ)- 462.4 kb
HTML下载(邮政编码)- 0.5 mb


MySQL 5.6版本说明/ MySQL 5.6.9的变化(2012-12-11,发布候选)

MySQL 5.6.9的变化(2012-12-11,发布候选)

弃用和移除说明

  • 微软的Windows操作系统:Windows Vista、Windows Server 2008和更新版本支持使用mklink命令。这使得MySQL服务器实现的数据库符号链接使用.sym因此,该机制现在已被弃用,并将在未来的MySQL版本中删除。看到在Windows上为数据库使用符号链接

安装说明

  • ——随机密码选择mysql_install_db现在支持MySQL安装操作(不是升级)使用Solaris PKG包。

添加或更改的功能

  • 不兼容的更改;复制:许多与基于gtid的复制有关的变量和其他名称已经更改,以便使这些名称更合适和更有意义。旧的名称不再受支持

    重命名后的功能如下表所示:

    有关更多信息,请参见使用全局事务标识符进行复制,全局事务ID选项和变量.(错误# 14775984)

  • 对于由于客户端帐户密码过期而被服务器限制的客户端连接,服务器现在允许设置密码只有当语句中命名的帐户与客户端使用的帐户相匹配时。(错误# 14807074)

    参考资料:请参见:Bug #14698309。

  • 服务器现在提供线程信息(对于显示PROCESSLIST),以指示到位工作的进度ALTER TABLE操作:

    • 准备alter table

      服务器准备就地执行ALTER TABLE

    • 改变表

      服务器正在执行一个就地执行ALTER TABLE

    • 将更改表提交给存储引擎

      服务器已经完成了一个就地处理ALTER TABLE并提交结果。

    (错误# 14790408)

  • InnoDB自动扩展每个辅助索引,将主键列附加到它。以前,优化器在确定如何以及是否使用扩展辅助索引时,没有考虑该索引的主键列。现在,优化器会考虑主键列,这可以产生更高效的查询执行计划和更好的性能。

    优化器可以使用扩展的辅助键裁判范围,index_merge索引访问,用于松散索引扫描,连接和排序优化,以及MIN ()/MAX ()优化。

    use_index_extensions国旗的optimizer_switch系统变量允许控制优化器在确定如何使用时是否考虑主键列InnoDB表的二级索引。默认情况下,use_index_extensions启用。要检查禁用索引扩展是否会提高性能,请使用以下语句:

    SET optimizer_switch = 'use_index_extensions=off';

    有关更多信息,请参见索引扩展的使用.(Bug #62025, Bug #12814559, Bug #56714, Bug #11763940)

  • mysqld现在将日期写入到ISO中的错误日志(YYYY-MM-DD hh: mm: ss)的格式。它还包括日期后面的进程ID。感谢Davi Arnaut提供的补丁。(Bug #56240, Bug #11763523)

错误修复

  • 不兼容的更改:THREAD_ID性能模式表中的列从INT长整型数字以容纳64位值。

    请注意

    这种变化的结果是PROCESSLIST_ID列的线程现在表后台线程。以前,后台线程的值是0。

    如果您从较早的版本升级到这个MySQL版本,您必须运行mysql_upgrade(并重新启动服务器),以将此更改合并到performance_schema数据库。(错误# 14664453)

  • 不兼容的更改:LAST_INSERT_ID (expr没有为expr大于最大的带符号的值长整型数字价值。这样的参数现在已被接受,并对与以前版本的兼容性产生了一些影响:

    • LAST_INSERT_ID ()现在返回一个长整型数字无符号值,而不是一个长整型数字(签署)值。

    • LAST_INSERT_ID (expr现在返回一个无符号整数值,而不是有符号整数值。

    • AUTO_INCREMENT列,负值不再支持。

    (Bug #20964, Bug #11745891)

  • 不兼容的更改:在某些系统(例如繁忙或长时间运行的64位系统)上,可能会出现大于32位的连接ID(线程ID)值,从而导致以下问题:

    • 写入一般查询日志和慢速查询日志的连接id不正确。对于记录到文件和表也是如此。

    • CONNECTION_ID ()函数可能返回一个数据类型过小的值,其值大于32位的值。

    • mysql_thread_id ()而且mysql_kill ()C API函数不处理大于32位的ID值。这可能导致终止错误的线程;例如,如果您调用mysql_kill (mysql_thread_id ())

    现在,当服务器支持连接id时(使用64位数据类型构建时),连接id允许为64位值,其影响如下:

    • 连接id被正确记录到一般查询日志和慢速查询日志。

      请注意

      这个更改涉及到对日志表的修改,因此在升级到这个版本之后,必须运行mysql_upgrade并重新启动服务器。

    • CONNECTION_ID ()返回适合于大于32位值的数据类型。

    • mysql_thread_id ()是不变的;客户端/服务器协议只有4个字节的ID值。对于大于32位的连接id,这个函数返回一个不正确的(截断的)值,应该避免。

      mysql_kill ()仍然不能处理大于32位的值,但是为了防止杀死错误的线程,现在在这些情况下返回错误:

      为了避免出现mysql_thread_id ()而且mysql_kill (),不要使用它们。要获得连接ID,执行a选择CONNECTION_ID ()查询并检索结果。要杀死一个线程,执行一个杀了声明。

    (Bug #19806, Bug #11745768, Bug #65715, Bug #14236124, Bug #44728, Bug #11753308)

  • 重要的变化;InnoDB:一个DML语句使用索引合并访问方法可以锁定表中的许多行,即使这些行不是最终结果集的一部分。这个修正减少了过度锁定通过释放不匹配行的锁。此优化只影响隔离级别等于或小于的事务读过承诺;它不适用于使用的事务可重复读取可序列化的隔离级别。(错误# 14226171)

  • 重要的变化;复制:不应该将涉及Performance Schema表的语句写入二进制日志,因为这些表的内容只适用于给定的MySQL Server实例,并且在复制拓扑中不同的服务器之间可能有很大的差异。数据库管理员应该能够配置(插入更新,或删除)或齐平(截断表)性能模式表,而不会影响其他服务器。但是,当使用启用了gtid的复制时(请参见使用全局事务标识符进行复制),有关不安全语句更新Performance Schema表的警告被提升为错误,从而阻止使用performance_schema和GTIDs在一起。

    当启用gtid时,复制和系统日志记录表也会遇到类似的问题。

    这个修复引入了a的概念未复制当地表.现在,当MySQL复制遇到一个标记为本地的表时,对该表的更新将被忽略。

    此修复将以下表定义为本地表,它们不再被复制:

    • 控件中的所有表performance_schema数据库

    • mysql.general_log

    • mysql.slow_log

    • mysql.slave_relay_log_info

    • mysql.slave_master_info

    • mysql.slave_worker_info

    在此修复之前,使用performance_schema而刚刚列出的其他表则被标记为不适合复制的,这在执行期间造成了警告;尽管如此,这些语句还是被写入二进制日志,而不管日志格式是什么。

    中表的现有复制行为INFORMATION_SCHEMA此修复不更改数据库。

    有关更多信息,请参见MySQL性能模式.另请参阅MySQL服务器日志,复制元数据存储库.有关常规和慢速查询日志表的信息,请参见选择一般查询日志和慢速查询日志输出目的地.(错误# 14741537)

  • 重要的变化;复制:因为在启用gtid的情况下运行服务器可以防止对非事务性表的更改,例如mysql_upgrade而且mysql_install_db无法操作使用MyISAM存储引擎的系统表,因此无法正常工作。现在,当跑步的时候——enforce-gtid-consistency(需要时——gtid-mode =)时,服务器允许在非事务性表上使用单语句。(错误# 14722659)

  • 重要的变化;复制:从前,价值在Seconds_Behind_Master的输出中的列显示奴隶状态总是设置为每当SQL线程或I/O线程停止时。现在,这一列被设为只有在SQL线程没有运行,或者I/O线程没有运行的情况下才会执行检查,以确定SQL线程是否已经处理了所有的中继日志。(如果SQL线程已经完成处理和I/O线程正在运行,Seconds_Behind_Master(Bug #12946333)

  • 性能;InnoDB:底层的计时值InnoDB在快速存储设备上,读操作被调整以获得更好的性能,例如固态硬盘.此增强主要影响的读取操作压缩表。(Bug #13702112, Bug #64258)

  • InnoDB;分区:以前,在尝试优化使用不支持分区级的存储引擎的分区表的一个或多个分区时优化,如InnoDBMySQL报道,表不支持优化,做重建+分析代替,然后重新创建整个表,但没有实际分析它。在这种情况下,警告信息是,表不支持分区优化。将重建和分析所有分区。此外,在第一次重建后,将对整个表进行分析。(Bug #11751825, Bug #42822)

  • InnoDB:当两种操作同时发生时,服务器可能会停止并报错:

    • 一个回滚包含页外列的插入行。

    • 的表的在线DDL操作ROW_FORMAT =动态ROW_FORMAT =压缩(即使用Barracuda文件格式)重建表。例如,添加/删除列添加主键,改变ROW_FORMAT

    (错误# 14842014)

  • InnoDB:如果在使用。将行插入表时服务器崩溃全文但是在事务提交之前,在下一次启动时可能会发生错误:

    InnoDB:线程中断言失败thread_num在文件dict0dict。cc 1019行

    (错误# 14826779)

  • InnoDB:当访问一个错误时,服务器可能会停止InnoDB表包含一个全文索引通过处理程序声明。(错误# 14788710)

  • InnoDB:在Windows系统上执行时可能发生超时错误ALTER TABLE语句的丢弃表空间导入表空间子句,因为文件系统中存在一个临时表空间文件。(错误# 14776799)

  • InnoDB:InnoDB表与全文索引可能会为从未被释放的线程句柄分配内存,可能会导致Windows系统上的资源问题。(错误# 14759163)

  • InnoDB:服务器可能因断言错误而停止分析表操作,根据表及其索引的结构:

    InnoDB:线程中断言失败thread_num在文件dict0dict。ic line 447 InnoDB:失败的断言:pos < table->n_def

    (错误# 14755452)

  • InnoDB:在一次在线DDL复制表的操作二级索引表的部分可能会损坏。(错误# 14753701)

  • InnoDB:的在线DDL操作InnoDB表错误地报告了一个空值()而不是正确的键值,当它报告使用索引前缀的唯一索引的重复键错误时。(错误# 14729221)

  • InnoDB:如果服务器在在线DDL之后崩溃创建索引操作时,在下次启动回滚未完成的事务时可能发生错误:

    InnoDB: error in sec index entry del undo in…InnoDB:线程中断言失败thread_num在文件row0umod。cc 559行

    (错误# 14707452)

  • InnoDB:此修复改进了当ALTER TABLE控件所允许的最大数目之外的列InnoDB表格还会引发的最大列数InnoDB表1000 ~ 1020。(错误# 14705287)

  • InnoDB:这个修复使MySQL对杀死查询语句InnoDB表格(错误# 14704286)

  • InnoDB:如果服务器在某个精确时刻崩溃ALTER TABLE重建聚集索引对于一个InnoDB表,原始表之后可能无法访问。这种操作的一个例子是ALTER TABLE……添加主键如果服务器在此操作期间停止,修复程序将保留原始表。您可能仍然需要重命名.ibd在MySQL 5.6及更高版本中,重命名为# sql-ib美元new_table_id.ibdtable_name.ibd在数据库目录内;在MySQL 5.6之前,要重命名的临时文件是table_name# 1#2.(错误# 14669848)

  • InnoDB:在一次在线DDL重建表的操作检查表语句可能报告所有二级索引的计数不匹配。(错误# 14606472)

  • InnoDB:全文创建并删除索引InnoDB表,进一步ALTER TABLE添加、删除和重命名列的操作可能会导致严重错误。bug #13972248的回归。(错误# 14504337)

  • InnoDB:如果一个ALTER TABLE语句失败,试图创建全文指数为InnoDB表中,当删除不完整的索引时,服务器可能会因断言错误而停止。(错误# 14504174)

  • InnoDB:在关闭期间,与innodb_purge_threads配置选项设置大于1,服务器可能会提前停止并出现以下错误:

    Mysqld得到信号11

    一种变通方法是增加innodb_log_file_size并设置innodb_purge_threads = 1.该修复被反向移植到MySQL 5.5和5.1,尽管这些版本没有innodb_purge_threads配置选项,因此不太可能发生错误。(错误# 14234028)

  • InnoDB:在一些并发操作的组合下,服务器可能会因错误而停止:

    InnoDB:未知错误码20

    该问题起源于5.6开发周期。它只影响使用读过承诺而且读未提交隔离级别。(Bug #13641662, Bug #12424846)

  • InnoDB:此修复改进了当外键约束无法创建。这条消息没有提到无法使用自动生成的名称创建表,而是清楚地指出了错误:

    错误1215 (HY000):无法添加外键约束

    发布后续显示警告语句提供了关于所需的任何二级索引的附加详细信息。(Bug #11745444, Bug #15324)

  • 复制:如果要复制的表具有全文索引,在选择用于查找下一行的扫描类型时,不排除该索引,尽管它不能用于查找正确的行。行应用程序随后尝试使用索引扫描失败,导致复制失败。现在,在这种情况下,不提供顺序访问的索引(例如全文)在确定是否为此目的使用表、索引或散列扫描时不会考虑。(错误# 14843764)

  • 复制:给定一个存储例程R在这一GTID_SUBTRACT ()函数被调用:一次GTID_SUBTRACT ()返回当叫内R,它继续返回每次有人叫它进去R,用于客户端会话的剩余时间。(错误# 14838575)

  • 复制:当使用感知gtid的主从协议时,从I/O线程使用了错误的位置。当使用GTID时,这个位置通常不被使用,但是作为一个特殊的情况,当从机重新连接到同一个主机时,这个位置被用于GTID之外(即使这不是必要的)。这个问题可以通过使支持gtid的主从协议不再使用位置来解决。(错误# 14828028)

  • 复制:MySQL企业备份, mysqldump,mysqlhotcopy不能用于启用GTID的MySQL服务器,因为他们无法恢复服务器的GTID状态,所以不能从二进制日志的任何点恢复,除了最开始的时候。

    作为解决这个问题的一部分,gtid_purged系统变量(以前命名为gtid_lost)不再是只读的;现在可以添加gtid了gtid_executed(原gtid_done)是空的。(错误# 14787808)

  • 复制:清除第一个二进制日志文件后重新启动复制会导致此错误从主服务器读取二进制日志数据时出现致命错误1236:“从服务器使用CHANGE master TO MASTER_AUTO_POSITION = 1连接,但主服务器清除了包含从服务器需要的gtid的二进制日志。”这导致基于gtid的复制失败。(错误# 14756691)

  • Solaris:运行使用Solaris包的安装mysql_install_db在升级操作期间(这应该只发生在新安装中)。(Bug #14747671, Bug #16534721)

  • mysql_install_db未能遵守——用户选择。(错误# 15866735)

  • 优化器在确定子查询执行策略时可能分配不足的内存,从而导致服务器退出。(错误# 14846866)

  • 在对范围测试进行评估时,优化器可能会引发断言不是零条件。(错误# 14843705)

  • init_io_cache ()使用memset ()清除互斥量,但传递了错误的互斥量大小。(错误# 14838882)

  • 创建一个InnoDB表一个全文如果表名包含非字母数字字符,索引可能会遇到严重的错误。(Bug #14835178, Bug #16036699)

  • 内部可能发生越界读取filename_to_tablename ().(错误# 14834378)

  • 当使用, mysqldump在启用了全局事务id (GTID)的服务器上,转储文件不包含任何GTID信息。这最终导致在使用备份启动从机时复制历史开始的事务。

    要启用对写入转储文件的GTID信息的控制,, mysqldump现在有一个——set-gtid-purged选项,指示是否添加@@GLOBAL。gtid_purged语句输出。

    下表显示了允许的选项值。缺省值为汽车

    价值 意义
    添加不语句输出。
    添加一个语句输出。如果服务器没有启用gtid,会报错。
    汽车 添加一个如果服务器上启用了gtid,则输出gtid。

    (错误# 14832472)

  • 锁表实际上,创建表,如果不存在…就像可以提出一个断言。(错误# 14788976)

  • 在执行过程中可能引发断言插入更新,或删除在隐式启动只读交易锁表模式。(错误# 14788540)

  • 带有联合和连接的查询可能会使解析器崩溃。(Bug #14786792, Bug #16076289)

  • 试图读取utf16文件,加载数据提出了一个断言。(错误# 14786470)

  • 控件中指定的列,派生表处理的自动键生成部分未能正确处理值()子句,并引发断言。(错误# 14786324)

  • 对于从零长度的表名中选择的查询,可能会发生无效的内存读取。(错误# 14780820)

  • 显示PROCESSLIST产出没有分类Id秩序。(错误# 14771006)

  • 对于一些选择语句,解释可能导致服务器退出。(错误# 14761894)

  • 尝试创建自动递增列在一个InnoDB表一个类型属性可能导致严重错误。(错误# 14758479)

  • 尝试使用时发生了内存泄漏ALTER TABLE为小、中或长设置默认值文本列。(错误# 14756206)

  • 提出了一个主张ALTER TABLE是否用于将列重命名为与现有列相同的名称,同时使用第一个.(错误# 14756089)

  • 如果使用半连接具体化来计算a,则可能会提出断言不是在子查询。(错误# 14751858)

  • 发行后ALTER TABLE……丢弃表空间,对于同一个表的在线DDL操作可能会在Windows系统上失败并报错:从存储引擎得到错误11.一个ALTER TABLE声明的算法=原地子句也可以创建空.ibd文件,使表空间不再被丢弃的.(错误# 14735917)

  • 对于某些延续处理程序嵌套,延续可能发生在错误的位置。(错误# 14724836)

  • 以以下方式启动服务器bind_address然后设置host_cache_size对于某些类型的客户端连接,设置为0可能导致服务器停止。(错误# 14689561)

  • 更新语句,解释中显示的总密钥长度key_len而不是使用长度列的关键部件。(错误# 14682438)

  • 在启用索引条件下推的情况下,优化器可能会为派生表产生不正确的结果。(错误# 14640176)

  • 显示配置文件可能会导致过多的服务器内存消耗。(错误# 14629232)

  • 优化器可能错误地使用非空间索引来优化空间操作,从而导致引发断言。(错误# 14600994)

  • 的几个问题mysql_config_editor是固定的:

    • 没有关于向配置文件写入错误的错误消息。

    • ——所有选项不支持删除命令,但没有对尝试使用的警告消息删除——所有

    • ——所有选项不支持命令,但没有对尝试使用的警告消息设置——所有

    此外,——用户——密码,——主机选项现在支持删除命令。当存在时,删除命令只从登录路径中删除请求的值。如果没有给出,删除删除整个客户端登录路径。例如,该命令只删除用户价值的客户端登录路径而不是整个客户端登录路径:

    删除Mysql_config_editor——login-path=client——user

    (Bug #14505672, Bug #14545989, Bug #14545999)

  • 一个就像花样太多“%”通配符可能导致分割故障。(错误# 14303860)

  • 在此之前,events_statements_summary_by_digest性能架构表是一个汇总,按消化单独列。这个表格包含SCHEMA_NAME的分组和摘要摘要SCHEMA_NAME而且消化列。

    如果您从较早的版本升级到这个MySQL版本,您必须运行mysql_upgrade(并重新启动服务器),以将此更改合并到performance_schema数据库。(错误# 14075527)

  • 即使没有启用相关的日志,也已完成查询重写以清除日志记录的密码。同时,创建服务器而且改变服务器现在根据需要重写。(错误# 14073554)

  • 创建表……选择可以创建一个列类型的表吗,当访问时导致服务器退出。(Bug #14021323, Bug #23280699)

  • 检查表而且修理表可能会崩溃MyISAM表有一个损坏的键(.MYI)文件。现在服务器产生一个错误。(错误# 13556441)

  • 检查表而且修理表可能会崩溃MyISAM表有一个损坏的键(.MYI)文件。现在服务器产生一个错误。(Bug #13556107, Bug #13556000)

  • 一个缓冲区太小的错误消息。myisamchk命令指的是myisam_sort_buffer_size配置选项,当它应该被引用时sort_buffer_size

    myisamchk现在有一个myisam_sort_buffer_size的可选名称sort_buffer_sizemyisam_sort_buffer_sizesort_buffer_size因为它的名称对应于myisam_sort_buffer_size具有类似含义的服务器系统变量。sort_buffer_size应该被认为已弃用。(Bug #11754894, Bug #46578)

  • host_cache性能架构表多次显示某些行。这不是主机缓存本身的问题,而是提供缓存内容信息的表的问题。(Bug #67236, Bug #14764890)

  • 在OS X上,重新初始化查询缓存可能会导致服务器退出。感谢Davi Arnaut提供的补丁。(Bug #67156, Bug #14741880)

  • 对于数据库或表名包含特殊字符且表存储引擎为特殊字符的查询,服务器无法使用查询缓存InnoDB.(Bug #64821, Bug #13919851)

  • mysqld_safe的值被忽略UMASK环境变量,导致行为不同mysqld关于已创建文件的访问模式。现在mysqld_safe(和mysqld_multi)试图近似相同的行为mysqld.(Bug #57406, Bug #11764559)

  • 对于垃圾堆mysql数据库,, mysqldump跳过了事件表,除非——事件选项。这种情况不再发生。跳过事件表,如果需要,则使用——ignore-table(Bug #55587, Bug #11762933)

  • 内存表与哈希索引,删除有时无法删除所有适用的行。(Bug #51763, Bug #11759445)

  • 在OS X,杀了有时是不可靠的。(Bug #37780, Bug #11748945)