一個項目,某段數據順序出現異常導致運行異常。早期沒有問題,用開發版本也沒有問題,同樣的查詢排序語句在mysql客戶端執行也沒有問題。
這個排序不一致問題,這里記錄下。
如下查詢語句,根據‘order’字段 降序 排序的。
SELECT * FROM test.test_only ORDER BY `order` DESC
注:上圖非mysql客戶端正式運行結果,為方便說明的截圖。這個現象在項目中容易出現,但在客戶端中運行多次也沒出現。
問題:如上圖,同樣的sql查詢排序,得到的結果不一致。
原因:從圖中也沒清晰看出,兩次結果也是符合排序語句的,只是用於排序的字段存在重復,導致重復的部分存在隨機排序。
解決:在加一層排序即可。如:SELECT * FROM test.test_only ORDER BY `order` DESC,id DESC
延申:如上備注,這個問題在項目中容易出現,在mysql客戶端中沒有出現。
比較多的認為是緩存的原因:和數據庫系統算法有關。這邊的項目(禪道)情況 也存在與之相關,項目在開發環境中沒有問題,在生產環境中出現該問題。在生產環境中,早期也沒有問題。數據量變大后出現問題了,生產環境配置不高,因為系統僅公司內部使用。