您的位置:首页 > 数据库 > MySQL

MySQL优化-老韩视频笔记(二)

2016-01-10 14:52 656 查看
一.SQL优化

如何从一个大的项目中,迅速的定位执行速度慢的语句——定位慢查询。

了解MySQL数据库的一些运行状态

想知道当前MySQL运行的时间

一共执行了多少次增删改查操作

当前有多少连接,最大并发是多少

二.show [global|session] status

//默认是session,当前回话(窗口)

show status like 'uptime' //数据库已经运行了多长时间,单位是秒

show status like 'com_select' //执行了多少次select语句

show status like 'connections' //现在MySQL有多少个连接

show status like 'slow_queries' //显示慢查询次数

三.定位慢查询

默认情况下,MySQL认为10s才是一个慢查询。

show variables;

show variables like 'long_query_time';//显示慢查询的设置时间

set long_query_time=1;//修改慢查询时间为1s

1.建表

构建一张大表,用来制造慢查询的情境。

尽量不要用主从复制,这样数据都是重复的,测试价值不高,和实际数据相差太大。

insert into table(1,'lxy');

insert into table select * from table;

用存储过程来解决。

2.数据对象

表,存储过程,视图,函数,触发器等等。

比如创建自定义函数:

create function xxx()

begin...end $$

sql="select xxx() from table"; //该函数可以直接当做MySQL内置函数来使用

创建存储过程也一样:

create procedure xxx()

begin...end $$

3.找到慢查询

show status like "slow_queries";// 慢查询出现的次数

可以把慢查询的sql记录到我们的一个日志中去,默认情况下是不记录日志的,需要在启动MySQL的时候,指定记录慢查询才可以。

mysqlId.exe --safe-mode  --slow-query-log

安全模式:会写日志,可以恢复数据,因为执行的sql语句都记录了下来。

启动之后,日志的路径在my.ini中的datadir这个目录下,这个目录尽量不要改。

数据库迁移需要使用指令,因为索引是和机器物理地址是绑定的,如果只是拷贝内容到新的地方索引是不生效的,所以上述目录尽量不要改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: