MySql和Hibernate中的表分区

MySql和Hibernate中的表分区,mysql,hibernate,indexing,partitioning,sharding,Mysql,Hibernate,Indexing,Partitioning,Sharding,在我的项目中,我有一个大约有20列的表。我们已经在“status”列上对表进行了分区。为了简单起见,假设有两个可能的状态值“ERROR”和“SUCCESS”。因此我们有两个分区,比如p1和p2。我们希望在每个分区上有不同的索引,因为select查询将根据状态在where子句中使用不同的列。例如,分区p1需要在列1和列2上有索引,而分区p2需要在列4和列5上有索引。然而,我了解到在MySql 5.5中不可能在分区级别应用索引 所以现在另一个选择是为每个状态设置不同的表。我在应用层使用Hiberna

在我的项目中,我有一个大约有20列的表。我们已经在“status”列上对表进行了分区。为了简单起见,假设有两个可能的状态值“ERROR”和“SUCCESS”。因此我们有两个分区,比如p1和p2。我们希望在每个分区上有不同的索引,因为select查询将根据状态在where子句中使用不同的列。例如,分区p1需要在列1和列2上有索引,而分区p2需要在列4和列5上有索引。然而,我了解到在MySql 5.5中不可能在分区级别应用索引

所以现在另一个选择是为每个状态设置不同的表。我在应用层使用Hibernate。是否可以将Hibernate配置为两个表都有一个实体类。这样,当状态从“错误”更改为“成功”时,记录会在后台自动从错误表移动到成功表。作为一名开发人员,我只需要处理实体对象,而不必担心它是从哪个表中获取的。Hibernate应该处理从一个表到另一个表的数据移动。这样我就可以在不同的表上维护不同的索引。这更像是手动分区,而不是db分区


我听说过HibernateShard项目。但我认为,当您对同一个表使用不同的数据库时,它是有用的。这里我有一个数据库,同一个实体有两个表。

您可以将它转换为继承基类的类,每个类型的值对应一个基类。但是数据的移动必须由您自己实现,hibernate不会自动完成这项工作,这正是我目前正在做的。然而,我希望有一种方法可以告诉Hibernate自动这么做。