PolarDB-X对于性能压测中生产库,影子库怎么处理了?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在PolarDB-X的性能压测中,生产库和影子库的处理方式是通过全链路压测机制实现的。以下是具体的处理方法和操作步骤:
PolarDB-X为了兼容某些客户端从系统表(如COLUMNS
或TABLES
)中获取表结构的功能,在0分库RDS中创建了一个影子库。
- 影子库与PolarDB-X逻辑库名一致,存储了逻辑库中所有的表结构信息。 - 在性能压测场景中,影子库用于模拟生产库的行为,确保压测数据不会污染生产环境。
在全链路压测中,PolarDB-X支持创建影子表,以隔离压测流量和生产流量。
- 影子表的命名规则:表名必须以_test_
为前缀,且前缀后的表名部分必须与关联的正式表名一致。 - 创建顺序:正式表必须先于影子表创建。
示例:
CREATE TABLE `_test_sbtest1` (
`id` int(10) unsigned NOT NULL,
`k` int(10) unsigned NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
KEY `xid` (`id`),
KEY `k_1` (`k`)
) dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 4;
PolarDB-X通过以下机制确保压测流量与生产流量的隔离: - HTAP能力:PolarDB-X支持OLTP和OLAP混合负载,能够智能识别TP(事务处理)和AP(分析处理)流量,并将它们路由到不同的副本上。 - 影子库/影子表:压测流量会自动写入影子库或影子表,避免对生产库造成影响。
在进行性能压测之前,需要完成以下配置: 1. 调整实例参数: - 修改XPROTO_MAX_DN_CONCURRENT
和XPROTO_MAX_DN_WAIT_CONNECTION
的值为4000,以优化压测性能。 - 关闭日志记录和CPU采样统计,减少性能开销: sql SET GLOBAL RECORD_SQL = false; SET GLOBAL ENABLE_HTAP = true; SET GLOBAL ENABLE_MASTER_MPP = true; SET GLOBAL MPP_METRIC_LEVEL = 0; SET GLOBAL ENABLE_CPU_PROFILE = false; SET GLOBAL ENABLE_SORT_AGG = false; SET GLOBAL MPP_PARALLELISM = 192; SET GLOBAL GROUP_PARALLELISM = 8;
准备压测数据:
CREATE TABLE `sbtest1` (
`id` int(10) unsigned NOT NULL,
`k` int(10) unsigned NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
KEY `xid` (`id`),
KEY `k_1` (`k`)
) dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 4;
创建影子表:
压测完成后,需要清理影子库或影子表中的数据,以释放存储空间并避免对后续操作产生干扰: - 删除影子表:
DROP TABLE `_test_sbtest1`;
CHECK TABLE
命令不会检测影子库表结构与PolarDB-X逻辑库表结构是否一致,因此需要手动检查并同步。通过以上步骤,PolarDB-X能够在性能压测中有效隔离生产库和影子库,确保压测数据的安全性和压测结果的准确性。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about