当前位置:网站首页>[HBZ sharing] how to locate slow queries in cloud database

[HBZ sharing] how to locate slow queries in cloud database

2022-07-06 04:21:00 hbz-

How to configure Mysql The slow query

1.  Query slow log related information :SHOW VARIABLES LIKE '%query%'
2.  Open slow logging file :set global slow_query_log = 'ON'
3.  The file name of the slow log :slow_query_log_file
4.  Configure the slow query time :set global long_query_time = 1   //  Modify slow query time 1s, That is, the query exceeds 1s It is recorded in the slow query log 
5.  Be careful : After modifying the slow query time , Remember to reconnect to take effect 

How to locate slow queries

  1. adopt EXPLAIN Query whether the statement is indexed , If you don't leave the index, it means you have left the full table scan
  2. Be careful : The production environment generally does not allow this , The production environment usually passes through the automation platform , From the visual interface

EXPLAIN How to use ?

  1. Usage mode :EXPLAIN SELECT * FROM test WHERE age = 10

EXPLAIN Medium Type Field meaning

  1. type = all: Direct full table scanning data , Extremely inefficient
  2. type = index: Need to optimize , Although it is also the index , But express Full table scanning 【 Indexes 】 file , Not scanning data
  3. type = range:sql The minimum satisfaction condition is range, Query only rows in a given range , Use an index to select rows
  4. type = ref: Generally, this level is required , When the field is added with a general index , And the condition happens to be this field , That was ref type , For example, use name = ‘hbz’ This condition , and name Created a normal index , At this point ref
  5. type = eq_ref: Through primary key or Unique index Association table The query is eq_ref, Except for const The best result
  6. type = const: High performance level , Index according to the primary key id look for , It's usually const, No need to optimize

Mysql Why should the best left prefix rule be followed in joint indexing ?

  1. The union index will take precedence over the prefix
  2. If the order of association is name, age, position
  3. give an example :
//  The order :name, age, postion --> Because the condition is in the order of joint index , So it triggers ref Index level 
SQL: SELECT name, age FROM people WHERE name = 'hbz' and age = 21 and positon = 'tetst'

//  Only name --> Because the condition is prefixed name, So it triggers ref Index level 
SQL: SELECT name, age FROM people WHERE name = 'hbz'

//  Only name, position --> Because the condition is prefixed name, So it triggers ref Index level 
SQL: SELECT name, age FROM people WHERE name = 'hbz' and positon = 'tetst'

//  Only position,  No, name --> Because there is no prefix name, So the index will not be triggered 
SQL: SELECT name, age FROM people WHERE positon = 'tetst'

//  Yes name, But it is inconsistent with the joint index order  --> There are conditions name Field , So the index will be triggered , Although not in order , however mysql The bottom layer will put name Put optimization ahead 
SQL: SELECT name, age FROM people WHERE positon = 'tetst' and name = 'hbz' 
  1. in summary , The so-called leftmost prefix rule , Namely , If where With name, Then the index must be taken ,name It doesn't matter where the order of , because mysql The bottom layer will be optimized , hold name Put it at the front . But if not name, Other field order pairs of the joint index cannot be indexed . This is called the best prefix rule , The beginning field of the union index must exist .
原网站

版权声明
本文为[hbz-]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060415534519.html