MySQL solves the stress problem of online database server by adding an index

Source: Internet
Author: User
Tags memory usage cpu usage

Yesterday on-line app feedback night19:30-19:43 and 20:13 to 20:21 two time periods everyone, including our own classrooms, can't get in,

classroom b Set Unable to login, homepage inaccessible, More than 10 teachers and students have received feedback on not going to the classroom.

By monitoring the database server's CPU usage, load,io, memory usage, swap remainder, etc., when the problem occurred, the database was found to be under a very high pressure,

Number of database connections:


Database Slow query also appears a lot

Look at the slow query log and find that a SQL frequently has a long cut execution time in the slow query log

# [email protected]: cms[cms] @  [172.17.43.24]# query_time: 10.252490   Lock_time: 0.000052 Rows_sent: 1  Rows_examined: 2345869SET  Timestamp=1522065887;select participan0_.id as id19_, participan0_.conferenceid as  conferen2_19_, participan0_.name as name19_, participan0_.phone as phone19 _, participan0_.pin as pin19_, participan0_.email as email19_, participan0_ . mobile as mobile19_, participan0_.valid as valid19_, participan0_.userdefine1  as userdefine9_19_, participan0_.userdefine2 as userdefine10_19_, participan0_. userdefine3 as userdefine11_19_, participan0_.userdefine4 as userdefine12_19_  from participant participan0_ where  (participan0_.conferenceid=2680447 ) and ( Participan0_.pin= ' 1219 '  );# [email protected]: cms[cms] @  [172.17.43.25]# query_time:  10.297055  lock_time: 0.000050 rows_sent: 1  rows_examined: 2345869set  timestamp=1522065887;select participan0_.id as id19_, participan0_.conferenceid  as conferen2_19_, participan0_.name as name19_, participan0_.phone as  phone19_, participan0_.pin as pin19_, participan0_.email as email19_,  participan0_.mobile as mobile19_, participan0_.valid as valid19_,  Participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as userdefine10 _19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4 as  userdefine12_19_ from participant participan0_ where  (participan0_.conferenceid= 2697493 ) and (participan0_.pin= ' 1492 '  );# [email protected]: cms[cms] @  [172.17.43.25]# query_time:  10.319839  lock_time: 0.000048 rows_sent: 1  rows_examined: 2345869set  timestamp=1522065887;select participan0_.id as id19_, participan0_.conferenceid  as conferen2_19_, participan0_.name as name19_, participan0_.phone as  phone19_, participan0_.pin as pin19_, participan0_.email as email19_,  participan0_.mobile as mobile19_, participan0_.valid as valid19_,  Participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as userdefine10 _19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4 as  userdefine12_19_ from participant participan0_ where  (participan0_.conferenceid= 2680355 ) and (participan0_.pin= ' 9590 '  );# [email protected]: cms[cms] @  [172.17.43.24]# query_time:  10.163372  lock_time: 0.000063 rows_sent: 1  rows_examined: 2345872set  timestamp=1522065887;select participan0_.id as id19_, participan0_.conferenceid  as conferen2_19_, participan0_.name as name19_, participan0_.phone as  phone19_, participan0_.pin as pin19_, participan0_.email as email19_,  participan0_.mobile as mobile19_, participan0_.valid as valid19_,  Participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as userdefine10 _19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4 as  userdefine12_19_ from participant participan0_ where  (participan0_.conferenceid= 2731041 ) and (participan0_.pin= ' 1506 ' );# [email protected]: cms[cms] @  [172.17.43.24]# query_time:  9.950549  lock_time: 0.000073 rows_sent: 1  rows_examined: 2345881set  timestamp=1522065887;select participan0_.id as id19_, participan0_.conferenceid  as conferen2_19_, participan0_.name as name19_, participan0_.phone as  phone19_, participan0_.pin as pin19_, participan0_.email as email19_,  participan0_.mobile as mobile19_, participan0_.valid as valid19_,  Participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as userdefine10 _19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4 as  userdefine12_19_ from participant participan0_ where  (participan0_.conferenceid= 2682013 ) and (participan0_.pin= ' 6086'  );# [email protected]: cms[cms] @  [172.17.43.25]# query_time:  9.992145  lock_time: 0.000051 rows_sent: 1  rows_examined: 2345879set  timestamp=1522065887;select participan0_.id as id19_, participan0_.conferenceid  as conferen2_19_, participan0_.name as name19_, participan0_.phone as  phone19_, participan0_.pin as pin19_, participan0_.email as email19_,  participan0_.mobile as mobile19_, participan0_.valid as valid19_,  Participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as userdefine10 _19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4 as  userdefine12_19_ from participant participan0_ where  (participan0_.conferenceid= 2697493 ) and (participan0_.pin= ' 1103 '  ); 


View the execution plan of the SQL found a full table scan, scanned more than 2 million rows of data;

Mysql> explain select participan0_.id as id19_, participan0_.conferenceid  as conferen2_19_, participan0_.name as name19_, participan0_.phone as  phone19_, participan0_.pin as pin19_, participan0_.email as email19_,  participan0_.mobile as mobile19_, participan0_.valid as valid19_,   Participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as userdefine10 _19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4 as  userdefine12_19_ from participant participan0_ where  (participan0_.conferenceid= 2724963 ) and (participan0_.pin= ' 5476 '  ), +----+-------------+--------------+------+---------------+--- ---+---------+------+---------+-------------+| id | select_type | table         | type | possible_keys | key  | key_len | ref   | rows    | extra       |+----+-------------+ --------------+------+---------------+------+---------+------+---------+-------------+|  1 |  simple      | participan0_ | all  | null           | NULL | NULL     | null | 2042005 | using where |+----+-------------+--------------+-- ----+---------------+------+---------+------+---------+-------------+1 row in set  (0.02  SEC)


There is no index on the column that finds the table where condition:

mysql> show index from participant;+-------------+------------+----------+------------- -+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+|  Table       | non_unique | key_name | seq_in_index  | column_name | collation | cardinality | sub_part | packed  | null | index_type | comment | index_comment |+-------------+-- ----------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------- -----+---------+---------------+| participant |           0 | PRIMARY  |             1 | id          | A     &nbSp;    |     2384122 |     null  | NULL   |      | BTREE       |         |                |+-------------+------------+----------+--------------+------- ------+-----------+-------------+----------+--------+------+------------+---------+---------------+1 row  in set  (0.00 SEC)

and after communication, add the following index to the table:

mysql> alter  table   ' participant '    ADD  INDEX index_conferenceid  (' Conferenceid ');  query ok, 0 rows  affected  (9.16 sec) records: 0  duplicates: 0  warnings:  0mysql> alter  table   ' participant '   add  index index_pin   (' pin '); query ok, 0 rows affected  (6.96 sec) records: 0  duplicates:  0  warnings: 0 

View the execution plan for the SQL again:

mysql>  explain select participan0_.id as id19_, participan0_. Conferenceid as conferen2_19_, participan0_.name as name19_, participan0_.phone  as phone19_, participan0_.pin as pin19_, participan0_.email as  Email19_, participan0_.mobile as mobile19_, participan0_.valid as valid19_,  participan0_.userdefine1 as userdefine9_19_, participan0_.userdefine2 as  Userdefine10_19_, participan0_.userdefine3 as userdefine11_19_, participan0_.userdefine4  as userdefine12_19_ from participant participan0_ where  (participan0_. conferenceid=2724963 ) and (participan0_.pin= ' 5476 '  ) +----+-------------+--------------+------------- +------------------------------+------------------------------+---------+------+------+------------------------ ------------------------------------+| id | select_type | table        | type         | possible_keys                 | key                           |  key_len | ref  | rows | Extra                                                         |+----+-------------+--------------+-- -----------+------------------------------+------------------------------+---------+------+------+------------- -----------------------------------------------+|  1 | simple      |  Participan0_ | index_merge | index_conferenceid,index_pin | index_conferenceid, index_pin | 5,7     | null |    1 |  using intersect (Index_conferenceid,index_pin)  using where |+----+-------------+---- ----------+-------------+------------------------------+------------------------------+---------+------+------+ ------------------------------------------------------------+1 row in set  (0.01 SEC)



-----------------------------I'm a split line-----------------------

Wait until the night is about a lot more time to observe the database load and slow query log

MySQL solves the stress problem of online database server by adding an index

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.