March 30, 2014

[MySQL5.6] MySQL 5.6.17新特性:online optimize table (以及其他主要bugfix)

在刚刚放出来的MySQL5.6.17版本中,最引人注意的功能当属于能够在线的进行opimitze table操作,这可以帮助减小表的大小而无需阻塞并发负载,另外以下几类操作也开始支持online ddl: OPTIMIZE TABLE ALTER TABLE … FORCE ALTER TABLE … ENGINE=INNODB (when run on an InnoDB table) 上述操作将触发表的rebuild,代码的改动量非常小 修改见 【Rev:5820】 这几个选项从sql_mode中移除了:ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and NO_ZERO_IN_DATE;而是在严格模式中默认开启(【Rev:5829】) ALTER  IGNORE TABLE 也被弃用(目前只是打印warning,未来版本可能移除掉),根据描述,该类操作可能导致对unique key的ddl操作及外键操作以及复制问题  (搞不定一些问题就把他干掉。。。。呵呵)(修改见【Rev:5745】) 其他一些比较有意思的bugfix 【Rev:5800】 开始支持分区表的flush table for export,但依然不支持分区表的ALTER TABLE DISACARD/IMPORT TABLESPACE (不知道会否进一步开发) 【Rev:5846】 修复一个压缩表性能退化的bug(bug#71436) 调整了zip_mutex的顺序(buf_page_get_gen),当读入一个压缩页,实际上在递增计数器buf_pool->n_pend_unzip后,就可以直接释放buf_pool->zip_mutex 【Rev:5753】 purge协调线程和innodb monitor线程在shutdown时可能产生race condition(bug#70430) 因为purge线程退出时,还有可能进入到函数lock_print_info_summary中 , 之前的ut_error被移除掉了 另外一个和shutdown相关的bug, shutdown可能hang住(【Rev:5752】),也和purge线程的状态相关; 【Rev:5758】 在打开innodb_stats_persistent时,CREATE TABLE时需要向mysql.innodb_index_stats表中插入多条记录,每次插入都会commit一次,现在改成只commit一次(buf#70063) 见函数dict_stats_save_index_stat/dict_stats_save […]