有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文为您介绍 TDSQL-C MySQL 版内核版本更新动态。
说明:
如需升级,请参见 升级内核小版本,如需了解各个内核版本的发布时间,请参见 内核版本发布时间
TDSQL-C MySQL 版 8.0 内核更新说明
TDSQL-C MySQL 版 5.7 内核更新说明
小版本
说明
3.1.13
性能优化
优化了全表扫描循环效率低导致的访问数据较慢的问题。
优化了并发场景下大查询扫描性能下降的问题。
问题修复
修复了开启数据库审计功能后 CPU 占用的问题。
修复了全文索引 doc id 重复的问题。
修复了全文索引在部分场景下会导致只读实例死锁的问题。
修复了分区表 DDL 会导致只读实例 crash 的问题。
修复了部分官方 Bug,具体如下:
修复 json prepare 相关 Bug:Bug #101284。
修复 sort buffer size 相关 Bug:Bug #32738705、Bug #33501541。
修复临时表 index scan 相关 Bug:Bug #33700735。
修复子查询相关 Bug:Bug #31216115、Bug #31946448、Bug #31216115、Bug #31216115、Bug #32813547、Bug #32813554。
修复部分段错误:Bug #32813554、Bug #32813547。
3.1.12
功能更新
支持在慢日志中查看存储层网络 IO 流量、所用时间和次数以及事务提交的时延。
数据库审计支持添加事务 ID 字段与表名。
支持黑洞引擎(ENGINE = BLACKHOLE;)。
支持 DDL 执行所用的默认算法(inplace/instant), 可以通过 innodb_alter_table_default_algorithm 参数来指定。
性能优化
大事务提交 binlog 优化:支持大事务的日志先写入临时文件,然后将临时文件重命名为下一个 binlog,以减少大事务提交阻塞其他事务的时间。
binlog 写入优化:支持 row 模式的 binlog 转化为 statement 格式的 binlog,并支持使用正则表达式设置生效的库表。
优化了 purge binlog 的性能,减少了性能抖动。
移除了 CDC、LSN、CLUSTER 作为保留关键字。
优化了并行 DDL 功能:
修复扫描线程大于1,但是 innodb_parallel_ddl_threads = 1时,创建的索引数据错误的问题。
修复 m_page 在创建子树后变得非法而导致 crash 的问题。
修复在创建索引前错误码未重置的问题。
修复在开启 innodb_disable_sort_file_cache 开关时,parallel ddl 创建索引 crash 的问题。
修复在有重复数据的列上添加 unique key 时会 crash 的问题。
问题修复
修复了数据库审计将 prepare 语句归属类型记录错误的问题
修复了数据库审计将 execute 语句中的 sql_type 统一为“other”类型的问题。
修复了在 session track 中获取用户自定义变量字符串错误的问题:支持在获取自定义变量时,通过指定的字符串长度构造 session track 的返回值。
修复了并行查询中相关子查询引用 worker 表字段导致查询结果错误的问题。
3.1.10
功能更新
只读实例支持订阅 binlog。
并行查询功能更新:支持全表扫描/全索引扫描/索引范围扫描并行查询,支持方差和标准差函数,支持在 LIMIT 语法下设置并行策略,支持 Prepared Statement(PS)查询模式。
支持 动态线程池
支持 NOWAIT 语法
支持 闪回查询
支持 invisible index
问题修复
禁止有列名称为 fts_doc_id 的表执行 instant ddl。
优化了 resize buffer pool 功能。
优化并行查询中算子拆分 item 的拆分逻辑。
修复 PS 模式 IN 二分查找失效导致的性能衰退。
优化了并行查询中对于整表 count(*) 的查询效率。
修复 Parallel DDL 中 stage 变量错误,导致创建 FTS 索引场景出现 stage 空指针 crash 的问题。
修复新增全文索引过程中可能引发 crash 的问题。
修复了部分情况下 HA 导致 gtid 丢失的问题。
修复 ddl 时 kill mysqld 进程,重新拉起后 show create table 概率性触发 crash 的问题。
修复全文索引过早释放 fts cache lock 导致读写不一致的问题。
修复了 ddl 提交过程中事务回滚导致主从数据不一致的问题。
修复了在创建临时表并插入数据的过程中,kill 事务并删库时出现死锁的问题。
修复了用户操作与 mysql 系统库的同名库时失败的问题。
修复 canal 通过 RO 抽取 binlog 无法用 show master status 获取 gtid 起点的问题。
3.1.9
功能更新
新增 cdc 能力,可直接重复回溯/抽取用户自定义日志保留时间段的 binlog,解决了计算节点在 HA 等场景下丢失本地 binlog 的问题。设置 binlog 保留时间请参见 设置备份保留时间
优化 pages purge 速率,提高数据库性能。
问题修复
并行查询修复 worker 无法向 coordinator 传递表级别的 NULL ROW FLAG 标志导致结果错误的问题。
并行查询修复 sort order 被下推到 table 导致算子拆分过程中 sort 算子获取不到 order list 而产生 core 的问题。
3.1.8
功能更新
增加并行查询特性,自动识别复杂查询,利用并行查询能力,调动多核计算资源,大幅缩短大查询响应时间,使用请参见 开启或关闭并行查询 功能介绍。
问题修复
修复若干在 debug mode 下出现的数据库问题。
修复使用 show detailed processlist 显示连接信息的时候,数据库代理相关字段出现异常信息的问题。
3.1.7
功能更新
新增密码字典参数,使用请参见 自定义密码强度 功能介绍,优化了 HA 对字典文件依赖的问题。
内核支持补全 purged 的 binlog。
Serverless 架构支持内置数据库代理,实现连接保持、防闪断功能,解决首次唤醒连接报错的问题。
3.1.6
问题修复
修复 check index 中遇到全文索引(非树索引)导致 crash 的问题。
修复数据库代理探活导致内核输出大量 errlog 的问题,屏蔽冗余的日志打印。
修复 session lsn tracker 中 gcr lsn 未初始化可能返回数据库代理随机值导致语句执行超时的问题。
3.1.5
功能更新
支持 bulk insert 的限流。
支持 change buffer 以及 merge 方式设置。
支持数据库代理,使用请参见 数据库代理 功能介绍。
支持只读实例执行逻辑备份。
支持 binlog 在 table 级别的并行复制。
支持 SQL 限流功能。
支持 sort merge join 下 interesting order 判断。
支持 TABLESAMPLE 功能。
支持 HISTOGRAM() 函数。
支持直方图历史版本功能、compressed 直方图。 
支持 show detail processlist。
性能优化
优化事务的物理复制,大幅提升只写性能。
优化事务系统的并行初始化,缩短系统的启动时间。
优化只读实例回放日志时对页面加锁的逻辑,加速回放线程的速度。
问题修复
修复 mysql client 出现接受不完整包异常退出的问题。
修复 blob 产生嵌套 mtr 提交顺序错误,导致 fsp 管理段 crash 的问题。
修复主机的 purge 可能导致 RO 访问二级索引时出现的事务一致性问题。
修复 backup lock 受 lock table 影响无法加锁的问题。
修复 cynosdb 引入的几个关键字不能作为标识符的问题,如 CDB_GET_TABLE_VERSION、CLUSTER、THREADPOOL。
修复实例启动时大事务或者长行事务回滚,使得主线程无法加上 dict op lock,导致启动时间长的问题。
修复 undo 页分配失败后续复用 trx 引起 crash 的问题。
修复对分区表执行 alter table 从扩展表空间往系统表空间迁移引起 crash 的问题。
修复 truncate log 未完整写入后启动 crash 的问题。
修复 drop table partition force 后插入数据导致 crash 的问题。
修复 instant DDL 更新数据然后 rollback 可能导致 crash 的问题。
修复 create temporary table like 扩展表空间的表创建失败的问题。
修复全文索引表灌数时 cache 持续上涨导致 OOM 的问题。
修复热点更新优化开启后性能不稳定的问题。
修复 `select count(*)` 并行扫描在极端情况下会全表扫描的问题。
修复多种情况下统计信息读零的问题,以及修复官方 Bug#31889883。
修复 query 长时间处于 query end 状态的问题。
修复 json_table 函数列名称大小写敏感的问题,官方 Bug#32591074。
修复使用 Temptable 引擎时,选择列中的聚合函数超过255个时报错的问题。
修复窗口函数因为表达式在 return true 时提前返回导致正确性问题的 bug。
修复 derived condition pushdown 在含有 user variables 的时候依然下压导致的正确性问题。
修复 SQL filter 在 Rule 规则没加 namespace 下容易导致 crash 的问题。
修复高并发高冲突情况下开启线程池的 QPS 抖动的问题。
修复移植执行 update 语句或存储过程未清理信息导致的 crash 问题。
修复现有版本中无法通过 CTRL+C 停止 histogram 的问题。
3.1.3
功能更新
支持将指定 filename 的 binlog 加入到 index 文件中。
新增 backup 锁,语法 LOCK TABLES FOR BACKUP,UNLOCK TABLES。
新增 binlog 锁,语法 LOCK BINLOG FOR BACKUP,UNLOCK BINLOG。
问题修复
修复动态元信息持久化导致实例表损坏或可见性错误的 bug。
合入官方 bugfix Bug #32897503,解决 prepare 语句下,部分查询语句执行路径错误的问题。
合入官方 bugfix:set resource group 失败会 crash 的问题。
修复 HA 切换后 previous gtid 为空的 bug。
修复自增列可设置为小于已插入最大值的 bug。
修复只读实例上的显式事务会阻塞回放线程回放 DDL 日志。
修复表名中存在"-"的表 DDL 后在只读实例上复制可能会 crash 的问题。
修复只读实例启动遇到 DDL recover 导致操作 DDL log 系统表申请 undo 时 crash 的问题。
3.1.2
功能更新
支持 MySQL 8.0,增加只读节点,主备物理复制。
支持扩展表空间,实例容量最大支持1PB+容量。
支持预加载行数限制功能 ,在点查询相关测试中,得到了1~5%的性能提升。
支持扩展 ANALYZE 语法(UPDATE HISTOGRAM c USING DATA 'json'),支持直接写入直方图功能。
性能优化
使用直方图替代索引下探,降低评估误差以及 I/O 开销,该能力默认未打开。
问题修复
修复创建包含大对象列的全文索引时,大对象页相关更新没有写日志的问题。
修复计算和存储层 undo page 格式不一致的问题,TRX_UNDO_HISTORY_NODE 定义不一样。
修复 online-DDL 期间统计信息可能为零的情况。
修复从机 generated column 不更新的情况。
修复 binlog 压缩时实例 hang 住的问题。
修复新产生的 binlog 文件的 previous_gtids event 中的 gtid 缺失问题。
修复修改系统变量时可能死锁的问题。
修复 show processlist 中从机 sql 线程的 info 显示不正确的问题。
移植官方8.0.23中 hash join 相关的 bugfix。
移植官方 writeset 相关 bugfix。
移植官方8.0.24中查询优化器相关的 bugfix。
修复 FAST DDL 中优化 flush list 释放页面并发 bug。
优化海量个数表的实例升级数据字典时占用大量内存。
修复 instant add column 后在创建新主键场景下的 crash 问题。
修复全文索引查询中内存增长导致 OOM 问题。
修复 show processlist 返回结果集中 TIME 字段出现-1的问题。
修复直方图兼容性可能导致表无法打开的问题。
修复构建 Singleton 直方图的浮点累加误差。
修复 row 格式日志时表名为较长的中文字符导致复制中断问题。
3.1.1
功能更新
合并官方 8.0.19、8.0.20、8.0.21、8.0.22 变更。
支持动态设置 thread_handling 线程模式或连接池模式。
支持主从 bp 同步功能:当发生 HA 并进行主备切换后,备库通常需要一段比较长的时间来 warmup,把热点数据加载到buffer pool。为加速备机的预热,TXSQL 支持了主从 bp 同步功能。
支持 Sort Merge Join 功能。
支持异步提交,当打开线程池和关闭 binlog 时设置参数 innodb_log_sync_method =async 即可以开启异步提交。
支持 FAST DDL 功能。
支持用户侧查询 character_set_client_handshake 参数显示当前值功能。
支持数据库审计。
性能优化
优化扫描 flush list 刷脏:通过优化刷脏机制,解决了创建索引过程中的性能抖动问题,提升了系统稳定性。
优化 BINLOG LOCK_done 锁冲突,提升写入性能。
使用 Lock Free Hash 优化 trx_sys mutex 冲突,提升性能。
redo log 刷盘优化。
buffer pool 初始化时间优化。
大表 drop table 清理 AHI 优化。
问题修复
修复修改 offline_mode、cdb_working_mode 参数的死锁问题。
修复 trx_sys的max_trx_id 持久化并发问题。
修复清理 innodb 临时表时造成的性能抖动问题。
修复核数较多的实例 read only 性能下降的问题。
修复 hash scan 导致1032问题。
修复热点更新功能的并发安全问题。
3.0.1
功能更新
支持 cynos_version,通过三种方式查询 select CYNOS_VERSION()、select @@cynos_version、show variables like 'cynos_version'。
增加空间限制参数,总空间超过限制时扩展的更新会报错,警告提示用户释放空间或者升级规格。
增加只读参数 innodb_ncdb_log_priority,表示主实例后台日志线程优先级。
增加只读参数 innodb_ncdb_apply_priority,表示只读实例日志回放线程优先级。
增加动态参数 innodb_ncdb_fast_shutdown,控制进程是否快速 shutdown,开启之后进程退出将不再做一些全局结构的析构操作,缩短 shutdown 时间,默认关闭。
增加参数 innodb_max_temp_data_file_size,只读参数,默认值128M,当此参数大于0时,代表本地存储中最大可以容纳的临时表空间。
小版本
说明
2.1.12
功能更新
只读实例支持通过位点订阅 binlog。
性能优化
优化了 purge binlog 的性能,减少了性能抖动。
问题修复
修复了 Flink 订阅 TDSQL-C 只读实例 binlog 的部分场景不兼容的问题。
修复了官方 Bug #27422376。
修复了 B-Tree 逆序遍历时,遇到过期的数据页会读重试的问题。
修复了 buffer pool resize 缩小时可能重复回收 page 的问题。
2.1.11
功能更新
数据库审计支持添加事务 ID 字段与表名。
支持多线程逻辑备份。
数据库代理支持 事务拆分
性能优化
优化了内存使用机制,降低了 OOM 风险。
移除了 CDC、LSN、CLUSTER 作为保留关键字。
优化存储 apply 日志逻辑,提升存储层处理 redo 日志的能力。
问题修复
修复了数据库审计将 prepare 语句归属类型记录错误的问题
修复了数据库审计将 execute 语句中的 sql_type 统一为“other”类型的问题。
修复了官方 Bug #111686和官方 Bug #26225783。
2.1.10
功能更新
只读实例支持订阅 binlog。
支持黑洞引擎。
支持 resize buffer pool。
问题修复
修复 RO 抽取 binlog 可能频繁断连的问题。
2.0.23/2.1.9
功能更新
支持 动态线程池
支持 NOWAIT 语法
支持 returning
支持 invisible index
支持 计算下推
问题修复
修复了部分情况下 HA 导致 gtid 丢失的问题。
修复 ddl 时 kill mysqld 进程,重新拉起后 show create table 概率性触发 crash 的问题。
修复全文索引过早释放 fts cache lock 导致读写不一致的问题。
2.0.22/2.1.8
功能更新
新增 cdc 能力,可直接重复回溯/抽取用户自定义日志保留时间段的 binlog,解决了计算节点在 HA 等场景下丢失本地 binlog 的问题。设置 binlog 保留时间请参见 设置备份保留时间
优化 pages purge 速率,提高数据库性能。
问题修复
修复计算实例在触发空间上限场景下出现反复 crash 的问题。
2.0.21/2.1.7
功能更新
新增密码字典参数,使用请参见 自定义密码强度 功能介绍,优化了 HA 对字典文件依赖的问题。
内核支持补全 purged 的 binlog。
Serverless 架构支持内置数据库代理,实现连接保持、防闪断功能,解决首次唤醒连接报错的问题
2.0.20/2.1.6
问题修复
修复数据库代理探活导致内核输出大量 errlog 的问题,屏蔽冗余的日志打印。
修复 session lsn tracker 中 gcr lsn 未初始化可能返回数据库代理随机值导致语句执行超时的问题。
修复在只读实例创建临时表可能造成死锁的问题。
2.0.19
功能更新
支持只读实例执行逻辑备份。
支持数据库代理,使用请参见 数据库代理 功能介绍。
支持 binlog 在 table 级别的并行复制。
支持 change buffer 以及 merge 方式设置。
支持 show detail processlist。
问题修复
修复官方 json 字符集相关的 Bug#22991924。
合入官方 bugfix Bug#25865525,解决 LOAD DATA INFILE 读入转义字符加 utf8 字符失败的问题。
合入官方 bugfix Bug#31529221,解决 ALTER TABLE 失败报 Incorrect key file 错误的问题。
合入官方生成列和级联删除相关的几个 bugfix,包括 Bug#33053297、Bug#32124113、Bug#29127203。
修复官方 Bug#31599938,slave 中关闭 log_bin 追 binlog 时 reset master 导致卡死的问题。
修复实例启动时大事务或者长行事务回滚,使得主线程无法加上 dict op lock,导致启动时间长的问题。
修复 undo 页分配失败后续复用 trx 引起 crash 的问题。
修复对分区表执行 alter table 从扩展表空间往系统表空间迁移引起 crash 的问题。
修复 truncate log 未完整写入后启动 crash 的问题。
修复 drop table partition force 后插入数据导致 crash 的问题。
修复 instant DDL 更新数据然后 rollback 可能导致 crash 的问题。
修复 create temporary table like 扩展表空间的表创建失败的问题。
修复全文索引表灌数时 cache 持续上涨导致 OOM 的问题。
2.0.17
功能更新
支持将指定 filename 的 binlog 加入到 index 文件中。
问题修复
合入官方 bugfix BUG#25865525,解决 LOAD DATA INFILE 读入转义字符加 utf8 字符失败的问题。
2.0.16
性能优化
优化 undo space truncate,提升大规格实例 undo truncate 速度。
优化只读实例上大范围查询的性能。
问题修复
修复 backup lock 受 lock table 语句影响无法加锁备份的问题。
修复 instant add 上千列后,RO 出现 table share 错乱的问题。
修复 binlog 的内容包含转义关键字回放报错的问题。
修复外部 prepared XA 事务不显式回滚阻塞正常 shutdown 的问题。
修复只读实例启动过程中报 warning“tablespace -1 not found” 警告的问题。
2.0.15
功能更新
支持扩展表空间,当单个表空间超过 innodb_ncdb_extend_space_threshold 配置新表会创建到扩展表空间中。
JSON 新增函数 JSON_MERGE_PRESERVE ,JSON_MERGE_PATCH,JSON_PRETTY,JSON_STORAGE_SIZE,JSON_ARRAYAGG,JSON_OBJECTAGG。
优化系统启动时表锁恢复流程,缩短启动时间。
问题修复
修复官方 bugfix,包含 text 列 group by 性能问题和多个虚拟列相关的问题。
修复实例启动后大事务回滚与 shutdown 操作并发时,可能导致实例 crash 的问题。
修复 undo space truncate 失败重试时相关页面 io 重试多次失败,导致实例退出的问题。
修复只读实例关闭时统计信息更新访问快照缓存,导致 crash 的问题。
修复 undo space truncate 可能存在 truncate log 落后于 truncate 操作的问题。
修复官方 bugfix,分区表扫描 ICP 检查错误,导致查询慢的问题。
修复只读实例中前项扫描遇到索引分裂日志部分回放,导致 crash 的问题。
2.0.14
功能更新
支持 instant modify column,使用请参见 Instant DDL 功能介绍。
问题修复
修复只读实例中临时表删除时,占用空间不回收的问题。
修复只读实例因为存储路由变更读到老的页面版本,导致退出的问题。
修复查询 information_schema.metadata_locks 时,可能发生的 crash 问题。
修复只读实例前向扫描与 btree SMO 的并发问题。
修复当多表出现复杂外键依赖,且外键属性为 ON DELETE CASCADE,在 DELETE 父表记录时可能导致子表对应的记录被删除两次的问题。
修复只读实例 create user 等相关操作,导致退出的问题。
修复只读实例中 show volume status,可能触发断言失败的问题。
修复分区表频繁 DDL 后,只读实例查询结果异常和 crash 的问题。
修复只读实例查询扫描到已经被 purge 的 undo log,导致构造历史版本 crash 的问题。
2.0.13
功能更新
支持 instant add column,使用请参见 Instant DDL 功能介绍。
优化高负载下的审计性能,增加动态参数 lock_usleep_time。
问题修复
修复官方针对 dict_operation_lock 在外键检查中可能引起的死锁问题。
修复只读实例启动阶段回放 acl change 日志,可能导致退出的问题。
修复 instant add column 和 truncate table 后,主从数据不一致的问题。
修复 instant add column 和 truncate table 后,再次插入数据导致日志回放错误的问题。
修复创建包含 instant add column 列的主键,导致退出的问题。
修复使用 instant column 新建 partition,rebuild partition,只读实例查询表结构退出的问题。
2.0.12
功能更新
支持数据库审计,使用请参见 开通 TDSQL-C MySQL 版审计
支持 purge 页面预读,加快空间回收速度。
实时更新系统视图中表和索引大小信息。
增加额外的线程用以加快推进 recycle lsn,加快存储的 GC。
问题修复
修复全文索引官方 BUG,包括:BUG#24938374,BUG#21625016,BUG#27082268,BUG#27155294,BUG#27326796,BUG#27304661,BUG#25289359,BUG#29717909,BUG#30787535。
修复官方 BUG,涉及并发更新可能导致系统 crash,包括 BUG#30950714、BUG#31205266、BUG#25669686。
修复官方 BUG#28104394,未提交的插入操作会影响索引建的 range scan,使其返回错误的行数。
修复官方 BUG#30488700,derived table 查询计划有误导致性能差的问题。
修复主机执行 DDL 后,只读实例回放统计信息日志可能导致退出的问题。
修复 rename table 到不存在 DB 的问题。
修复主机 optimize table,导致只读实例可能退出的问题。
修复全文索引表的更新在只读实例存在事务一致性的问题。
修复 set offline mode 和 show variables 操作发生死锁的问题。
2.0.11
功能更新
优化 binlog 文件索引,提升扫描 binlog 文件的速度。
优化 shutdown 流程,提升 shutdown 速度。
优化实例内存,压缩 buffer zip hash 等结构的内存占用。
优化只读实例启动时恢复 DDL lock 的流程,加快回放速度。
优化只读实例 load 系统表的流程,加快启动速度。
优化 purge coordinator 工作线程分配,提升 purge 速度。
问题修复
修复 index 结构映射错误,导致的 open table 时挂掉的问题。
修复 xa 事务回滚时,在只读实例复制出现异常的问题。
修复在只读实例中启动 binlog 复制,导致启动 crash 的问题。
修复 flush logs 导致的内存泄漏问题。
修复 mysqladmin shutdown 无法退出的问题。
修复主机 drop column时,只读实例连接无法回放日志的问题。
修复插入 blob 大对象触发空间限制后,依然可以灌数的问题。
修复主机大表 DDL 和日志写盘慢,可能导致的只读实例复制可用性问题。
修复临时表设置 innodb_max_temp_data_file_size 后,存储浪费小表的问题。