[英]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為您做這些繁重的工作會更好。
如果按公司划分為表或數據庫或分區或碎片:
我投票給單個“大”(而不是“大”)表,並為company_id
提供SMALLINT UNSIGNED
(2字節)列。
由於您已進入“數據倉庫”領域,因此想到了匯總表。
您要刪除“舊”數據嗎? 在大表中這是另一件事需要擔心。
每天插入1000行是沒有問題的。 (1000 /秒將是另一個故事。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.