2015-03-25 41 views
0

有1000多個請求來更新1個或更少1秒內的單個特定記錄。我們如何處理這個問題,每一個請求都是非常重要。 *更新一個特定數據記錄需要1秒鐘的很多請求

假設,1秒= 1000 +的要求來更新只是一個特定的記錄

+0

「每一個請求」如何「非常重要」?所有這些,但最後一個被完全覆蓋並被隨後的那些丟棄。也許最好跟蹤某處的最新值,並定期將其提交給數據庫。我想這在一定程度上取決於讀取/檢索值的頻率。 – eggyal 2015-03-25 12:23:08

+0

每個請求都非常重要,因爲我的應用程序是用於快速購買和銷售產品。每一個請求都來購買一個產品。所以更新的請求將總是再次購買該產品。該產品只有1個數量。因此每個用戶請求都會購買該產品,成爲該產品的所有者。 我有用戶owner_id字段,當有新的請求時,我正在發送消息,說明新用戶已經購買了該產品。 – 2015-03-25 12:32:10

+0

@makashtekar。 。 。而你在說成千上萬的人每秒都在購買同樣的產品?這比在即使繁忙的電子交易市場上處理出價要快。 – 2015-03-25 13:46:23

回答

2

這是一個評論太長。

在現代計算機上,每秒更新1,000次是非常可行的。但是,單條記錄上的很多更新都會造成問題。您可以設計硬件 - 比如使用內存表或固態硬盤 - 可以實現這一點。

但是,通常需要這種類型的結構來保持最新的東西。您可以改爲在表格中插入一個新行,並讓任何需要「當前值」的應用程序獲取最近的行。當然,如果你正在使用這些值並覆蓋它們,那麼就會引發更多的爭用。

+0

每個請求都會更新數據庫中的一條記錄。 – 2015-03-25 12:42:27

+0

@makashtekar這就是爲什麼GL提出另一種設計 – Strawberry 2015-03-25 12:53:29

+0

我認爲問題是與數據庫 這事情發生這樣的假設 ,有10個請求, 當服務器執行請求1,在平均時間2日還有其他請求到來,現在,服務器很聰明,它不會把請求放入隊列中。所以服務器也會開始執行第二個請求。當服務器開始執行2nd時,讓第一個請求進行到30%,第二個請求到10%。現在, 在這裏,每個請求只更新一個特定的行。 因此可以說,當請求達到70%時,它更新數據庫中的記錄,當達到90%時,它將新記錄插入到另一個表中,比如feed。續 – 2015-03-25 12:56:38

相關問題