PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 我们在测试数据库性能的过程中,通常需要生成一批测试数据。以前,一般要写一段程序或者脚本来完成这项工作,但现在是2024年啦!时代变了!

文章来源:PolarDB知乎号

作者:梦实


我们在测试数据库性能的过程中,通常需要生成一批测试数据。

以前,一般要写一段程序或者脚本来完成这项工作,但现在是2024年啦!时代变了!

PolarDB-X目前是少有的支持存储过程的分布式数据库,结合大模型,我们可以非常简单的来制造测试数据: 存储过程的原理和使用方法 通义官网


例如,有这样的表结构:

CREATE TABLE t2 (
        id bigint(20) NOT NULL AUTO_INCREMENT,
        c1 varchar(64) NOT NULL ,
        c2 tinyint(4) NOT NULL ,
        c3 varchar(64) NOT NULL ,
        c4 tinyint(4) NOT NULL ,
        c5 varchar(64) NOT NULL ,
        c6 bigint(20) DEFAULT NULL ,
        c7 bigint(20) DEFAULT NULL ,
        c8 double DEFAULT NULL ,
        c9 bigint(20) DEFAULT NULL ,
        PRIMARY KEY (id),
        CLUSTERED INDEX gsi1 (c3)
                PARTITION BY KEY(c3)
                PARTITIONS 32,
        UNIQUE KEY uk1 (c5, c3, c1),
        KEY idx1 (c1),
        KEY idx2 (c5, c1, c8),
        KEY idx3 (c5, c3, c8)
) ENGINE = InnoDB PARTITION BY KEY(c1) PARTITIONS 32;


我们只需要对通义千问进行提问,描述以下需求,它就能自动生成一个存储过程:

写一个存储过程,为以下表生成100万条数据,其中,c1和c5是40位的十六进制字符串。(SQL内容省略了)

1.jpg


通义千问生成了这样的下面的存储过程:

DELIMITER ;;
CREATE PROCEDURE GenerateTestData()
BEGIN
    DECLARE v_counter INT DEFAULT 0;
    DECLARE v_hex_string CHAR(40);
    WHILE v_counter < 1000000 DO
        -- 生成40位十六进制字符串
        SET v_hex_string = LPAD(LOWER(REPLACE(UUID(), '-', '')), 40, '0');
        INSERT INTO t2 (
            c1,
            c2,
            c3,
            c4,
            c5,
            c6,
            c7,
            c8,
            c9
        ) VALUES (
            -- 生成c1的十六进制字符串
            v_hex_string,
            -- 随机生成tinyint值(例如,范围从0到255)
            FLOOR(RAND() * 256),
            -- 生成c3的随机字符串(也可以是十六进制,这里仅作示例)
            LPAD(LOWER(REPLACE(UUID(), '-', '')), 32, '0'),
            -- 随机生成tinyint值
            FLOOR(RAND() * 256),
            -- 生成c5的十六进制字符串
            v_hex_string,
            -- 随机生成bigint值
            FLOOR(RAND() * POW(2, 63)),
            -- 随机生成bigint值
            FLOOR(RAND() * POW(2, 63)),
            -- 随机生成double值
            RAND(),
            -- 随机生成bigint值
            FLOOR(RAND() * POW(2, 63))
        );
        SET v_counter = v_counter + 1;
    END WHILE;
END;;
DELIMITER ;
CALL GenerateTestData();


由于PolarDB-X对MySQL的语法兼容都非常高,我们无需对生成结果进行修改,直接粘贴到PolarDB-X中即可执行:

2.jpg 喝一杯茶,我们的测试数据就创建完成了:

3.png

欢迎关注,我们会带给大家更多PolarDB-X的最佳实践!




数据库PolarDB-X新人入门一站式页面,快速体验集中分布式一体化新特性!

云原生数据库PolarDB分布式版新人入门

相关实践学习
Polardb-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
相关文章
|
3月前
|
SQL canal 算法
PolarDB-X最佳实践:如何设计一张订单表
本文主要内容是如何使用全局索引与CO_HASH分区算法(CO_HASH),实现高效的多维度查询。
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB-X最佳实践系列(三):如何实现高效的分页查询
分页查询是数据库中常见的操作。本文将介绍,如何在数据库中(无论是单机还是分布式)高效的进行翻页操作。
112409 10
|
存储 Cloud Native 关系型数据库
直播预告 | PolarDB-X 动手实践系列——PolarDB-X 的存储过程与自定义函数
为了满足更多用户和更多场景的需求,PolarDB-X 支持了兼容 MySQL 的存储过程和自定义函数。本期分享将对上述功能进行演示,并简单介绍背后的设计思路及技术原理。
直播预告 | PolarDB-X 动手实践系列——PolarDB-X 的存储过程与自定义函数
|
SQL 关系型数据库 RDS
PolarDB-X 1.0-SQL 手册-DDL任务管理-最佳实践
本文将介绍一些对PENDING任务进行合适处理的最佳实践。
532 0
|
存储 BI
PolarDB-X 1.0-最佳实践-如何选择实例规格
PolarDB-X 1.0计算资源实例与PolarDB-X 1.0存储资源实例按照CPU的处理能力、内存容量和磁盘空间等来划分实例的规格,并提供多种不同规格的实例供选择,规格越高代表实例的处理能力越强。本文介绍如何选择实例规格。
341 0
|
SQL 关系型数据库 物联网
PolarDB-X 1.0-最佳实践-如何选择拆分键
本文将介绍如何在PolarDB-X中选择合适的拆分键。
370 0
|
关系型数据库 数据库 RDS
PolarDB-X 1.0-最佳实践-如何选择分片数
本文将介绍如何为PolarDB-X中选择分片数(即水平拆分时的物理分表数)。
413 0
|
存储 SQL 监控
PolarDB-X 1.0-最佳实践-何时选择升配
本文介绍如何查看PolarDB-X 1.0实例的性能指标并通过升配来解决性能不足的问题。
433 0
|
SQL 监控 关系型数据库
PolarDB-X 1.0-最佳实践-何时选择平滑扩容
什么是平滑扩容 PolarDB-X 平滑扩容是指通过增加 RDS 的数量以提升整体性能。当 RDS 的 IOPS、CPU、磁盘容量等指标到达瓶颈,并且 SQL 优化、RDS 升配已无法解决瓶颈(例如磁盘已升至顶配)时,可通过 PolarDB-X 水平扩容增加 RDS 数量,提升 PolarDB-X 数据库的容量。
943 0
PolarDB-X 1.0-最佳实践-何时选择平滑扩容
|
druid Java 关系型数据库
PolarDB-X 1.0-最佳实践-如何选择应用连接池
数据库连接池是对数据库连接进行统一管理的技术,主要目的是提高应用性能,减轻数据库负载。
398 0

热门文章

最新文章

相关产品

  • 云原生分布式数据库 PolarDB-X