繁体   English   中英

数据库设计

[英]Database Design

我试图建立一个项目的mysql数据库设计。 问题是提出最佳解决方案。 基本上在我的应用程序中,我将必须为每个用户插入大约10-30行。 主键将是随机的CHAR(16)字符串。 还将有一个日期时间索引,以及另外一个称为“数据”的行(带有索引)。

每天,桌上只会有大量的插入和查找。 查找将始终基于主键进行联接(因此,将每个用户联接10-30行)。

有时,我将需要能够查看一些特定的月份(甚至全年),并在“数据”索引上使用mysql GROUP BY函数。

根据当前的数量和估计,我希望该表每月增长930万行。 我希望这个数字会增加。

所以我的问题归结为:mysql分区,程序化表分离或其他解决方案? 事情最好按月或年分开吗? 我们正在RHEL上运行,因此获取mysql 5.1可能需要一些工作,但是如果这是一个更好的解决方案,那么它可能是值得的。

已经为该项目选择了innoDB。 日常性能是最主要的问题。

这不能回答您的问题,但需要提及...

主键将是随机的CHAR(16)字符串。

这是一个坏主意。 将UNSIGNED BIGINT列与AUTO_INCREMENT一起使用。 无需重新发明轮子:您不必担心密钥管理或那样的冲突。

按日期对数据进行分区(也许用户是按用户数据,并且您有很多用户)。

然后创建一个每月表,其中包含所需的SUMCOUNTAVG等,并根据分组依据。 您也可以对该表进行分区(但日期可能不会成为有意义的分区)

然后创建一个年度表,如每月表。

REPLACE INTO ... SELECT ...语句填充月度和年度表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM