Mysql-索引优化分析
时间:2019-07-20
本文章向大家介绍Mysql-索引优化分析,主要包括Mysql-索引优化分析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、慢查询日志
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句。
运行时间超过long_query_time(默认10s)值的SQL,则会被记录到慢查询日志中
如果不是调优需要,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响,慢查询日志支持将日志记录写入文件。
show variables like '%slow_query_log%' #查看是否开启慢查询日志 set global slow_query_log=1; #设置慢查询日志开启 show variables like '%long_query_time%'; #查看慢于多少秒会被记录到日志文件 set global long_query_time=3; #设置慢查询阈值时间 show global status like '%slow_queries%'; #查询当前系统中有多少条慢查询日志
若要永久生效,必须修改配置文件my.cnf,然后重启服务器
slow_query_log=1 slow_query_log_file=/var/lib/mysql/sql_idx_slow.log #系统默认会给一个缺省的文件{host_name}-slow.log long_query_time=3; log_output=FILE
二、日志分析工具mysqldumpslow
三、批量导入数据
show variables like '%log_bin_trust_function_creators%' #由于开启过慢查询日志,开启了binlog,必须为function指定一个参数 set global log_bin_trust_function_creators = 1
创建函数:
1、随机生成字符串
DELIMITER $$ CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255) BEGIN DECLARE char_str VARCHAR(100) DEFAULT 'abcdABCD'; DECLARE return_str VARCHAR(255) DEFAULT ''; DECLARE i INT DEFAULT 0; WHILE i<n DO SET return_str=CONCAT(return_str,SUBSTRING(char_str,FLOOR(1+RAND()*8),1)); SET i=i+1; END WHILE; RETURN return_str; END $$
2、随机生成编号
DELIMITER $$ CREATE FUNCTION rand_num() RETURNS INT(5) BEGIN DECLARE i INT DEFAULT 0; SET i=FLOOR(100+RAND()*10); RETURN i; END $$
执行存储过程
DELIMITER $$ CREATE PROCEDURE insert_tb1_emp(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 tbl_emp(id,name,deptId) VALUES ((START+i),rand_string(10),rand_num()); UNTIL i=max_num END REPEAT; COMMIT; END $$
调用存储过程
DELIMITER ; CALL insert_tb1_emp(100,10);
四、show profile
MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL调优的测量。
show variables like '%profiling%'; #默认关闭,使用前需要开启 set profiling=on; #开启 show profiles #查看结果 show profile cpu,block io for query 问题SQL数字号码 #诊断SQL
日常开发需要注意的结论:
converting HEAP to MyISAM 查询结果太大,内存不够用往磁盘搬 Creating tmp table 创建临时表 Copy to tmp table on disk 把内存中临时表复制到磁盘,非常危险 locked
五、全局日志查询(永远不要在生产环境开启这个功能)
1、配置启用
在mysql的my.cnf中,设置如下
general_log=1 #开启 general_log_file=/path/logfile #记录日志文件的路径 log_output=FILE #输出格式
2、编码启用
set global general_log=1; set global log_output='TABLE'; #此后所编写的sql语句,将会记录到mysql库中的general_log表中 select * from mysql.general_log;
原文地址:https://www.cnblogs.com/wjh123/p/11216492.html
- python爬虫入门(八)Scrapy框架之CrawlSpider类
- python爬虫入门(九)Scrapy框架之数据库保存
- Numpy 修炼之道(1) —— 什么是 Numpy
- TensorFlow修炼之道(3)——计算图和会话(Graph&Session)
- 1.python简介
- 《Python自然语言处理》答案第三章
- 2.python数据类型
- Miller Rabin算法详解
- 3.python文件操作
- TensorFlow修炼之道(2)——变量(Variable)
- 4.python迭代器生成器装饰器
- 洛谷P2044 [NOI2012]随机数生成器
- 5.python函数
- TensorFlow 修炼之道(1)——张量(Tensor)
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解