AliSQL在性能方面提供了四大能力:
1) Fast Query Cache
该能力主要针对原生MySQL Query Cache的不足进行了重新设计与全新实现,解决了原生MySQL query存在的的问题:
• 并发控制方面进行了优化,取消了全局锁的同步机制,采用无锁机制,重新设计了并发场景下的同步问题,能够充分利用多核处理能力,保证高并发下的数据库性能。
• 优化了内存管理,取消了内存预分配机制,采用了更加灵活的动态内存分配机制。
• 优化了缓存机制,动态检测缓存利用率,实时调整缓存策略,解决命中率偏低或读写混合场景下性能下降问题。
因此,Fast Query Cache 是对原生MySQL Query Cache的极大提升。
2) Binlog in Redo
事务提交时,Binlog内容同步写到Redolog里,减少了对数据库磁盘的操作,提高了数据库性能。
3) Statement Queue
针对排队机制将语句进行分桶排队,尽量将相同冲突的语句放到一个桶内。MySQL服务层与引擎层在语句并发执行过程中有很多串行点容易导致冲突,系统吞吐量会随着客户业务端的并发增加而递减。因此AliSQL提供了Statement Queue机制,通过分桶排队方法,减少了冲突开销,提高了实例性能。
4) Inventory Hint
该功能主要用于帮助快速提交与回滚事务,能够有效提高业务吞吐能力。
Inventory Hint使用示例如上图所示。
AliSQL在稳定方面提供了以下5种能力:
1) Faster DDL
该功能能够优化DDL操作过程中的Buffer Pool管理机制,降低DDL操作带来的性能影响,提升在线DDL操作的并发数。使得客户实例在平常的业务压力下安心执行DDL,不会发生问题。
2) Statement Concurrency Control
该能力主要为应对数据库请求流量资源消耗过高的语句与SQL访问模型的变化,保证MySQL实例持续稳定运行。
3) Performance Agent
AliSQL提供了更加便捷的性能数据统计方案,通过MySQL插件的方式实现MySQL内部各种性能数据的采集与统计。将最近一段时间的性能数据汇总入一张内存表,客户可以直接查询该表获取最近一段时间的性能统计数据。
4) Purge Large File Asynchronously
可以用异步的方式删除大文件。在原生MySQL InnoDB下,直接删除大文件可能会导致严重的稳定性问题。而AliSQL下,会启动后台线程异步清理数据文件。删除单个表空间时,会将对应数据文件先命名为临时文件,用于异步线程删除,保证系统的稳定性。
5) Performance Insight
该能力主要专注于实例负载监控、关联分析以及性能调优。
异步删除大文件时,需要先设置参数,比如InnoDB、data等,删除时通过查询系统表查看整体进度。