Mysql

可以在同一張表中有“查看次數”列嗎?

  • December 5, 2015

假設我有一個類似於 YouTube 的網站,我在其中儲存和顯示每個影片的“觀看次數”。如果我將視圖計數列儲存在與實際視圖表相同的表中也沒關係 - 即定義影片資訊的行?或者我應該有一個單獨的表來儲存觀看計數資訊 - 即有兩個表,一個儲存影片資訊,例如影片 ID、標題、描述,另一個表只儲存計數,例如具有列:ID、 video_id,view_count

我問這個的原因是因為很明顯,視圖計數列多年來需要更新很多次——比如說 100 萬次視圖。我想知道當歸結為其他使用者閱讀主影片時,在同一個數據庫中具有“觀看次數”是否會產生負面影響,因為該列需要被鎖定以在一天中多次寫入觀看次數。因為影片表的內容幾乎是靜態的,而且幾乎只是讀取。

謝謝,

通常最好“view counts”、“likes”、“hits”等設置一個單獨的表。這個額外的表將只有 id 和 counter。id 將匹配主表。新表中缺少的行意味著 0(或者您可以確保添加一行 0)。然後LEFT JOIN在需要主要資訊和計數時使用(或加入)。不需要自動增量;只是PRIMARY KEY(video_id)

部分問題是避免由於不斷碰撞計數器而不接觸該表的其他活動而導致的鎖/死鎖。

如果您每天獲得數百萬的瀏覽量,那麼我們需要討論如何防止它自己絆倒。

引用自:https://dba.stackexchange.com/questions/119785