Mysql修改表引擎

前言

最近在SpringBoot中采用JpaRepository以及Transactional进行数据库事务操做,结果发现数据库中的表并无被事务管理,咱们知道当继承了JpaRepository后,其自己单个操做是自带事务的,而Transactional提供了多表屡次操做的事务管理,通过检查发现代码并无错误,因而想到可能采用JpaRepository自动建立表时建立的表引擎为MyISAM,而MyISAN是不支持事务的,因而去数据库查了一下。mysql

一 Mysql引擎

Mysql有不少的表引擎,其中最经常使用的是MyISAM和InnoDBweb

引擎名称 是否支持事务 优势 适用场景
MyISAM 不支持 提供高速存储、检索、全文搜索 大量且查询频繁的环境
InnoDB 支持 提供事务操做、行级锁定等 OLTP(联机事务处理)、增改业务复杂

在说上面InnoDB的时候没有说删除,是由于InnoDB在处理Delete的时候没有从新创建表,而是一行一行的删除。还有InnoDB也不支持全文索引。sql

二 单表引擎修改

首先去查询数据库

show engines;   -- 查看该数据库下支持的存储引擎
show variables like '%storage_engine%'; -- 查看当前默认的存储引擎

以上两条语句均可以去查询默认的表引擎,结果不出所料:
这里写图片描述svg

能够看到默认的为MyISAM,再检查下该表是否采用了MyISAN引擎性能

show create table user; -- 查看user表建立信息 其中ENGINE为引擎

查询结果以下,其中引擎项为ENGINE:spa

这里写图片描述

缘由找到,如今能够更改该表的引擎:code

ALTER TABLE user ENGINE=InnoDB; -- 修改user表的引擎为InnoDB 数据量大会修改较慢 且修改时影响查询等性能

这里写图片描述

能够看到ENGINE引擎已经改为InnoDB了xml

三 修改默认表引擎

找到位于MySql根目录下的my.ini文件
这里写图片描述blog

1.修改mysqld下的default-storage-engine后面的值为InnoDB ,若没有则添加default-storage-engine=InnoDB
2..重启MySql
这里写图片描述