[英]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一起使用。 无需重新发明轮子:您不必担心密钥管理或那样的冲突。
按日期对数据进行分区(也许用户是按用户数据,并且您有很多用户)。
然后创建一个每月表,其中包含所需的SUM
, COUNT
, AVG
等,并根据分组依据。 您也可以对该表进行分区(但日期可能不会成为有意义的分区)
然后创建一个年度表,如每月表。
用REPLACE INTO ... SELECT ...
语句填充月度和年度表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.