簡體   English   中英

Mysql:表中有數百萬條記錄,每天有1000萬條更新

[英]Mysql: Millions of Records in table with 10 million updates in a day

我們有一種情況,我們每天必須在一張記錄高達146000000的表上記錄數百萬個狀態更新。我不確定MySQL是否能做到這一點。 這是完整的場景:

  1. 在第一天,Table將擁有100萬條記錄,最終將在兩年內增長到1.5億條記錄。
  2. 在給定的時間點,最多可以保存140萬條記錄,即即使我們擁有1.5億條記錄也是如此。
  3. 當我們希望歸檔2年以上的數據時,記錄的增長不應超過1.5億。
  4. 140萬條實時記錄將獲得其狀態的更新,我們需要在同一表中對其進行更新。 根據這140萬條記錄,每天最多可以更新2000萬條記錄。
  5. 如果它們在表中進行了如此多的更新,我可以在表上沒有任何外鍵約束。

我們正在使用MySQL 5.5。

我的關注和問題是-MySQL是否能夠開箱即用地滿足我們的要求(我感覺當以上述速度進行更新時,我們可能會看到死鎖)? 如果無法解決問題,那么我們應該怎么做才能構建以上所述的內容?

提前致謝,

我建議您必須使用任何nosql數據庫。像cassandra相比,與mysql /相比,性能會提高30%到40%

可以將表拆分成多個表嗎? 例如,每小時/每天/每周/每月一張桌子

如果是,則可以為所需的時間間隔創建一個單獨的表,並分別存儲更新。

或者,您可以嘗試通過另一個符號(例如,按客戶)將數據分成多個表。

沒有更多信息,很難提出建議。

您是否要從表中收集一些統計信息?

市場上有很多針對您所擁有的相同用例的nosql數據庫。

您可以通過此方法解決所有問題。

天啊....

我仍然記得在2002年,當我們替換Oracle數據庫時,因為它的要求是每天插入/更新5000萬條記錄,並將這些記錄保存至少7年,同時需要進行報告/監視;-)(一個用於移動網絡的NMS應用程序)

在說不上NoSQL或NewSQL或類似的東西之前,先了解一下大局將很有幫助。 你外匯嗎 需要實時報告? 復制? 關鍵任務應用程序所需的在線備份和其他功能?

您的團隊在DBMS技術方面的經驗如何? 除MySQL外,您是否從事其他工作?

你提到僵局了嗎? 你現在看到他們了嗎? 我想說,雖然不想傷害任何人的感覺,但死鎖主要是由於不良的設計! 從排隊,事務封裝,事務監視器,樂觀並發等開始,有100種方法來避免或迅速解決死鎖。

對我而言,您提供的數字並不高,但是通過設計您正在使用的DBMS可能會破壞性能。 在不了解ACID,SQL兼容性和其他需求的全部需求的情況下,我不建議您在沒有完全了解真正需求和相關問題在哪里的情況下跳入XyzzySQL潮流。

簡而言之:您的人數並不擔心。 我看到正在實施更大的系統(使用InnoDB = money)。 我已經看到MySQL可以輕松地以穩定的24小時負載來進行消化,例如每天進行15M次插入/更新混合負載,而沒有任何提示和技巧。

如果您的需求得到放松,則可以采用“黑洞”或內存中的方法,然后寫入非永久性表,這些表將(隨時間推移)復制到MySQL文件中的可靠存儲中。 如果您不費吹灰之力地插入或更新“幾秒鍾或幾分鍾”,這是一個很好的方法。

如果您的峰值穩定,峰值有限,或者像在許多實際應用中一樣,一天中的某些小時峰值負載很大,情況就大不相同了。

干杯,// Jari

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM