博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)...
阅读量:6111 次
发布时间:2019-06-21

本文共 3777 字,大约阅读时间需要 12 分钟。

mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)

一、总结

一句话总结:索引优化最立竿见影

索引优化:不然有多少行要扫描多少次,1亿行大概是5到10分钟,和列的存量有关系

 

2、show status的作用是什么?

执行频率:mysql>show global status; global表示自数据库启动至今

了解各种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:explain select * from table where id=1000;
desc select:desc select * from table where id=1000;

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_select%";

show status like "%Com_update%";

show status like "%Com_insert%";
show status like "%Com_select%";
show status like "%Com_delete%";

 

5、查innodb自启动以来的影响行数?

show status:show status like "%InnoDB_rows%";

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:explain或desc定位一条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

 

 

 

二、内容在总结中

推荐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文件无法回收空间.

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9837747.html

你可能感兴趣的文章
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>