手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

MySQL如何快速插入千万级数据

时间:2024-10-12 11:51:33

1、开始之前,我们首先来看一下数据库是否开启了二进制日志记录,使用:show variables like 'log_bin';二进制日志记录了所有修改了数据库的语句,或者有可能会改变数据库的语句,换句话说,select、show这种不修改数据库的操作,二进制日志是不会进行记录的,二进制日志主要用于时间点恢复(备份恢复),以及主从复制结构。

MySQL如何快速插入千万级数据

2、如果你开启了二进制日志记录,那么就需要同时开启log_bin_trust_function_creators,我们可以使用:show variables like 'log_bin_trust_function_creators';来查看log_bin_trust_function_creators的状态,如果log_bin_trust_function_creators=OFF,这需要使用:set global log_bin_trust_function_creators=1;来启用二进制日志对新建的存储过程信任,否则在后续新建存储过程时会出现错误。

MySQL如何快速插入千万级数据

3、经过以上两步,接下来我们就可以先创建一张表,这里我们就简单地建一个sys_user_login_log表,如下:drop table if exists sys_user_login_log;create table sys_user_login_log( id bigint(100) auto_increment primary key, user_code varchar(100) null comment '用户编码', username varchar(100) null comment '用户名', login_time datetime null comment '登录时间')comment '系统用户登录记录' charset=utf8;

MySQL如何快速插入千万级数据

4、为了快速插入模拟数据,我们这里再新建两个函数,第一个是生成随机字符串的函数:# 随机字符串DELIM朐袁噙岿ITER $$CREATE FUNCTION random_string(n INT) RETURNS VARCHAR(255)BEGIN DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; DECLARE return_str VARCHAR(255) DEFAULT ''; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = CONCAT(return_str, SUBSTRING(chars_str, FLOOR(1 + RAND() * 52), 1)); SET i = i + 1; END WHILE; RETURN return_str;END $$

MySQL如何快速插入千万级数据

5、第二个是生成随机数字的函数:# 随机数字DELIMITER $$CREATE FUNCTION random_num() RETURNS INT(5)BEGIN DECLARE i INT DEFAULT 0; SET i = FLOOR(100 + RAND() * 10); RETURN i;END $$

MySQL如何快速插入千万级数据

6、接下来,再新建一个存储过程,往sys_user_login_log表添加随机数据:#执行存储过程,往sys_user_login_lo爿讥旌护g表添加随机数据DELIMITER $$CREATE PROCEDURE insert_sys_user_login_log(IN START INT(10), IN max_num INT(10))BEGIN DECLARE i INT DEFAULT 0; SET autocommit = 0; REPEAT SET i = i + 1; INSERT INTO sys_user_login_log (id, user_code, username, login_time) VALUES (START + i, replace(uuid(), "-", ""), random_string(10), now()); UNTIL i = max_num END REPEAT; COMMIT;END $$这里使用了上面创建的random_string()函数,以及uuid(),now(),你也可以根据字段类型使用random_num()函数。

MySQL如何快速插入千万级数据

7、接下来我们就可以调用insert_sys_user_login_log函数往sys_user_login_log表插入数据了,插入千万级数据的时间大概十几二十分钟,大家耐心等待一下就行了。

MySQL如何快速插入千万级数据
© 手抄报圈