首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL数据库性能

MYSQL数据库性能
EN

Database Administration用户
提问于 2018-02-28 12:38:37
回答 2查看 47关注 0票数 -1

为mysql数据库中的每个新客户端创建PivotTables是错误的吗?对于每个表都是大量的数据,我认为如果每个客户端都有自己的表,那么我会更有组织,在本例中,每个新客户端的表是10。但在表演方面呢?那会影响到吗?对每个人来说,只有一张桌子会更有利吗?记住,如果只有一条,就会有很多行,例如,大约100万条。后来怎么样了?有人能告诉我这种情况下表现的真正区别吗?

根据提供商的说法,主机具有以下设置:

  • 您网站所在的服务器的主板是SuperMicro。
  • 使用4x Intel (R) Xeon (R) CPU E5-2630处理器
  • 并为您的应用程序提供专用的SSD HDD。
EN

回答 2

Database Administration用户

回答已采纳

发布于 2018-02-28 15:22:42

如果您正在讨论的数据很大,那么当然,为每个客户设置一个不同的表将使您的查询速度更快,因为数据和索引都会更小。而且-假设您使用了innodb_file_per_table=1 -您将在操作方面具有其他优势,例如,如果一个表损坏,InnoDB将需要修复较小数量的数据。

另一种解决方案,可能更干净一些,是使用分区。您可以物理地将一个表划分为更多的文件,因此效果是相同的:您查询的数据和索引的部分将更小。您可以按客户身份进行分区。一些优点是:

  • 应用程序将在查询的WHERE子句中使用customer id,这比将其放在表名中要标准得多。
  • 一个ALTER将影响所有客户--很可能这在添加列时是好的,因为在添加索引时肯定是好的。
  • 删除特定客户的数据将是容易和快速的。
  • 如果您需要运行多客户查询,您将能够轻松地做到这一点。

缺点可能取决于您的特定用例。例如,我不知道,由于某种原因,您是否希望只为一组客户添加一列。

我脑海中唯一的“标准”缺点是,您无法将一些分区存储在不同的媒体上。但是,有理由不这样做(例如,备份可管理性)。

而且,MySQL从不并行查询-因此,在这方面,使用分区或使用单独的表没有区别。

票数 1
EN

Database Administration用户

发布于 2018-03-06 15:24:46

我不同意另一个答案。

数千个表导致数千个文件,不同用户访问不同文件的开销,用于内部开销的额外磁盘空间,等等。

一个表中的数百个PARTITIONs存在相同的问题。

在这两种情况下,性能在本质上并没有提高。选择表(或分区)的成本可与任何节省的费用相比较。要选择要使用的表,您的代码需要更加复杂;因此,您应该考虑让每个“用户”拥有一个DATABASE,即la WordPress。拥有数百个数据库的问题类似于拥有大量的表。

这个网站有很多类似的问题,比如“每台单张表更好,还是单张表更好?”答案是一张又一张响亮的桌子。我不再重复这里的论点了。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/199022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档