【发布时间】:2010-11-04 07:08:16
【问题描述】:
我正在使用一个网站分析器,它将用于根据来自 tomcat 的日志分析我们自己的网站。
现在,我们每天将日志从 tomcat 推送到数据库(MySQL),它现在运行良好。但是我发现了一个潜在的致命问题!
到目前为止,我们将日志推送到数据库中的单个表中,但是日志项会很快增加,尤其是当我们拥有更多用户时,显然单个表无法保存这么多日志项(也会导致从 large 表执行查询操作时性能低下)。
并且我们使用hibernate作为持久层,日志表中的每一行都映射到应用程序中LogEntry的一个java对象。
本来想每个月新建一张表,但是如何让LogEntry映射到多个表,跨表查询呢?
另外,每个月的日志数可能不一样,一个极端的例子,日志数(表中的记录)大于db中表的最大容量怎么办?
然后我想设置一个属性来限制休眠推送日志到数据库时要推送的最大日志数。如果是这样,我不知道告诉休眠创建一个新表并自动跨表查询。
有什么想法吗?
更新到桑迪:
我知道你的意思,也就是说一个表的最大容量是由操作系统决定的,如果我使用分区,最大容量可能会增加到我的磁盘的最大容量。但是即使我使用分区,似乎也不需要关心表的最大容量,但是如果表保存的记录太多,就会导致性能低下。 (顺便说一句,我们还没有决定删除旧日志。)我认为的另一种方法是创建多个具有相同结构的表,但我使用的是休眠,所有的日志插入和查询都将通过休眠,并且可以实体(POJO)映射到多个表?
【问题讨论】:
标签: mysql sql hibernate partitioning