mysql数据库优化课程---15、mysql优化步骤
mysql数据库优化课程---15、mysql优化步骤
一、总结
一句话总结:索引优化最立竿见影
1、mysql中最常用最立竿见影的优化是什么?
索引优化
索引优化,不然有多少行要扫描多少次,1亿行大概是5到10分钟,和列的存量有关系
2、show status的作用是什么?
执行频率
了解各种sql的执行频率
通过show status命令了解各种SQL的执行频率。
格式:mysql> show [session|global]status;
其中:session(默认)表示当前连接,
global表示自数据库启动至今
mysql>show status;
mysql>show global status;
mysql>show status like ‘Com_%’;
mysql>show global status like ‘Com_%’;
• 参数说明:
• Com_XXX表示每个XXX语句执行的次数如:
– Com_select 执行select操作的次数,一次查询只累计加1
– Com_update 执行update操作的次数
– Com_insert 执行insert操作的次数,对批量插入只算一次。
– Com_delete 执行delete操作的次数
• 只针对于InnoDB存储引擎的。
– InnoDB_rows_read 执行select操作的次数
– InnoDB_rows_updated 执行update操作的次数
– InnoDB_rows_inserted 执行insert操作的次数
– InnoDB_rows_deleted 执行delete操作的次数
• 其他:
– connections 连接mysql的数量
– Uptime 服务器已经工作的秒数
– Slow_queries:慢查询的次数
3、定位执行效率较低的SQL语句?
explain select
desc select
1)explain select * from table where id=1000;
2)desc select * from table where id=1000;
1.explain或desc定位一条sql语句的影响行数.
mysql>desc select * from user where username='user8'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: user
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 11
filtered: 10.00
Extra: Using where
4、检查服务器增、删、改和查的使用频次:(本次启动以来)?
show status
show status like "%Com_update%";
show status like "%Com_insert%";
show status like "%Com_select%";
show status like "%Com_delete%";
5、查innodb自启动以来的影响行数?
show status
mysql> show status like "%InnoDB_rows%";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Innodb_rows_deleted | 2 |
| Innodb_rows_inserted | 0 |
| Innodb_rows_read | 105 |
| Innodb_rows_updated | 3 |
+----------------------+-------+
6、如何知道一个程序中的哪些sql语句的执行效率很慢?
慢查询日志
explain desc
1.explain或desc定位一条sql语句的影响行数.
mysql>desc select * from user where username='user8'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: user
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 11
filtered: 10.00
Extra: Using where
2.查看mysql的慢查询日志.
1)查看慢查询日志是否开启
show variables like "%quer%";
slow_query_log | ON
slow_query_log_file | mysql-slow.log
long_query_time | 10.000000
2)查看慢查询的次数
show status like "%quer%";
Slow_queries | 0
二、内容在总结中
推荐mysql书籍:
网易专家DBA: 《深入浅出Mysql》
1.SQL语句优化
1)优化SQL语句的一般步骤
2)索引优化
3)check与optimize使用方法
4)常用SQL的优化
检查服务器增、删、改和查的使用频次:(本次启动以来)
show status like "%Com_update%";
show status like "%Com_insert%";
show status like "%Com_select%";
show status like "%Com_delete%";
查innodb自启动以来的影响行数:
mysql> show status like "%InnoDB_rows%";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Innodb_rows_deleted | 2 |
| Innodb_rows_inserted | 0 |
| Innodb_rows_read | 105 |
| Innodb_rows_updated | 3 |
+----------------------+-------+
定位执行效率较低的SQL语句:
1.explain或desc定位一条sql语句的影响行数.
mysql>desc select * from user where username='user8'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: user
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 11
filtered: 10.00
Extra: Using where
2.查看mysql的慢查询日志.
1)查看慢查询日志是否开启
show variables like "%quer%";
slow_query_log | ON
slow_query_log_file | mysql-slow.log
long_query_time | 10.000000
2)查看慢查询的次数
show status like "%quer%";
Slow_queries | 0
3.修改慢查询的时间(my.ini)
long_query_time=6
4.重启mysql服务器
net stop mysql57
net start mysql57
优化表空间:
optimize table sales;
1.myisam表没有问题.
2.innodb表ibdata1文件无法回收空间.
mysql数据库优化课程---15、mysql优化步骤的更多相关文章
- 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...
- Mysql数据库调优和性能优化
1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开源数据库,但是mysql数据库的默认设置性能非常 ...
- Mysql数据库调优和性能优化的21条最佳实践
Mysql数据库调优和性能优化的21条最佳实践 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开 ...
- MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化
第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就 ...
- MySQL数据库服务器整体规划(思路与步骤)
MySQL数据库服务器整体规划(思路与步骤) 参考资料: http://blog.51cto.com/zhilight/1630611 我们在搭建MySQL数据库服务器的开始阶段就合理的规划,可以避免 ...
- MySQL数据库集群进行正确配置步骤
MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...
- mysql 数据库导入数据报错MySQL server has gone away解决办法
mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...
- mysql数据库的安装以及常见优化设置
原文请详见:http://www.ucai.cn/blogdetail/7036?mid=1&f=5 能够在线执行查看效果哦! 本文依据优才网课程整理,面向web开发人员,内容以有用为主,专业 ...
- MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化
第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化, ...
随机推荐
- python学习笔记(四)random 、json模块
一.模块简介 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 导入模块 import module #导入模块 f ...
- 基于.net core2.1开发遇到的问题记录以及解决方案
问题1:升级EFCore 到2.1一直报'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuilderFac ...
- cpu与寄存器,内核态与用户态及如何切换
cpu:相当于计算机的大脑负责运算和发送命令: 寄存器:寄存器是cpu当中的一个有限存储部件,cpu从内存调用数据时,寄存器会将从内存调用的数据进行更新在寄存器中以一个字或变量进行存储. 寄存器总共分 ...
- Castle连接多数据库配置
ActiveRecord 的多数据库配置基本沿袭了 NHibernate 的思想,只不过在配置文件结构上作了些调整.1. 采用继承方式,归纳使用同一数据库的类型.比如 A.B.C.D.E 中 A.B连 ...
- Python编程题总结
1 数学篇 1.1 斐波那契数列 def fib(n): if n in (0, 1): return n fib_n1, fib_n2 = 0, 1 for i in range(2, n + 1) ...
- HDU 4746 Mophues(莫比乌斯反演)
题意:求\(1\leq i \leq N,1\leq j \leq M,gcd(i,j)\)的质因子个于等于p的对数. 分析:加上了对质因子个数的限制. 设\(f(d):[gcd(i,j)=d]\) ...
- Spring事务回滚
配置事物: @Configuration /**强制使用cglib代理时就把proxy-target-class设为true.*/ @EnableTransactionManagement(proxy ...
- 【c++ primer, 5e】构造函数 & 拷贝、赋值和析构
[构造函数] 1.构造器就是创建对象时被调用的代码. 2.如果没有自定义构造器,那么编译器将自动合成一个默认的无参构造器. 3.自定义的构造器不允许加const,所创建const的对象只有在构造器代码 ...
- CentOS 6.3编译安装LAMP环境笔记
转载地址:http://www.jb51.net/article/54969.htm 最近抽空在虚拟机上测试成功了LAMP各个最新版本的整合编译安装,算是把之前的博文整合精简,以下内容均在CENTOS ...
- GRUB2 分析 (四)
接上一篇 kernel.img由startup.S以及一堆c文件编译而成.这是一个ELF格式的文件.(其实前面的boot.img. diskboot.img.lzma_decompress.img本来 ...