MySQL · 参数故事 · max_prepared_stmt_count
前情提要 SysBench压测过程经常遇见max_prepared_stmt_count过小的问题,本文分析SysBench压测中的prepare语句数量,给SysBench压测过程max_prepared_stmt_count参数的设置提供依据。 参数背景 SysBench压测过程会产生prepare语句,主要由db-ps-mode选项控制,该选项取值为{auto,...
View ArticlePolarDB MySQL 联邦查询优化特征(条件下推、按需返回列、LIMIT OFFSET下推)
背景 社区版 MySQL 支持的联邦引擎可以将位于远程数据库实例的表像本地表一样访问,大大方便了用户管理多个数据库实例的数据做聚合查询和分析。但是在性能方面存在着可以优化的地方: 只有在可以使用索引 RANGE/REF 方式扫描时,可以将索引上的条件作为 SQL 的一部分发送到远程数据库实例,而其他条件都保留在本地数据库执行; 即使 SQL...
View ArticleMySQL · 引擎特性 · PolarDB Innodb刷脏优化
PolarDB现有架构采用了物理复制+共享存储的架构方案,在这个架构下,原有的Innodb的刷脏策略需要进一步的调整和优化,才能满足当前PolarDB的需求。原生Innodb的刷脏策略概括为一句话来说,就是batch化积攒更多的修改,减少频繁IO,而PolarDB本身因为RO和RW之间的约束问题,需要更加优雅和顺滑的刷脏以持续推进RW节点上的Flush_lsn,本篇文章总结一下PolarDB在Inn...
View ArticlePolarDB MySQL · 功能特性 · Auto Plan Cache
背景信息 执行计划的选择需要考虑诸多因素,如统计信息、不同的连接顺序和不同的查询变换等。对于不同的查询语句,其优化时间不同,可能会存在某些SQL语句的查询优化时间在整体执行时间中占比很大的情况。如果这类SQL语句执行的次数较多,就会因为优化时间占比大导致系统负载增加。通过缓存并复用SQL语句的执行计划,可以减少每次执行SQL语句的优化时间,从而提升查询性能,降低数据库负载,提升吞吐能力。...
View ArticlePolarDB MySQL · 功能特性 · 大表扫描优化
背景 社区MySQL从5.1开始引入了插件式引擎体系结构,该结构MySQL的引擎非常便于扩展,使用户可以选择合适的存储引擎。但同时MySQL SQL层和引擎层的紧密融合的优化相对现代数据库则少很多,对于用户需要处理越来越多数据的场景需求,相关的优化缺失导致很多场景下性能成为瓶颈。为了能够加速用户查询,充分融合SQL层和引擎层的特性,PolarDB...
View ArticlePolarDB MySQL的INTERVAL分区如何让DBA解放双手
作为大表的优化方案之一,分区表功能现在越来越受欢迎。PolarDB MySQL的分区表完全兼容MySQL官方的语法和功能,同时,PolarDB在功能和性能上做了很多的优化和增强(详情请参见PolarDB MySQL分区表概述)。 INTERVAL分区是什么...
View ArticleLong-lived Transactions 产生的影响
背景 MVCC已经成为现代数据库解决高并发访问的关键技术;MVCC为用户提供了快读读取数据,同时也允许对冲突数据并发写入;其基原理是每次更新记录时创建一个新版本,而不是直接去覆盖旧版本。这样可以确保每个事务都只能访问到自己可以访问到的数据,这样就保持了其读取的数据始终是一致的。如果记录的版本数据不再被所有活跃的事务所需要,就可以将其清理掉,这样就可以保证数据库的容量在一个合理的范围之内。...
View ArticlePolarDB auto_inc 场景性能优化之路
在数据库的使用场景中, 最常见的场景是并发插入或者导入数据场景, 在该场景中并不指定自增id, 由数据库自动生成自增id, 然后插入到数据库中, 因此我们也叫auto_inc 场景的数据插入. 典型的业务场景如: 游戏行业开服过程中的大批的登录注册场景, 电商活动中给商家后台推单场景等等. 我们看看PolarDB 是如何优化针对这种并发插入场景进行优化的. 背景知识: 在这种并发插入场景中,...
View ArticlePolarDB MySQL · 持续补强的全局二级索引
继我们去年年底发布内核原生的全局二级索引(用户文档)以来,陆续有客户过来咨询和使用。目前已经有客户在生产实例上大规模使用全局二级索引(Global Secondary Index,下文用GSI代替),大大优化了分区表场景下不含分区键的Query/DML性能以及支持不含分区键的Unique...
View ArticlePolarDB for MySQL 优化器查询变换系列 - 条件下推
背景 条件下推是数据库优化器查询变换中的一个重要规则,目的在于将上层查询的条件尽可能多的下推到下层,使得查询任务在尽可能早的阶段对数据进行过滤,从而减少后续查询计算的代价,大幅提升查询性能。 条件下推到derived table 基于以上目的,MySQL 8.0.22及之后的版本支持将条件下推到派生表(derived...
View ArticleMySQL · 参数故事 · max_prepared_stmt_count
前情提要 SysBench压测过程经常遇见max_prepared_stmt_count过小的问题,本文分析SysBench压测中的prepare语句数量,给SysBench压测过程max_prepared_stmt_count参数的设置提供依据。 参数背景 SysBench压测过程会产生prepare语句,主要由db-ps-mode选项控制,该选项取值为{auto,...
View ArticlePolarDB MySQL 联邦查询优化特征(条件下推、按需返回列、LIMIT OFFSET下推)
背景 社区版 MySQL 支持的联邦引擎可以将位于远程数据库实例的表像本地表一样访问,大大方便了用户管理多个数据库实例的数据做聚合查询和分析。但是在性能方面存在着可以优化的地方: 只有在可以使用索引 RANGE/REF 方式扫描时,可以将索引上的条件作为 SQL 的一部分发送到远程数据库实例,而其他条件都保留在本地数据库执行; 即使 SQL...
View ArticleMySQL · 引擎特性 · PolarDB Innodb刷脏优化
PolarDB现有架构采用了物理复制+共享存储的架构方案,在这个架构下,原有的Innodb的刷脏策略需要进一步的调整和优化,才能满足当前PolarDB的需求。原生Innodb的刷脏策略概括为一句话来说,就是batch化积攒更多的修改,减少频繁IO,而PolarDB本身因为RO和RW之间的约束问题,需要更加优雅和顺滑的刷脏以持续推进RW节点上的Flush_lsn,本篇文章总结一下PolarDB在Inn...
View ArticlePolarDB MySQL · 功能特性 · Auto Plan Cache
背景信息 执行计划的选择需要考虑诸多因素,如统计信息、不同的连接顺序和不同的查询变换等。对于不同的查询语句,其优化时间不同,可能会存在某些SQL语句的查询优化时间在整体执行时间中占比很大的情况。如果这类SQL语句执行的次数较多,就会因为优化时间占比大导致系统负载增加。通过缓存并复用SQL语句的执行计划,可以减少每次执行SQL语句的优化时间,从而提升查询性能,降低数据库负载,提升吞吐能力。...
View ArticlePolarDB for MySQL 优化器查询变换系列 - 条件下推
背景 条件下推是数据库优化器查询变换中的一个重要规则,目的在于将上层查询的条件尽可能多的下推到下层,使得查询任务在尽可能早的阶段对数据进行过滤,从而减少后续查询计算的代价,大幅提升查询性能。 条件下推到derived table 基于以上目的,MySQL 8.0.22及之后的版本支持将条件下推到派生表(derived...
View ArticleMySQL · 参数故事 · max_prepared_stmt_count
前情提要 SysBench压测过程经常遇见max_prepared_stmt_count过小的问题,本文分析SysBench压测中的prepare语句数量,给SysBench压测过程max_prepared_stmt_count参数的设置提供依据。 参数背景 SysBench压测过程会产生prepare语句,主要由db-ps-mode选项控制,该选项取值为{auto,...
View ArticlePolarDB MySQL 联邦查询优化特征(条件下推、按需返回列、LIMIT OFFSET下推)
背景 社区版 MySQL 支持的联邦引擎可以将位于远程数据库实例的表像本地表一样访问,大大方便了用户管理多个数据库实例的数据做聚合查询和分析。但是在性能方面存在着可以优化的地方: 只有在可以使用索引 RANGE/REF 方式扫描时,可以将索引上的条件作为 SQL 的一部分发送到远程数据库实例,而其他条件都保留在本地数据库执行; 即使 SQL...
View ArticleMySQL · 引擎特性 · PolarDB Innodb刷脏优化
PolarDB现有架构采用了物理复制+共享存储的架构方案,在这个架构下,原有的Innodb的刷脏策略需要进一步的调整和优化,才能满足当前PolarDB的需求。原生Innodb的刷脏策略概括为一句话来说,就是batch化积攒更多的修改,减少频繁IO,而PolarDB本身因为RO和RW之间的约束问题,需要更加优雅和顺滑的刷脏以持续推进RW节点上的Flush_lsn,本篇文章总结一下PolarDB在Inn...
View ArticlePolarDB MySQL · 功能特性 · Auto Plan Cache
背景信息 执行计划的选择需要考虑诸多因素,如统计信息、不同的连接顺序和不同的查询变换等。对于不同的查询语句,其优化时间不同,可能会存在某些SQL语句的查询优化时间在整体执行时间中占比很大的情况。如果这类SQL语句执行的次数较多,就会因为优化时间占比大导致系统负载增加。通过缓存并复用SQL语句的执行计划,可以减少每次执行SQL语句的优化时间,从而提升查询性能,降低数据库负载,提升吞吐能力。...
View ArticleMySQL · 源码解析 · InnoDB中undo日志的组织及实现
Undo日志在InnoDB中起着重要的作用,保证着事务的原子性,解决崩溃恢复的问题,满足隔离性要求等。InnoDB中undo日志的结构是什么样的、这些undo日志是如何组织起来的、为满足事务原子性InnoDB中undo是如何实现的?针对这些问题,本文分两部分展开介绍:第一部分undo日志的结构和组织;第二部分Undo日志作用及实现。本文的侧重点是InnoDB中undo日志是如何组织及实现的,对主要点...
View Article