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

  • 时间:
  • 浏览:0
  • 来源:大发快3APP下载—大发时时彩登录地址

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

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

  `category_id` int(10) unsigned NOT NULL,

  `category_id` int(10) unsigned NOT NULL COMMENT

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

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

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

 where (doc_title = 'T2??')                                           | 

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

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

) ENGINE=InnoDB AUTO_INCREMENT=3432002 DEFAULT CHARSET=utf8 | 

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

让上述的程序运行池池应用走索引,数据库的负载恢复正常,性能恢复正常。 

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

 where (doc_title = '??')                                             | 

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

  PRIMARY KEY  (`id`),

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

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

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

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

 where (doc_title = '???')                                            | 

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

可能不还可不可否发现也有全表查询,随后是高并发的访问上述一句话。

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

查看具体的十根SQL一句话的执行计划,如下:

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

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

  `category_show` tinyint(1) unsigned NOT NULL,

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

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

| 3634782000 | apps_read     | 192.168.1.113:489200 | apps       | Query       |       1 | Sending data                                                   | select * from category_doc_info

  `category_show` tinyint(1) unsigned NOT NULL COMMENT

 where (doc_title = '???')                                            | 

| category_doc_info | CREATE TABLE `category_doc_info` (

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

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

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

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

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

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

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

查看程序运行池池。通过猜测推理,定位了某些select一句话

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

 where (doc_title = '???')                                            | 

| category_doc_info | CREATE TABLE `category_doc_info` (

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

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

  `doc_title` varchar(255) NOT NULL',

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

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

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

) ENGINE=InnoDB AUTO_INCREMENT=3432002 DEFAULT CHARSET=utf8 |

前言:过去的笔记派发而得,未免丢失,发布当事人博客。[2012年的资料笔记]

  PRIMARY KEY  (`id`),

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

经过分析,修改生产环境的表特性,如下:

查看此表的数据库表特性如下:

  `doc_title` varchar(255) NOT NULL COMMENT 

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