91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

台山市| 包头市| 姜堰市| 犍为县| 鹤山市| 蒙城县| 科技| 神农架林区| 辉县市| 塔河县| 旬邑县| 抚顺县| 绥德县| 普兰店市| 临武县| 金昌市| 长兴县| 普格县| 古浪县| 天气| 康平县| 汤原县| 丰县| 远安县| 江山市| 西藏| 合作市| 儋州市| 松江区| 富民县| 肥西县| 肃南| 威信县| 德安县| 辽中县| 嵩明县| 乌兰察布市| 乌拉特中旗| 宜宾县| 昌江| 高密市|