线上MySQL数据库高负载的解决思路

  • 时间:
  • 浏览:3

) ENGINE=InnoDB AUTO_INCREMENT=34360 2 DEFAULT CHARSET=utf8 | 

 where (doc_title = '??????')                                         | 

  KEY `idx_category_title` (`doc_title`)                            //新上加的表索引

 where (doc_title = '??')                                             | 

 where (doc_title = '????????')                                       | 

) ENGINE=InnoDB AUTO_INCREMENT=34360 2 DEFAULT CHARSET=utf8 |

| 363478613 | apps_read     | 192.168.1.113:48971 | apps       | Query       |       0 | Sending data                                                   | select * from category_doc_info

---------------------------------------------------------------------------------------------------------------------------------------------------------

查看此表的数据库表价值形式如下:

 where (doc_title = '????')                                           | 

经过分析,修改生产环境的表价值形式,如下:

场景:数据库的负载飙升,CPU高达99%。

 where (doc_title = '???')                                            | 

  `category_order` tinyint(1) unsigned NOT NULL default '0' 

 where (doc_title = '???????')                                        | 

都里能发现全部时会全表查询,就让 是高并发的访问上述励志的话 。

| 363478460 | apps_read     | 192.168.1.113:48948 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

  `category_id` int(10) unsigned NOT NULL,

  `category_Coordinate` tinyint(1) unsigned NOT NULL default '2',

 where (doc_title = '??????')                                         | 

| 36347860 0 | apps_read     | 192.168.1.113:48960 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

| id | select_type | table             | type | possible_keys | key  | key_len | ref  | rows   | Extra       |

+----+-------------+-------------------+------+---------------+------+---------+------+--------+-------------+

  PRIMARY KEY  (`id`),

| 363478434 | apps_read     | 192.168.1.113:48952 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

mysql> explain  select * from category_doc_info where (doc_title = '独出新裁');

查看应用应用多多线程 。通过猜测推理,定位了某些select励志的话

363478427 | apps_read     | 192.168.1.113:48945 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

 where (doc_title = '?????????')                                      | 

  `category_show` tinyint(1) unsigned NOT NULL COMMENT

让上述的应用多多线程 应用走索引,数据库的负载恢复正常,性能恢复正常。 

  `category_order` tinyint(1) unsigned NOT NULL default '0',

| 363478437 | apps_read     | 192.168.1.113:48955 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

查看具体的每根SQL励志的话 的执行计划,如下:

---------------------------------------------------------------------------------------------------------------------------------------------------------

| 363478535 | apps_read     | 192.168.1.113:48965 | apps       | Query       |       0 | Sending data                                                   | select * from category_doc_info

  PRIMARY KEY  (`id`),

| 363478660 | apps_read     | 192.168.1.113:48975 | apps       | Query       |       0 | Sending data                                                   | select *

  `category_show` tinyint(1) unsigned NOT NULL,

  `doc_title` varchar(255) NOT NULL',

| 363478518 | apps_read     | 192.168.1.113:48964 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

  `category_id` int(10) unsigned NOT NULL COMMENT

  UNIQUE KEY `INDEX_SEARCH` (`category_id`,`doc_title`),

| 363478511 | apps_read     | 192.168.1.113:48963 | apps       | Query       |       0 | Sending data                                                   | select * from category_doc_info

 where (doc_title = '???')                                            | 

+----+-------------+-------------------+------+---------------+------+---------+------+--------+-------------+

  `id` int(10) unsigned NOT NULL auto_increment,

前言:过去的笔记分派而得,未免丢失,发布另一方博客。[2012年的资料笔记]

 where (doc_title = '???')                                            | 

| category_doc_info | CREATE TABLE `category_doc_info` (

  `doc_title` varchar(255) NOT NULL COMMENT 

 where (doc_title = 'T2??')                                           | 

  `category_Coordinate` tinyint(1) unsigned NOT NULL default '2' 

  `id` int(10) unsigned NOT NULL auto_increment,

|  1 | SIMPLE      | category_doc_info | ALL  | NULL          | NULL | NULL    | NULL | 232717 | Using where | 

| category_doc_info | CREATE TABLE `category_doc_info` (

  UNIQUE KEY `INDEX_SEARCH` (`category_id`,`doc_title`),     

| 363478540 | apps_read     | 192.168.1.113:48968 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

+----+-------------+-------------------+------+---------------+------+---------+------+--------+-------------+

| 363478462 | apps_read     | 192.168.1.113:48957 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info