我正在使用Spring Boot 2.0.3,Hibernate 5.2.17和MariaDB 10.1.29开发一个项目。而且我试图在休眠生成表时将存储引擎设置为XtraDB,但是没有成功。

这是我的application.properties文件:

spring.thymeleaf.cache=false

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mariadb://localhost:3306/bookstore-db
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=****
spring.datasource.hikari.connection-timeout=20000
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=12
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1200000
spring.datasource.hikari.auto-commit=true

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB53Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=xtradb

spring.jpa.hibernate.ddl-auto=update


即使指定了spring.jpa.properties.hibernate.dialect.storage_engine=xtradb,它仍然使用InnoDB,如控制台所示:

create table hibernate_sequence (
   next_val bigint
) engine=InnoDB
Hibernate:

insert into hibernate_sequence values ( 1 )
Hibernate:

create table user (
   id_user bigint not null,
    email varchar(255) not null,
    enabled bit not null,
    first_name varchar(255),
    last_name varchar(255),
    password varchar(255),
    phone varchar(255),
    username varchar(255),
    primary key (id_user)
) engine=InnoDB


谢谢你的帮助。

最佳答案

好吧,自MariaDB 10.2起,InnoDB被用作默认和最佳选择。这些是它们的site中提到的原因


  与5.1和5.5中的InnoDB相比,XtraDB进行了许多重大改进。但是随着时间的流逝,MySQL几乎实现了所有这些。 InnoDB迎头赶上,而XtraDB仅略胜一筹...
  
  特别是,XtraDB 5.7似乎唯一真正的改进是针对写入密集型I / O绑定的工作负载,其中innodb_thread_concurrency控件被禁用。


因此,对于使用最新版本的MariaDB的用户,没有更多的理由切换到XtraDB。

07-25 21:25