JavaSpring中的不同MySQL引擎

JavaSpring中的不同MySQL引擎,java,mysql,spring,hibernate,innodb,Java,Mysql,Spring,Hibernate,Innodb,我正在使用Spring框架开发一个web应用程序,并使用Hibernate支持持久层。我已经知道,我可以使用以下代码自定义我自己的方言: public class MySQL5Dialect extends MySQL5InnoDBDialect { @Override public String getTableTypeString() { return " ENGINE=InnoDB DEFAULT CHARSET=utf8"; } } 但这适用于

我正在使用Spring框架开发一个web应用程序,并使用Hibernate支持持久层。我已经知道,我可以使用以下代码自定义我自己的方言:

public class MySQL5Dialect extends MySQL5InnoDBDialect {

    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
    }
}

但这适用于所有表格。现在我有了不同的表和不同的MySQL存储引擎。例如,一个表使用InnoDB,另一个表使用MyISAM。我如何做到这一点?提前感谢。

有些问题我觉得有必要通过后退一步并询问前提来回答

前提是你想使用不同的引擎?响应为-仅使用InnoDB

你的计数器是-但是MyISAM不是更快吗


答案是——这是一个老掉牙的故事。无论您的应用程序是什么,它很可能在使用所有InnoDB时运行得比使用任何MyISAM都快。

使用hibernate的一个主要好处是对开发人员隐藏了您的数据库详细信息,这使得在数据库供应商或版本之间进行迁移更加容易。如果你深入到数据库中,你可能需要考虑其他技术,比如将FoeWoad设置为表,然后将Hibernate映射到手动创建的表中。但如果我不想使用原生sql手动创建表,我的数据库肯定是MySQL。没有一种方法可以用不同的引擎创建表吗?除了InnoDB之外,没有任何理由创建任何新表。如果您认为有,我们可以讨论一下,MyISAM中的“选择”操作比InnoDB更快,不是吗?这里有一个链接:@StevenLiu-注意日期:2008。这个戏剧性的图表是针对MyISAM获胜的一个案例:COUNT*没有where子句。如果您运行并发测试,InnoDB很有可能获胜,即使是在内存方面。注意版本号:大多数答案落后于2个主要版本。我可以继续吗?如果我只使用InnoDB,所有表的主键应该是自动递增的,并且根据它的聚集B树索引,主键不应该很长,对吗?如果我想使用UUID作为主键,我应该改为MyISAM吗?UUID是任何引擎中非常大的表的性能杀手。米桑要走了;实际上,没有什么好的理由去改变它。