然後定位是 sql 沒有加排序。加上排序後就 ok了。
這是為什麼呢?當然是因為測試和預發環境沒有做分庫分表啦。
測試環境裡資料庫只有乙個,表也只有乙份,所以列表的資料來自同乙個庫,同乙個表。排序是按資料庫的預設排序。
線上是有分庫,不同資料庫裡的資料,取出來後再做聚合,沒有排序的話是會有亂序的。
1) 排序
資料來自不同的表或庫,首要的影響就是排序。按實現方案的不同,有不同的排序方式 , mycat , shardingsphere 會自動排序。
沒有使用中介軟體的話,就需要自己實現排序。
2)資料查詢聚合
查詢後的資料在聚合時,需要發生些變化。因此需要儘量減少多表關聯的查詢。多表的關聯查詢比較考驗分表的能力。分庫分表沒分好的話,那麼在資料聚合時的效能壓力會比較大。
我們團隊的開發規範是禁止多表查詢,包括子查詢和 join 查詢。
3)事務
資料分庫後,事務是重點。
分布式事務,結合本地事務使用。
當然中介軟體能給你很多便利。
4)id 主鍵
分庫,分表後id 最好用來做主鍵,不要用來排序。排序可以用時間或其他有標識的字段。
id 生成則可以使用id 生成演算法或 id 生成服務。例如:snowflake 是 twitter 開源的分布式 id 生成演算法,結果是乙個 long 型的 id。
5)讀寫分離
準確來說這不是分庫,而是優化。讀寫分離,提高效率。
shtml的乙個小問題
新建body.shtml 其 如下 我組成身體 然後建它引用的兩個 html 頁面,head.html 的 如下 我組成頭部 foot.html 和這個問題無關就不貼了,然後瀏覽器訪問 body.shtml 得到的頁面如下圖 恩,沒毛病!等等,怎麼在 我組成頭部 前面有個空格?檢視響應正文我們 看到...
AudioFlinger 的乙個小問題
audioflinger 類開始的時候定義了 friend class binderservice,為啥要定義乙個這個呢,後面有個注視 for audioflinger 原來binderservice初始化的時候會new audioflinger出來,而audioflinger的建構函式的priva...
乙個JFREECHART的小問題
問題 用柱狀圖顯示某個runcard下所有工藝的預估時間和實際時間 準備 由於第一次使用jfreechart,所以沒有什麼好說的,去官方 找文件,並且把軟體包一併下下來!這一步很順利,唯一的是user guide文件是要錢的,最後在csdn上找到了相關文件!第一步配置好初始環境,按照文件上引入jar...