亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL分頁優化是什么

發布時間:2021-10-20 16:12:50 來源:億速云 閱讀:131 作者:柒染 欄目:大數據

MySQL分頁優化是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

簽到提醒推送之MySQL分頁優化

需求背景

簽到提醒功能,每天18點推送服務通知提醒用戶簽到。推送對象為昨日簽到,截止推送前未簽到的用戶。

開發過程

數據庫表結構:

CREATE TABLE `cultivate_game_signin` (
  `id` bigint(20) NOT NULL COMMENT '主鍵',
  `uid` bigint(20) DEFAULT NULL COMMENT '用戶id',
  `signin_time` bigint(20) DEFAULT NULL COMMENT '簽到時間',
  `continue_times` int(11) DEFAULT NULL COMMENT '連續簽到次數',
  `singnin_count` int(11) DEFAULT NULL COMMENT '簽到次數',
  `activity_id` bigint(20) DEFAULT NULL COMMENT '活動id',
  `remind_status` tinyint(4) DEFAULT '0' COMMENT '0打開簽到提醒,1關閉簽到提醒',
  PRIMARY KEY (`id`),
  KEY `idx_uid` (`uid`),
  KEY `idx_time` (`signin_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活動簽到表'

第一版開發:

select * from cultivate_game_signin where signin_time betweent '2018-1-13 00:00:00' and '2018-1-14 00:00:00' limit 0 , 100;

在定時任務中執行,直至遍歷完所有數據。 第一版上線后基本實現了需求。但是在12月,一次觀察job發現任務竟然執行了9個小時,執行到的翌日凌晨。在pushcode 防打擾策略中其實21點后的推送已經無效了,用戶也不能查收。沒有意義且浪費了資源。

第二版優化:

根據問題排查,由于用戶量激增,目標推送用戶達到了60W。為了增加用戶留存,保住新增用戶,所以推送優化箭在弦上。

優化過程

優化主要采取了兩點:

  • 線程池優化 設置合理的線程數,在保證服務穩定的情況下推送完畢。這里不多贅述。

  • 推送接口優化 單單使用MySQL分頁不必多說,偏移量持續增大勢必造成接口性能下降,無法滿足需求。

Limit分頁優化:

推薦分頁: 分頁方式一: Select * from table WHERE id>=23423 limit 11; #10+1 (每頁10條) Select * from table WHERE id>=23434 limit 11; 分頁方式二: Select * from table WHERE id >= ( select id from table limit 10000,1 ) limit 10; 分頁方式三: Select * from table INNER JOIN (SELECT id from table limit 10000,10) USING(id) 分頁方式四: 程序取ID: Select id from table limit 10000,10; Select * from table WHERE ID in(123,456…);

不難看出,優化主要是在解決偏移量過大。

explain select * from cultivate_game_signin where signin_time between 0 and 1540443740869  limit 99,1;
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEcultivate_game_signinrangeidx_timeidx_time9NULL129940Using where

掃描數量會越來越大造成性能衰減。所以,在推送優化中使用了id,前提是id有序。

改進后的SQL:

select * from cultivate_game_signin where id > id signin_time betweent begin_time and end_time limit 100;

將id作為參數,作為下個執行語句的查詢條件。避免了大偏移量的產生。效果也是立竿見影,30分鐘內可以推送完所有目標用戶。

分頁的指導思想,查詢命中索引并且避免大的偏移量。

關于MySQL分頁優化是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓬莱市| 义马市| 自贡市| 武宁县| 基隆市| 六枝特区| 揭西县| 赤壁市| 伊金霍洛旗| 汉中市| 蕉岭县| 长丰县| 卓尼县| 蒙城县| 大关县| 宜兰县| 台州市| 商河县| 临高县| 开远市| 彭山县| 宝鸡市| 新宾| 达日县| 民丰县| 彰化市| 保亭| 镇雄县| 琼海市| 繁昌县| 榆中县| 灌云县| 华池县| 北流市| 灯塔市| 永城市| 建宁县| 民丰县| 织金县| 凌云县| 阜阳市|