对于大型数据库表设计提示

问题描述 投票:-1回答:1

我有一个庞大的数据库表(单位:百万的记录)。目前,我们的应用程序是基于仅在加拿大,但现在我们正在进入其他国家,从而百万每个国家的数据将被添加。我应该每个国家创建单独的表或保持一个巨大的表?我使用CakePHP的2.x中,MySQL的5.6还会有很多读,在这个表上写操作。发行与单独的表是因为我使用的数据库操作模型(MVC),我将不得不建立每个国家不同的模型,并结合他们对报告的目的将是一团糟。在另一方面,在一个表中保持一切都将在系统上很沉重。将索引帮助在这种情况下?

mysql cakephp database-design orm
1个回答
1
投票

常见问题;常见的回答是:不要让大量的“相同”的表。

除了极少数类型的查询不要使用PARTITION。最常见的是滑动的时间尺度,其中“老”行需要定期删除(通过DROP PARTITION)。 PARTITIONing很少帮助SELECT性能。

(A十亿行是“巨大的”,数以百万计是相当可行的。)

索引是强制性的任何不平凡的数据库表!

使用country_code CHAR(2) CHARACTER SET ascii。这是2个字节(几乎小到1字节TINYINT,以及更多人性化当然,这1MB一百万行;但看看另一种方式 - 它是表大小的1%左右,这可能需要约100个字节/行。

至于“索引权” - 你必须与SELECTs开始找出需要哪些指数(ES)。

你提到的“报告”。这可能进入需要建立和维护汇总表。 (同样,让我们​​来看看SELECTs。)

© www.soinside.com 2019 - 2024. All rights reserved.