一般文章分頁都是 limit 20 條資料左右,我不知道為什麼,limit 最大的效能瓶頸在哪裡,最大的值在哪裡,一次性取5000條有沒有問題,10000條呢,到底多少合適,好不好,每次分頁取20條太麻煩了。
一直以來我有一個問題,困惑:
1:什麼時候要分頁,
2:什麼時候要有limit限制,
3:什麼時候可以直接痛快的擷取全部資料
比如餓了麼餐廳頁面,餐廳可能有很多分類,每個分類下面還有很多菜品,那麼這個時候它是直接擷取全部資料嗎,沒有limit限制嗎?
假使分類數量不多,不需要limit可以痛快的全部取出,但是每個分類下面的菜品數量可能有點多(打個比方,我也不知道有多少)那麼取每個下面的菜品時需要使用limit嗎,如果要limit那麼取多少條呢,如果這樣做那麼不是可能會有個“點擊查看更多餐品嗎”,那不要做個AJAX取餘下的資料啊,取餘下的資料該怎麼取呢?
大概概念是這樣,但是我還是很暈,希望大神結合我說的執行個體指點一下困惑,謝謝了!
回複內容:
一般文章分頁都是 limit 20 條資料左右,我不知道為什麼,limit 最大的效能瓶頸在哪裡,最大的值在哪裡,一次性取5000條有沒有問題,10000條呢,到底多少合適,好不好,每次分頁取20條太麻煩了。
一直以來我有一個問題,困惑:
1:什麼時候要分頁,
2:什麼時候要有limit限制,
3:什麼時候可以直接痛快的擷取全部資料
比如餓了麼餐廳頁面,餐廳可能有很多分類,每個分類下面還有很多菜品,那麼這個時候它是直接擷取全部資料嗎,沒有limit限制嗎?
假使分類數量不多,不需要limit可以痛快的全部取出,但是每個分類下面的菜品數量可能有點多(打個比方,我也不知道有多少)那麼取每個下面的菜品時需要使用limit嗎,如果要limit那麼取多少條呢,如果這樣做那麼不是可能會有個“點擊查看更多餐品嗎”,那不要做個AJAX取餘下的資料啊,取餘下的資料該怎麼取呢?
大概概念是這樣,但是我還是很暈,希望大神結合我說的執行個體指點一下困惑,謝謝了!
什麼時候要分頁?
當表中資料量大的時候就應該考慮分頁
什麼時候要有limit限制?
同上
什麼時候可以直接痛快的擷取全部資料?
當表中資料量不大的時候可以一次取所有資料
讀取20條資料和讀取5000條乃至更多的資料,效能上肯定是20條更快的。而且這個快,不光體現在資料庫上,還體現在網路上的傳輸過程中(資料量小傳得當然快),頁面的渲染中(資料量少展示頁面就更快)。另外,即使你一次展示5000條資料,但使用者絕大多數情況下也就能看到二三十條,並不會將5000條全看完,所以多餘的資料也就是浪費的。
如果是小型元素(比如只有文字,或者資訊量較少的元素),單頁量設定在100以下。如果是大型元素(資訊量大,帶圖文一類的),單頁量最好控制在30以下。
夠用就好。取多了浪費。
使用者只看20條,你取21條都多餘。
返回幾百條上千條甚至全部,那影響就大了。
首先資料庫查詢慢,佔用更多的伺服器資源,查出結果後傳輸慢,佔用更多的頻寬資源,其次渲染慢,瀏覽器也會崩潰。
不用想太多了,這個只是產品定下來的而已,通常最多就20~30條,展示多少條完全是看美觀而已。當然,你說的 什麼時候可以直接痛快的擷取全部資料。這個情況是絕對不可能存在的,怎麼可能會擷取全部的資料呢,如果文章量達到了千萬級怎麼辦,這取出來也太久了吧。
分頁20,而為什麼不是5000,10000,主要還是一樓說的,用不到,用不到,用不到那麼多
資料庫一般有個配置可以配置你每次查詢請求返回資料的大小上限,一般情況下,是不會超出這個上限的.只要不超出這個上限,其實怎麼拿都是可以的.但是,一般採用按需擷取原則,你原則上沒有必要拿這麼多就不需要拿這麼多,畢竟拿得多,你對於網卡的頻寬是有佔用的,我舉例,假設你是千M網卡,limit 1W消耗的頻寬是10K,那麼從網卡頻寬的角度來說(先不說資料庫效能問題)你能夠極限的QPS也就是1000M/10K=10W QPS.當然如果你網卡可以上萬兆網卡.另外對於使用者端來說,每次請求擷取更多的資料,實際上也是降低了請求到達的速度.
網路傳輸消耗頻寬
網路傳輸消耗頻寬
網路傳輸消耗頻寬
重要事情說3遍