tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们

buffer pool 隔离

PDF
聚焦模式
字号
最后更新时间: 2024-10-09 10:28:29

功能介绍

Innodb 的 buffer pool(BP)通过在 midpoint 插入新页的方式尽可能避免了全表扫描等操作对 BP 的污染,但效果有限。为了进一步提高 BP 的性能,该功能支持在 BP 中设置独立的一块空间,专门用来执行类似全表扫描的操作。当没有全表扫描操作时,这个空间可以完全被正常的 LRU list 使用。而当存在全表扫描操作时,使用 CLOCK 淘汰算法管理这个空间,通过数据页面的物理隔离,避免了类全表扫描操作对 BP 的污染。

支持版本

内核版本 TXSQL 8.0 3.1.15及以上。

适用场景

适用于需要频繁对数据库进行全表扫描和进行大规模数据操作的场景。

使用说明

参数说明

参数名
动态
类型
默认
参数值范围
说明
innodb_txsql_independent_buffer_pool_evict_interval
yes
ulong
50
0-50
后台线程主动淘汰 CLOCK list 的时间单位,越小 CLOCK list 页面在内存中驻留越久,设置为0可以快速清空 CLOCK list。
innodb_txsql_independent_buffer_pool_list_move_action
yes
ulong
0
0-2
CLOCK list 页面被正常 query 读到后的行为:0代表不做任何变化;1代表同步移动到 LRU list;2代表异步移到到 LRU list,移动操作交给后台线程。
innodb_txsql_independent_buffer_pool_size_pct
yes
ulong
5
1-100
隔离 BP 能使用的 BP 最大比例。比例越高,对正常 query 的影响越大,但是类全表扫描的操作效果越高。
innodb_txsql_independent_buffer_pool_users
yes
string
nullptr

通过指定用户的方式使用 BP 隔离,具体配置方式为"user1@ip1;user2@ip2"。
innodb_txsql_independent_buffer_pool_enabled
yes
bool
ON
ON/OFF
buffer pool 隔离的开关,关闭后不会再有新的页面进入隔离空间,旧的隔离页面将尽快淘汰。
innodb_txsql_independent_buffer_pool_max_expire_minutes
yes
bool
120
1-1440
CLOCK list 页面在 BP 隔离中最大淘汰时间。控制逻辑:use_times 代表页面的活跃度,是 CLOCK 算法的一个重要指标:页面每次被读取则将其加1,后台线程每隔一个时间单位将所有页面的 use_times 减1。innodb_txsql_independent_buffer_pool_max_expire_minutes 用于控制 use_times 的上限。
新增状态如下:
参数
类型
说明
txsql_independent_buffer_pool_usage_counts
longlong
使用 BP 隔离的 SQL 数量。

BP 隔离的使用方法1

使用名为 independent 的 hint 手动触发对 BP 隔离的使用,具体使用方法为在 DML 的 INSERT、DELETE、UPDATE 等关键词后立刻添加/*+ independent /,例如:select /*+ independent */ id from t;需要注意的是将/*+ independent */加在非前述的任意位置皆无法触发对 BP 隔离的使用,例如:select id /*+ independent */ from t;

BP 隔离的使用方法2

通过 innodb_txsql_independent_buffer_pool_users 设置默认使用 BP 隔离的用户,此类用户简称为 BP 隔离用户。在 innodb_txsql_independent_buffer_pool_users 中新增、修改、删除 BP 隔离用户后,该用户是否默认使用 BP 隔离的行为只在新连接生效,已建立连接的行为不受影响。为方便排障,在 show detail processlist;中新增 Independent_buffer_pool_session 状态来表示连接是否默认使用 BP 隔离。

BP 隔离与 Prepare statement、Stored Procedure 的关系

Prepare statement、Stored Procedure 都支持通过 方法1 使用 BP 隔离。
Prepare statement、Stored Procedure 是否使用 BP 隔离与创建的用户无关,只与执行的用户有关。

BP 隔离的观察

BP 隔离功能在 show engine innodb status 中添加了对 BP 隔离空间(CLOCK list)的监控。在 BUFFER POOL AND MEMORY 模块中添加 CLOCK list 长度和分布的情况。具体而言,use_times 代表页面的活跃度,是 CLOCK 算法的一个重要指标:页面每次被读取则将其加1,后台线程每隔一个时间单位将所有页面的 use_times 减1。当 use_times 为0时将页面淘汰或刷盘。在 BUFFER POOL AND MEMORY 模块中对 use_times 相同的页面进行了聚类,分为[0,10),[10, 100),[100, 1000),[1000, 10000),[10000, 100000),[100000, unlimited)6个范围。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈