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

MySQL延遲關聯(lián)性能優(yōu)化方法

 更新時間:2015年05月29日 11:23:54   投稿:junjie  
這篇文章主要介紹了MySQL延遲關聯(lián)性能優(yōu)化方法,本文講解了延遲關聯(lián)的背景、延遲關聯(lián)的分析、延遲關聯(lián)的解決等內(nèi)容,需要的朋友可以參考下

【背景】

  某業(yè)務數(shù)據(jù)庫load 報警異常,cpu usr 達到30-40 ,居高不下。使用工具查看數(shù)據(jù)庫正在執(zhí)行的sql ,排在前面的大部分是:

復制代碼 代碼如下:

SELECT id, cu_id, name, info, biz_type, gmt_create, gmt_modified,start_time, end_time, market_type, back_leaf_category,item_status,picuture_url FROM relation where biz_type ='0' AND end_time >='2014-05-29' ORDER BY id asc LIMIT 149420 ,20;

表的數(shù)據(jù)量大致有36w左右,該sql是一個非常典型的排序+分頁查詢:order by col limit N,OFFSET M , MySQL 執(zhí)行此類sql時需要先掃描到N行,然后再去取 M行。對于此類大數(shù)據(jù)量的排序操作,取前面少數(shù)幾行數(shù)據(jù)會很快,但是越靠后,sql的性能就會越差,因為N越大,MySQL 需要掃描不需要的數(shù)據(jù)然后在丟掉,這樣耗費大量的時間。

【分析】

針對limit 優(yōu)化有很多種方式,
1 前端加緩存,減少落到庫的查詢操作
2 優(yōu)化SQL
3 使用書簽方式 ,記錄上次查詢最新/大的id值,向后追溯 M行記錄。
4 使用Sphinx 搜索優(yōu)化。
對于第二種方式 我們推薦使用"延遲關聯(lián)"的方法來優(yōu)化排序操作,何謂"延遲關聯(lián)" :通過使用覆蓋索引查詢返回需要的主鍵,再根據(jù)主鍵關聯(lián)原表獲得需要的數(shù)據(jù)。

【解決】

根據(jù)延遲關聯(lián)的思路,修改SQL 如下:

優(yōu)化前

復制代碼 代碼如下:

root@xxx 12:33:48>explain SELECT id, cu_id, name, info, biz_type, gmt_create, gmt_modified,start_time, end_time, market_type, back_leaf_category,item_status,picuture_url FROM relation where biz_type =\'0\' AND end_time >=\'2014-05-29\' ORDER BY id asc LIMIT 149420 ,20;
+----+-------------+-------------+-------+---------------+-------------+---------+------+--------+-----------------------------+
| id | select_type | table       | type  | possible_keys | key         | key_len | ref  | rows   | Extra                       |
+----+-------------+-------------+-------+---------------+-------------+---------+------+--------+-----------------------------+
| 1  | SIMPLE      | relation    | range | ind_endtime   | ind_endtime | 9       | NULL | 349622 | Using where; Using filesort |
+----+-------------+-------------+-------+---------------+-------------+---------+------+--------+-----------------------------+
1 row in set (0.00 sec)

其執(zhí)行時間:

優(yōu)化后:

復制代碼 代碼如下:

SELECT a.* FROM relation a, (select id from relation where biz_type ='0' AND end_time >='2014-05-29' ORDER BY id asc LIMIT 149420 ,20 ) b where a.id=b.id

復制代碼 代碼如下:

root@xxx 12:33:43>explain SELECT a.* FROM relation a, (select id from relation where biz_type ='0' AND end_time >='2014-05-29' ORDER BY id asc LIMIT 149420 ,20 ) b where a.id=b.id;
+----+-------------+-------------+--------+---------------+---------+---------+------+--------+-------+
| id | select_type | table       | type   | possible_keys | key     | key_len | ref  | rows   | Extra |
+----+-------------+-------------+--------+---------------+---------+---------+------+--------+-------+
| 1  | PRIMARY     | <derived2>  | ALL    | NULL          | NULL    | NULL    | NULL | 20     |       |
| 1  | PRIMARY     | a           | eq_ref | PRIMARY       | PRIMARY | 8       | b.id | 1      |       |
| 2  | DERIVED     | relation    | index  | ind_endtime   | PRIMARY | 8       | NULL | 733552 |       |
+----+-------------+-------------+--------+---------------+---------+---------+------+--------+-------+
3 rows in set (0.36 sec)

執(zhí)行時間:

優(yōu)化后 執(zhí)行時間 為原來的1/3 。

相關文章

  • mysql序號rownum行號實現(xiàn)方式

    mysql序號rownum行號實現(xiàn)方式

    這篇文章主要介紹了mysql序號rownum行號實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • SQL替換字符串值的5種常用方法

    SQL替換字符串值的5種常用方法

    這篇文章主要給大家介紹了關于SQL替換字符串值的5種常用方法,常用SQL的朋友應該知道,SQL中一般都會提供一些字符串處理函數(shù),需要的朋友可以參考下
    2023-08-08
  • Mysql中日期和時間函數(shù)應用不用求人

    Mysql中日期和時間函數(shù)應用不用求人

    Mysql中日期和時間函數(shù)應用不用求人,學習mysql的朋友可以參考下。
    2010-11-11
  • 深入理解mysql事務與存儲引擎

    深入理解mysql事務與存儲引擎

    本文主要介紹了mysql事務與存儲引擎,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 快速解決mysql導出scv文件亂碼、躥行的問題

    快速解決mysql導出scv文件亂碼、躥行的問題

    這篇文章主要介紹了快速解決mysql導出scv文件亂碼、躥行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • sql模式設置引起的問題解決辦法

    sql模式設置引起的問題解決辦法

    這篇文章主要介紹了sql模式設置引起的問題解決辦法,文章圍繞主題展開詳細內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • mysql 5.7.16 winx64安裝配置方法圖文教程

    mysql 5.7.16 winx64安裝配置方法圖文教程

    這篇文章主要為大家分享了mysql 5.7.16winx64安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-11-11
  • mysql之動態(tài)增添字段實現(xiàn)方式

    mysql之動態(tài)增添字段實現(xiàn)方式

    這篇文章主要介紹了mysql之動態(tài)增添字段實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 刪除mysql服務的具體方法

    刪除mysql服務的具體方法

    在本篇文章里小編給各位分享了是關于刪除mysql服務的具體方法,需要的朋友們可以學習下。
    2020-07-07
  • MySQL 之壓力測試工具的使用方法

    MySQL 之壓力測試工具的使用方法

    這篇文章主要介紹了MySQL 之壓力測試工具的使用方法,mysqlslap是mysql自帶的基準測試工具,該工具查詢數(shù)據(jù),語法簡單,靈活容易使用,感興趣的可以了解一下
    2020-05-05

最新評論

渝北区| 上思县| 于都县| 尼玛县| 新疆| 台中市| 绥化市| 西乌| 萝北县| 和林格尔县| 邛崃市| 中牟县| 海盐县| 酒泉市| 玉龙| 湘乡市| 会同县| 资阳市| 来安县| 湘潭市| 巧家县| 武陟县| 雅江县| 三门峡市| 安宁市| 达拉特旗| 普兰县| 黑龙江省| 偏关县| 广丰县| 津市市| 临湘市| 麻城市| 分宜县| 襄垣县| 玉树县| 霞浦县| 惠安县| 巫溪县| 邳州市| 墨竹工卡县|