开发者社区> 黎明的烬> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mysql进阶(六)

简介: 1.插入1000w数据 涉及到的表: create table dept( id int unsigned primary key auto_increment, deptno mediumint not nu...
+关注继续查看

1.插入1000w数据

涉及到的表:

create table dept(
	id int unsigned primary key  auto_increment,
	deptno mediumint not null default 0,
	deptname varchar(20) not null default "",
	loc varchar(13) not null default""
	) engine=innodb default charset=gbk;


 create table emp(
	id int unsigned primary key  auto_increment,
	empno mediumint 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,
	deptno mediumint unsigned not null default 0
	) engine=innodb default charset=gbk;

 创建函数:当创建函数时报错:this function has none of deterministic ……

由于开启过慢查询日志,因为 bin-log,必须为function指定一个参数。

创建函数,保证每条数据都不同

生成随机数函数:

delimiter $$
create function rand_string(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
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 $$
delimiter ;

 生成随机数字函数:注意 rand)num( )括号中空格

delimiter $$
create function rand_num( ) returns int(5)
begin
declare i int default 0;
set i = floor(100+rand()*10);
return i;
end $$
delimiter ;

创建存储过程:

-- 创建存储过程
delimiter $$
create procedure insert_emp(in start int(10),in max_num int(10))
begin 
declare i int default 0;
# set autocommit =0 把autocommit设置成0
set autocommit = 0;
repeat
set i = i+1;
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values ((start+i),rand_string(6),'SALEMAN',001,curdate(),2000,400,rand_num());
until i = max_num
end repeat;
commit;
end $$
delimiter ;

 

delimiter $$
create procedure insert_dept (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 dept(deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));
until i = max_num
end repeat;
commit;
end $$
delimiter ;

2.show profiles

是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量。

参数默认关闭,并保存最近15次的运行结果

①查看是否支持profile

show variables like '%profiling%';

②开启功能,默认是关闭的,使用前需要开启

select * from emp group by id%10 limit 150000;

诊断SQL的命令演示 :show profile ,cpu,block io for query query_id;

3.全局查询日志

配置启用:

编码配置:

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《冬季实战营第三期:MySQL数据库进阶实战》电子版地址
《冬季实战营第三期:MySQL数据库进阶实战》此本电子手册提供一个Linux系统。首先,安装mysql;然后,执行mysql的常用操作;最后,学习基本的SQL语句
0 0
MySQL进阶之常用函数
有时候,除了简单的数据查询,我们还有一些高级的函数。
0 0
MySQL进阶之数据的增删改查(DML)
MySQL进阶之数据的增删改查(DML)
0 0
MySQL进阶之表的增删改查
MySQL进阶之表的增删改查
0 0
MySQL进阶查询
MySQL进阶查询
0 0
mysql的DML进阶,分页查找,SQL约束,多表操作学习
mysql的DML进阶,分页查找,SQL约束,多表操作学习
0 0
《冬季实战营第三期:MySQL数据库进阶实战》电子版地址下载
《冬季实战营第三期:MySQL数据库进阶实战》此本电子手册提供一个Linux系统。首先,安装mysql;然后,执行mysql的常用操作;最后,学习基本的SQL语句
0 0
进阶——python——数据库处理之MySQL
进阶——python——数据库处理之MySQL
0 0
《冬季实战营第三期:MySQL数据库进阶实战》下载
《冬季实战营第三期:MySQL数据库进阶实战》此本电子手册提供一个Linux系统。首先,安装mysql;然后,执行mysql的常用操作;最后,学习基本的SQL语句
0 0
《冬季实战营第三期:MySQL数据库进阶实战》下载地址
《冬季实战营第三期:MySQL数据库进阶实战》此本电子手册提供一个Linux系统。首先,安装mysql;然后,执行mysql的常用操作;最后,学习基本的SQL语句
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
冬季实战营第三期:MySQL数据库进阶实战
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载