最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分析MySQL中索引引引發(fā)的CPU負(fù)載飆升的問題

 更新時(shí)間:2015年05月07日 16:20:24   作者:葉金榮  
這篇文章主要介紹了分析MySQL中索引引引發(fā)的CPU負(fù)載飆升的問題,文中提到了獨(dú)立索引所帶來(lái)的巨大CPU負(fù)擔(dān),以提醒在MySQL中使用索引要注意CPU負(fù)載的問題,需要的朋友可以參考下

收到一個(gè)mysql服務(wù)器負(fù)載告警,上去一看,load average都飆到280多了,用top一看,CPU跑到了336%,不過IO和內(nèi)存的負(fù)載并不高,根據(jù)經(jīng)驗(yàn),應(yīng)該又是一起索引引起的慘案了。

看下processlist以及slow query情況,發(fā)現(xiàn)有一個(gè)SQL經(jīng)常出現(xiàn),執(zhí)行計(jì)劃中的掃描記錄數(shù)看著還可以,單次執(zhí)行耗時(shí)為0.07s,還不算太大。乍一看,可能不是它引發(fā)的,但出現(xiàn)頻率實(shí)在太高,而且執(zhí)行計(jì)劃看起來(lái)也不夠完美:

mysql> explain SELECT count(1) FROM a , b WHERE a.id = b.video_id and b.state = 1 AND b.column_id = '81'\G

*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: b
type: index_merge
possible_keys: columnid_videoid,column_id,state,video_time_stamp,idx_videoid
key: column_id,state
key_len: 4,4
ref: NULL
rows: 100
Extra: Using intersect(column_id,state); Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: a
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: b.video_id
rows: 1
Extra: Using where; Using index

再看下該表的索引情況:

mysql> show index from b\G

*************************** 1. row ***************************
Table: b
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 167483
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: b
Non_unique: 1
Key_name: column_id
Seq_in_index: 1
Column_name: column_id
Collation: A
Cardinality: 8374
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 3. row ***************************
Table: b
Non_unique: 1
Key_name: state
Seq_in_index: 2
Column_name: state
Collation: A
Cardinality: 5
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:

可以看到執(zhí)行計(jì)劃中,使用的是index merge,效率自然沒有用聯(lián)合索引(也有的叫做覆蓋索引)來(lái)的好了,而且 state 字段的基數(shù)(唯一性)太差,索引效果很差。刪掉兩個(gè)獨(dú)立索引,修改成聯(lián)合看看效果如何:

mysql> show index from b;

*************************** 1. row ***************************
Table: b
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 128151
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: b
Non_unique: 1
Key_name: idx_columnid_state
Seq_in_index: 1
Column_name: column_id
Collation: A
Cardinality: 3203
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 3. row ***************************
Table: b
Non_unique: 1
Key_name: idx_columnid_state
Seq_in_index: 2
Column_name: state
Collation: A
Cardinality: 3463
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:

mysql> explain SELECT count(1) FROM a , b WHERE a.id = b.video_id and b.state = 1 AND b.column_id = '81' \G

*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: b
type: ref
possible_keys: columnid_videoid,idx_videoid,idx_columnid_state
key: columnid_videoid
key_len: 4
ref: const
rows: 199
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: a
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: b.video_id
rows: 1
Extra: Using where; Using index

 可以看到執(zhí)行計(jì)劃變成了只用到了 idx_columnid_state 索引,而且 ref 類型也變成了 const,SQL執(zhí)行耗時(shí)也從0.07s變成了0.00s,相應(yīng)的CPU負(fù)載也從336%突降到了12%不到。

總結(jié)下,從多次歷史經(jīng)驗(yàn)來(lái)看,如果CPU負(fù)載持續(xù)很高,但內(nèi)存和IO都還好的話,這種情況下,首先想到的一定是索引問題,十有八九錯(cuò)不了。

相關(guān)文章

  • MYSQL中 TYPE=MyISAM 錯(cuò)誤的解決方法

    MYSQL中 TYPE=MyISAM 錯(cuò)誤的解決方法

    這篇文章主要介紹了MYSQL中 TYPE=MyISAM 錯(cuò)誤的解決方法,需要的朋友可以參考下
    2014-08-08
  • 如何開啟mysql中的嚴(yán)格模式

    如何開啟mysql中的嚴(yán)格模式

    這篇文章介紹了如何開啟mysql中的嚴(yán)格模式,有需要的朋友可以參考一下
    2013-09-09
  • MySQL Workbench 安裝教程(保姆級(jí))

    MySQL Workbench 安裝教程(保姆級(jí))

    MySQL Workbench 是一款強(qiáng)大的數(shù)據(jù)庫(kù)設(shè)計(jì)和管理工具,本文主要介紹了MySQL Workbench 安裝教程,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • MySQL將多條數(shù)據(jù)合并成一條的完整示例

    MySQL將多條數(shù)據(jù)合并成一條的完整示例

    我們?cè)谑褂胢ysql的時(shí)候常會(huì)遇到合并的需求,下面這篇文章主要給大家介紹了關(guān)于MySQL將多條數(shù)據(jù)合并成一條的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • MAC下MYSQL5.7.17連接不上的問題及解決辦法

    MAC下MYSQL5.7.17連接不上的問題及解決辦法

    MAC下MYSQL5.7.17無(wú)法連接的問題,下載安裝完SQLBench_community 6.3.9后新建MYSQL CONNECTIONS根本連接不上,提示為密碼錯(cuò),什么原因如何解決呢?今天小編給大家解答下
    2017-02-02
  • MySQL 性能優(yōu)化的最佳20多條經(jīng)驗(yàn)分享

    MySQL 性能優(yōu)化的最佳20多條經(jīng)驗(yàn)分享

    今天,數(shù)據(jù)庫(kù)的操作越來(lái)越成為整個(gè)應(yīng)用的性能瓶頸了,這點(diǎn)對(duì)于Web應(yīng)用尤其明顯。關(guān)于數(shù)據(jù)庫(kù)的性能,這并不只是DBA才需要擔(dān)心的事,而這更是我們程序員需要去關(guān)注的事情。
    2010-07-07
  • MySql的事務(wù)使用與示例詳解

    MySql的事務(wù)使用與示例詳解

    這篇文章主要介紹了MySqld的事務(wù)用法,需要的朋友可以參考下
    2014-06-06
  • 圖文詳解Ubuntu下安裝配置Mysql教程

    圖文詳解Ubuntu下安裝配置Mysql教程

    這篇文章主要以圖文結(jié)合的方式詳細(xì)為大家介紹了Ubuntu安裝配置Mysql的實(shí)現(xiàn)步驟,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySQL主從切換的超詳細(xì)步驟

    MySQL主從切換的超詳細(xì)步驟

    一般來(lái)說(shuō)在客戶的生產(chǎn)環(huán)境,每隔一段實(shí)踐就需要進(jìn)行MySQL數(shù)據(jù)庫(kù)的功能演練,主從切換,數(shù)據(jù)同步,數(shù)據(jù)備份等,下面這篇文章主要給大家介紹了關(guān)于MySQL主從切換的超詳細(xì)步驟,需要的朋友可以參考下
    2022-06-06
  • DELETE、TRUNCATE 和 DROP 在MySQL中的區(qū)別及功能使用示例

    DELETE、TRUNCATE 和 DROP 在MySQL中的區(qū)別及功能使用示例

    在MySQL數(shù)據(jù)庫(kù)中,DELETE、TRUNCATE TABLE 和 DROP 這三個(gè)命令分別適用于不同的數(shù)據(jù)刪除需求,它們?cè)诠ぷ髟?、?yīng)用場(chǎng)景以及特性上有所區(qū)別,這篇文章主要介紹了DELETE、TRUNCATE 和 DROP 在MySQL中的區(qū)別及功能使用示例,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

和林格尔县| 郸城县| 澄城县| 象山县| 康马县| 泾阳县| 南木林县| 榆树市| 淮南市| 西丰县| 依安县| 抚松县| 栾城县| 罗甸县| 雷山县| 汉川市| 吉林省| 同仁县| 西宁市| 遂平县| 马公市| 天峨县| 襄垣县| 花垣县| 乌审旗| 丹棱县| 广宗县| 松潘县| 隆德县| 蓬莱市| 喀喇| 安溪县| 洛浦县| 安泽县| 西平县| 大竹县| 皋兰县| 河南省| 桂阳县| 宽甸| 神池县|