1. mysql排序問題 一直以為mysql是按照主鍵排序的,實則排序和主鍵沒有關係(不使用 order by 子句)。 然後從 stackoverflow 上查了一下,找到了以下的回答: 沒有預設的排序順序。即使表具有聚集索引,也不能保證按該順序獲得結果。如果需要特定的順序,則必須使用ORDER ...
1. mysql排序問題
一直以為mysql是按照主鍵排序的,實則排序和主鍵沒有關係(不使用 order by 子句)。
然後從 stackoverflow 上查了一下,找到了以下的回答:
沒有預設的排序順序。即使表具有聚集索引,也不能保證按該順序獲得結果。如果需要特定的順序,則必須使用ORDER BY子句。
2. 線上問題
2.1 場景回顧
定時任務查詢A表數據(8萬多),每次查詢500條,根據業務更新B表數據(15萬),同樣每次查詢500條數據然後更新,大概就這樣的業務。
2.2 問題發現
定時任務結束後,發現B表數據部分更新,執行3遍定時任務數據才會全部更新完。
2.3 排查問題
- 首先想到就是定時任務沒有將B表數據全部查詢出來,然後計算執行多少次算下來確實是15萬。這個方向錯了。
- 在資料庫造點數據,添加日誌將每次查詢出的數據列印出來(5條),迴圈5遍發現B表全部更新,這時直接想不到還有什麼因素引起的。
最後抱著試一試的心態,查詢時候添加order by子句 ,第二天去生產環境看確實好了。