本文介绍AliSQL的内核版本更新说明。

MySQL 8.0

20200110

  • 新特性

    Inventory Hint:新增了三个hint, 支持SELECT、UPDATE、INSERT、DELETE 语句,快速提交/回滚事务,提高业务吞吐能力。

  • 性能优化
    • 启动实例时,先初始化Concurrency Control队列结构,再初始化Concurrency Control规则。
    • 异步清除文件时继续取消小文件的链接。
    • 优化Thread Pool性能。
    • 默认情况下禁用恢复不一致性检查。
    • 更改设置变量所需的权限:
      • 设置以下变量所需的权限已更改为普通用户权限:
        • auto_increment_increment
        • auto_increment_offset
        • bulk_insert_buffer_size
        • binlog_rows_query_log_events
      • 设置以下变量所需的权限已更改为超级用户或系统变量管理用户权限:
        • binlog_format
        • binlog_row_image
        • binlog_direct
        • sql_log_off
        • sql_log_bin

20191225

  • 新特性
    • 恢复不一致性检查:您可以设置参数sync_binlog = 0innodb_flush_log_at_trx_commit = 2以获得更好性能。如果操作系统崩溃,Binlog和引擎之间可能会发生不一致,恢复不一致性检查会找出不一致并处理。
    • Recycle Bin:临时将删除的表转移到回收站,还可以设置保留的时间,方便您找回数据。
  • 性能优化
    • 提高短连接处理性能。
    • 使用专用线程为maintain user服务,避免HA失败。
    • 通过Redo刷新Binlog时出现错误会显式释放文件同步锁。
    • 删除不必要的TCP错误日志。
    • 默认情况下启用线程池。
  • Bug修复
    • 修复慢日志刷新的问题。
    • 修复锁定范围不正确的问题。
    • 修复TDE的Select函数导致的核心转储问题。

20191115

新特性

Statement Queue:针对语句的排队机制,将语句进行分桶排队,尽量把可能具有相同冲突的语句放在一个桶内排队,减少冲突的开销。

20191101

  • 新特性
    • TDE添加SM4加密算法。
    • 保护备实例信息:拥有SUPER或REPLICATION_SLAVE_ADMIN权限的用户才能插入/删除/修改表slave_master_info、slave_relay_log_info、slave_worker_info。
    • 提高自动递增键的优先级:如果表中没有主键或非空唯一键,具有自动增量的非空键将是第一候选项。
    • 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。
    • Redo Log刷新到磁盘之前先将Binlog文件刷新到磁盘。
    • 实例被锁定时也会影响临时表。
    • 添加新的基于LSM树的事务存储引擎X-Engine。
  • 性能优化
    • Thread Pool:互斥优化。
    • Performance Insight:性能点支持线程池。
    • 参数调整:
      • primary_fast_lookup:会话参数,默认值为true。
      • thread_pool_enabled:全局参数,默认值为true。

20191015

  • 新特性
    • TDE:支持透明数据加密TDE(Transparent Data Encryption)功能,可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。
    • Returning:Returning功能支持DML语句返回Resultset,同时提供了工具包(DBMS_TRANS)便于您快捷使用。
    • 强制将引擎从MyISAM/MEMORY转换为InnoDB:如果全局变量force_memory/mysiam_to_innodbON,则创建/修改表时会将表引擎从MyISAM/MEMORY转换为InnoDB。
    • 禁止非高权限账号切换主备实例。
    • 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮循方式,保留最近的秒级性能数据。
    • Innodb mutex timeout cofigurable:可配置全局变量innodb_fatal_semaphore_wait_threshold,默认值:600。
    • 忽略索引提示错误:可配置全局变量ignore_index_hint_error,默认值:false。
    • 可关闭SSL加密功能。
    • TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。
  • Bug修复
    • 支持本地AIO的Linux系统内,在触发线性预读之前会合并AIO请求。
    • 优化表/索引统计信息。
    • 如果指定了主键,则直接访问主索引。

20190915

Bug修复

修复Cmd_set_current_connection内存泄露问题。

20190816

  • 新特性
    • Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。
    • Statement Concurrency Control:通过控制并发数应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化,保证MySQL实例持续稳定运行。
    • Statement Outline:利用Optimizer Hint和Index Hint让MySQL稳定执行计划。
    • Sequence Engine:简化获取序列值的复杂度。
    • Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。
    • Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。
    • 优化实例锁状态:实例锁定状态下,可以drop或truncate表。
  • Bug修复
    • 修复文件大小计算错误的问题。
    • 修复偶尔出现的内存空闲后再次使用的问题。
    • 修复主机缓存大小为0时的崩溃问题。
    • 修复隐式主键与CTS语句的冲突问题。
    • 修复慢查询导致的slog出错问题。

20190601

  • 性能优化
    • 缩短日志表MDL范围,减少MDL阻塞的可能性。
    • 重构终止选项的代码。
  • Bug修复
    • 修复审计日志中没有记录预编译语句的问题。
    • 屏蔽无效表名的错误日志。

MySQL 5.7基础版/高可用版

20200110

性能优化

  • 异步清除文件时继续取消小文件的链接。
  • 优化Thread Pool性能。
  • thread_pool_enabled参数的默认值调整为OFF。

20191225

  • 新特性

    内部账户管理与防范:调整用户权限保护数据安全。

  • 性能优化
    • 提高短连接处理性能。
    • 使用专用线程为maintain user服务,避免HA失败。
    • 删除不必要的TCP错误日志。
    • 优化线程池。
  • Bug修复
    • 修复读写分离时mysqld进程崩溃问题。
    • 修复密钥环引起的核心转储问题。

20191115

Bug修复

修复主备切换后审计日志显示变量的问题。

20191101

  • 新特性
    • TDE添加SM4加密算法。
    • 如果指定了主键,则直接访问主索引。
    • 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。
  • 性能优化
  • Bug修复
    • 在处理维护用户列表时释放锁。
    • 补充更多TCP错误信息。

20191015

  • 新特性
    • 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。
    • 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮轮循方式,保留最近的秒级性能数据。
    • 强制将引擎从MEMORY转换为InnoDB:如果全局变量rds_force_memory_to_innodbON,则创建/修改表时会将表引擎从MEMORY转换为InnoDB。
    • TDE机制优化:添加keyring-rds插件与管控系统/密钥管理服务进行交互。
    • TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。
  • Bug修复

    修复DDL中的意外错误Error 1290。

20190925

参数修改

  • 将系统变量auto_generate_certs的默认值由true改为false。
  • 增加全局只读变量auto_detact_certs,默认值为false,有效值为[true | false]。 该系统变量在Server端使用OpenSSL编译时可用,用于控制Server端在启动时是否在数据目录下自动查找SSL加密证书和密钥文件,即控制是否开启Server端的证书和密钥的自动查找功能。

20190915

新特性

Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。

20190815

  • 新特性
    • Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。
    • Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。
    • 优化实例锁状态:实例锁定状态下,可以drop或truncate表。
  • Bug修复
    • 禁止在set rds_current_connection命令中设置rds_prepare_begin_id。
    • 允许更改已锁定用户的信息。
    • 禁止用关键字actual作为表名。
    • 修复慢日志导致时间字段溢出的问题。

20190510版本

新特性:允许在事务内创建临时表。

20190319版本

新特性:支持在handshake报文内代理设置threadID。

20190131版本

  • 升级到官方5.7.25版本。
  • 关闭内存管理功能jemalloc。
  • 修复内部变量net_lenth_size计算错误问题。

20181226版本

  • 新特性:支持动态修改binlog-row-event-max-size,加速无主键表的复制。
  • 修复Proxy实例内存申请异常的问题。

20181010版本

  • 支持隐式主键。
  • 加快无主键表的主备复制。
  • 支持Native AIO,提升I/O性能。

20180431版本

新特性:

  • 支持高可用版。
  • 支持SQL审计
  • 增强对处于快照备份状态的实例的保护。

MySQL 5.7三节点企业版

20191128

  • 新特性

    支持读写分离。

  • Bug修复
    • 修复部分场景下Follower Second_Behind_Master计算错误问题。
    • 修复表级并行复制事务重试时死锁问题。
    • 修复XA相关bug。

20191016

  • 新特性
    • 支持MySQL 5.7高可用版(本地SSD盘)升级到三节点企业版。
    • 兼容MySQL官方GTID功能,默认不开启。
    • 合并AliSQL MySQL 5.7基础版/高可用版 20190915版本及之前的自研功能。
  • Bug修复

    修复重置备实例导致binlog被关闭问题。

20190909

  • 新特性
    • 优化大事务在三节点强一致状态下的执行效率。
    • 支持从Leader/Follower进行Binlog转储。
    • 支持创建只读实例。
    • 系统表默认使用InnoDB引擎。
  • Bug修复
    • 修复Follower日志清理命令失效问题。
    • 修复参数slave_sql_verify_checksum=OFF和binlog_checksum=crc32时Slave线程异常退出问题。

20190709

新特性

  • 支持三节点功能。
  • 禁用semi-sync插件。
  • 支持表级并行复制、Writeset并行复制。
  • 支持pk_access主键查询加速。
  • 支持线程池。
  • 合并AliSQL MySQL 5.7基础版/高可用版 20190510版本及之前的自研功能。

MySQL 5.6

20200110

  • 新特性

    Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。

  • 性能优化

    异步清除文件时继续取消小文件的链接。

  • Bug修复

20191212

性能优化

删除不必要的tcp错误日志

20191115

Bug修复

修复慢日志时间戳溢出问题。

20191101

Bug修复

  • 修复刷新日志时切换慢日志的问题,仅在执行刷新慢日志时切换慢日志。
  • 修正部分显示错误。

20191015

  • 新特性
    • 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。
    • SM4加密算法:添加新的SM4加密算法,取代旧的SM加密算法。
    • Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。
    • TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。
    • 引入审计日志缓冲机制,提高审计日志的性能。。
  • Bug修复
    • 禁用pstack,避免存在大量连接时可能导致pstack无响应。
    • 修复隐式主键与create table as select语句之间的冲突。
    • 自动清除由二进制日志创建的临时文件。

20190815

优化实例锁状态:实例锁定状态下,可以drop或truncate表。

20190130版本

修复部分可能导致系统不稳定的bug。

20181010版本

添加参数rocksdb_ddl_commit_in_the_middle(MyRocks)。如果这个参数被打开,部分DDL在执行过程中将会执行commit操作。

201806** (5.6.16)版本

新特性:slow log精度提升为微秒。

20180426(5.6.16)版本

  • 新特性:引入隐藏索引,支持将索引设置为不可见,详情请参见参考文档
  • 修复备库apply线程的bug。
  • 修复备库apply分区表更新时性能下降问题。
  • 修复TokuDB下alter table comment重建整张表问题,详情请参见参考文档
  • 修复由show slave status/show status可能触发的死锁问题。

20171205(5.6.16)版本

  • 修复OPTIMIZE TABLE和ONLINE ALTER TABLE同时执行时会触发死锁的问题。
  • 修复SEQUENCE与隐含主键冲突的问题。
  • 修复SHOW CREATE SEQUENCE问题。
  • 修复TokuDB引擎的表统计信息错误。
  • 修复并行OPTIMIZE表引入的死锁问题。
  • 修复QUERY_LOG_EVENT中记录的字符集问题。
  • 修复信号处理引起的数据库无法停止问题,详情请参见参考文档
  • 修复RESET MASTER引入的问题。
  • 修复备库陷入等待的问题。
  • 修复SHOW CREATE TABLE可能触发的进程崩溃问题。

20170927(5.6.16)版本

修复TokuDB表查询时使用错误索引问题。

20170901(5.6.16)版本

  • 新特性:
    • 升级SSL加密版本到TLS 1.2,详情请参见参考文档
    • 支持Sequence。
  • 修复NOT IN查询在特定场景下返回结果集有误的问题。

20170530 (5.6.16)版本

新特性:支持高权限账号Kill其他账号下的连接。

20170221(5.6.16)版本

新特性:支持读写分离简介

MySQL 5.5

20181212

修复调用系统函数gettimeofday(2) 返回值不准确的问题。该系统函数返回值为时间,常用来计算等待超时,时间不准确时会导致一些操作永不超时。