簡體   English   中英

DB性能改善

[英]Db performance improvement

我正在創建一個數據庫和一個項目。 在這個項目中,我們將創建不同的公司。 我們有兩個創建數據庫的選項。

1)為所有公司創建一個公用表,並將所有信息保存在一個表中。 假設company_daily_records將包含所有公司數據。 假設一家公司有1,00,000條記錄,而我們有1000家公司,那么此company_daily_records將有1,00,000 * 1000條記錄

2)為每個公司創建單獨的數據庫表,因此它們將是1000個company_daily_records表,每個表將有1,00,000條記錄。

哪個數據庫性能會很好,

還應該使用哪種db sql語言?

謝謝

1)如果您為每個公司創建單獨的數據庫(很有可能),那么將組織您的記錄。 但是,如果您的項目同時與所有公司打交道,則您必須經常切換連接。

2)如果您為所有公司創建一個數據庫,則還可能只需要添加一個附加的“公司”表,其中包括可以在“ employee”表中用作Foreign_key的所有公司,以將雇員與特定公司分開。但是它具有復雜的記錄,因為它不是非常有組織的形式。

正如您提到的每日記錄可能高達數十億美元,我建議您使用單獨的數據庫,這些數據庫肯定會節省搜索,查詢時間,這是最重要的方面...

->我認為您可以使用mysql來管理您的記錄。

謝謝

我不建議為每個公司創建一個表,因為:

  • 您怎么知道會有多少家公司?
  • 擁有新公司時,可能需要在數據庫中創建新表,然后手動更新應用程序代碼。 可以將其設為自動,但並非易事

因為您現在處於早期狀態,所以用傳統的關系數據庫方式就可以了。 那就是到一個company表一個company_record表。 您可以稍后擔心性能問題,或者有空閑時間進行優化時再擔心

在您對如何插入和查詢數據有一些想法之前,請不要為大型數據集設計架構。

您需要避免掃描1億(1千萬)行來獲得答案。 它會非常緩慢。 這意味着索引。

NoSQL意味着沒有索引,或者您必須自己構建索引。 真正的RDBMS為您做這些繁重的工作會更好。

如果按公司划分為表或數據庫或分區或碎片:

  • 今天您有1000張桌子(etc),明天您有1123張桌子。
  • 跨公司的任何操作都將是困難而緩慢的。
  • 使用1000個表/數據庫/分區,特別是分片,效率低下。

我投票給單個“大”(而不是“大”)表,並為company_id提供SMALLINT UNSIGNED (2字節)列。

由於您已進入“數據倉庫”領域,因此想到了匯總表。

您要刪除“舊”數據嗎? 在大表中這是另一件事需要擔心。

每天插入1000行是沒有問題的。 (1000 /秒將是另一個故事。)

暫無
暫無

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

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