mysql數據庫優化課程---15、mysql優化步驟(mysql中最常用最立竿見影的優化是什么)


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文件無法回收空間.

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM