AliSQL 8.0 特性和改进总结
性能洞察与诊断
性能洞察
- 对象统计:表统计支持业务系统扩展,索引统计支持业务系统优化。
- 语句统计:
- CPU:包括执行时间、CPU时间、锁时间等指标。
- 并发:包括互斥锁旋转次数、互斥锁等待次数等。
- IO:包括数据读取、数据写入、逻辑读取、物理读取等。
- 性能分类:CPU密集型(如MDL Block、Trans Block)和IO密集型(如并发)。
性能诊断
- 云产品依赖性:可诊断性至关重要,以InnoDB IO表现为例,通过Slot、Interval、Durable等参数进行诊断。
新功能
序列引擎
- 语法:支持创建序列、获取下一个值、获取当前值。
- 功能:缓存管理、自治事务、序列访问。
自定义ReadView
- 跨会话一致性:通过
EXPORT CONSISTENT SNAPSHOT LOCAL和RELEASE CONSISTENT SNAPSHOT实现。
- 跨节点一致性(PolarDB):通过
EXPORT CONSISTENT SNAPSHOT和RELEASE CONSISTENT SNAPSHOT实现。
- 应用:Proxy跨会话或跨节点并行计算。
语句并发控制
- 控制方式:基于SQL命令类型、操作对象、关键字。
- 接口设计:
DBMS_CCL.add_ccl_rule()、DBMS_CCL.del_ccl_rule()等。
语句轮廓
- 优化器提示:分为全局、表/索引、连接顺序等级别。
- 索引提示:根据类型(USE、FORCE、IGNORE)和范围(JOIN、ORDER BY、GROUP BY)分类。
- 接口设计:
DBMS_OUTLN.add_index_outline()、DBMS_OUTLN.add_optimizer_outline()等。
异步清理InnoDB数据文件
- 问题:大表删除成本高,涉及PageCache回收、Meta信息flush、Journal日志写入。
- DDL原子性:通过日志补偿机制保证CREATE和DROP TABLE的原子性。
- 异步清理机制:通过InnoDBFile Purge Thread实现文件删除的原子性。
多队列线程池
- 优势:CPU时间片公平调度、线程切换开销稳定、业务识别,事务优先。
- 应用:提升大规模连接和复杂混合SQL模型下的稳定性和吞吐能力。
隐式主键
- 功能:增加隐式列和键,优先选择隐式键。
- 背景:分区表约束需要带分区键,大量NULL导致唯一键不是优先选择。
事务管理
- 空闲事务终止:通过
kill_idle_transaction_timeout参数设置超时。
- 非事务优先查询:R级别以下的第一条SELECT语句不启动事务。
稳定性改进
- 事务阻塞:MySQL各种阻塞频发,通过空闲事务终止和非事务优先查询提升稳定性。