一、引言
测试环境中的数据,有时候需要我们自己来构造,为了模拟大数据量,我们总不能一条一条SQL的往数据库中插入,我们可以使用函数和存储过程来实现,这就需要对MySQL的函数和存储过程所有掌握,下面就来介绍一下如何模拟百万数据或者千万数据的插入。(数据模拟完成后,还可以用这些数据来测试MySQL的访问性能哦)
二、MySQL模拟插入百万级数据: 1、建表部门表和员工表create table dept(
id int unsigned primary key auto_increment,
deptno mediumint unsigned not null default 0,
dname varchar(20) not null default "",
loc varchar(13) not null default ""
);
create table emp(
id int unsigned primary key auto_increment,
empno mediumint unsigned not null default 0,
ename varchar(20) not null default "",
job varchar(9) not null default "",
mgr mediumint unsigned not null default 0,
hiredate date not null,
sal decimal(7,2) not null,
comn decimal(7,2) not null,
deptno mediumint unsigned not null default 0
);
2、设置参数 log_bin_trust_function_creators;
前提说明:如果我们在创建函数时,报错:this function has none of deterministic…,这是由于开启过慢查询日志,因为开启了bin-log(二进制日志),我们就必须为我们的function指定一个参数。
简单介绍一下,当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限,如果变量设置为1,MySQL不会对创建存储函数实施这些限制。
那么为什么MySQL有这样的限制呢? 因为二进制日志的一个重要功能是用于主从复制,而存储函数有可能导致主从的数据不一致。所以当开启二进制日志后,参数log_bin_trust_function_creators就会生效,限制存储函数的创建、修改、调用。
(1)、查看该参数:
show varibales like ‘log_bin_trust_function_creators’;
(2)、设置该参数:
set global log_bin_trust_function_creators = 1;
(3)、这样添加了参数后,如果mysqld重启,上述参数又会消失,永久的办法是:
a. 在Windows系统下的配置文件中 my.ini[mysqld] 加上 log_bin_trust_function_creators = 1;
b. 在Linux下 /etc/my.cnf下my.cnf[mysqld] 加上 log_bin_trust_function_creators = 1;
3、创建函数,保证每条数据都不同
(1)、随机产生字符串
DELIMITER $$
CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmlopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
DECLARE return_str VARCHAR(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?