利用存储过程造百万级数据

概要

由于工作用使用Mysql 和Oracle,需要准备大量的数据,便利用存储过程造百万数据。

Mysql 造数据

  1. 准备两张表,一个INNODB存储引擎,一个是内存表使用MEMORY存储引擎。
普通表:
 DROP TABLE IF EXISTS `sys_area_InnoDB`;
CREATE TABLE `sys_area_InnoDB` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 
  `code` int(6) DEFAULT NULL COMMENT 
  `name` varchar(40) DEFAULT NULL COMMENT 
  `parentId` int(6) DEFAULT NULL COMMENT
  `level` int(4) DEFAULT NULL COMMENT 
  `type` int(4) DEFAULT NULL COMMENT 
  `servicestate` int(5) DEFAULT NULL COMMENT 
  `delete_flag` int(255) DEFAULT '0' COMMENT 
  `region` int(11) DEFAULT NULL COMMENT 
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2145086 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='区域表';
内存表:
DROP TABLE IF EXISTS `sys_area_memory`;
CREATE TABLE `sys_area_memory` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 
  `code` int(6) DEFAULT NULL COMMENT 
  `name` varchar(40) DEFAULT NULL COMMENT 
  `parentId` int(6) DEFAULT NULL COMMENT 
  `level` int(4) DEFAULT NULL COMMENT 
  `type` int(4) DEFAULT NULL COMMENT 
  `servicestate` int(5) DEFAULT NULL COMMENT 
  `delete_flag` int(255) DEFAULT '0' COMMENT 
  `region` int(11) DEFAULT NULL COMMENT 
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MEMORY  AUTO_INCREMENT=2145086 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='区域表';
  1. 由于数据写入内存中,需要调整Mysql内存值,

打开 my.ini文件 添加 两行
在这里插入图片描述
tmp_table_size=2048M
max_heap_table_size=2048M
重启mysql服务
3.创建存储过程

CREATE PROCEDURE pro_name(IN totalCount int)
begin
    declare num int;
    set num=1;
    while num<totalCount do
        set num=num+1;
       INSERT INTO sys_area_memory (`code`, `name`, `parentId`, `level`, `type`, `servicestate`, `delete_flag`, `region`) VALUES (1, '北京市123123', 0, num, NULL, 1, 0, NULL);
    end while;
END
  • 执行存储过程语句 【CALL pro_name(10000000)】; 往内存表写入1千万数据,
  • 将内存表数据复制到普通表数据中 sql: insert into sys_area_InnoDB SELECT * from sys_area_memory;
    整个过程不到两分钟搞定。

Oracle 造数据

  1. 相对MySQL造数据没有这个复杂,直接调用存储过程即可;
  2. CALL pro_name(10000000) 整个过程也是不到两分钟完成

小结

  1. mysql造数据需要利用内存表完成。
  2. Oracle 造数据不需要中间表更加方便。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值