Db性能提升

时间:2018-06-05 06:30:24

标签: mysql mysqli database-performance

我正在创建一个数据库和一个项目。在这个项目中,我们将创建不同的公司。我们有两个create database选项。

1)为所有公司创建一个公用表,并将所有信息保存在一个表中。假设company_daily_records将包含所有公司数据。假设一家公司有1,00,000条记录,我们有1000家公司,所以这个company_daily_records将有1,00,000 * 1000条记录

2)为每家公司创建单独的数据库表,因此它们将是1000个company_daily_records表,每个表将有1,00,000条记录。

哪个db性能会好,

我们应该更喜欢哪种db sql语言?

感谢

3 个答案:

答案 0 :(得分:0)

1)如果您为每个公司创建单独的数据库(更有可能),那么您的记录将被组织。但如果您的项目同时与所有公司打交道,那么您必须经常切换连接。

2)如果您为所有公司创建一个数据库,您还可以添加另一个公司'包括所有可以用作例外'员工'表将员工与特定公司分开...... 但它的记录很复杂,因为它不是非常有组织的形式。

正如你所提到的每日记录可能有数十亿,我建议你使用单独的数据库,这肯定会节省搜索,查询时间是最重要的方面......

- >我想你可以使用mysql来管理你的记录。

三江源

答案 1 :(得分:0)

我不建议为每家公司创建一个表格,因为:

  • 你怎么知道会有多少公司?
  • 当您有一家新公司时,您可能需要在数据库中创建一个新表,并手动更新您的应用程序代码。它可以自动完成,但不是一项容易的任务

因为你现在处于早期状态,所以使用传统的关系数据库方式是很好的。这是companycompany_record表。您可以在以后发生或有空余时间进行优化时担心性能

答案 2 :(得分:0)

在您对如何插入和查询数据的方式有所了解之前,请不要为大型数据集设计架构。

你需要避免扫描1亿(10千万)行才能得到答案;它会很痛苦。这意味着索引。

NoSQL意味着没有索引,或者您必须自己构建索引。你可以通过一个真正的RDBMS来为你做这样的繁重工作。

如果按公司拆分为表格或数据库或分区或分片:

  • 今天你有1000张桌子(等等),明天你有1123张。
  • 任何跨公司的操作都会很困难而且很慢。
  • 使用1000个表/ dbs /分区或特别是分片效率低下。

我投票支持SMALLINT UNSIGNED的{​​{1}}(2个字节)列的单个'大'(但不是'巨大')表。

由于您进入“数据仓库”领域,因此可以想到摘要表。

您要删除“旧”数据吗?这是在大型桌子中担心的另一件事。

天插入1000行是没问题的。 (1000 /秒将是另一个故事。)