Mysql修改表引擎

前言

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

一 Mysql引擎

Mysql有很多的表引擎,其中最常用的是MyISAM和InnoDB

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

在说上面InnoDB的时候没有说删除,是因为InnoDB在处理Delete的时候没有重新建立表,而是一行一行的删除。还有InnoDB也不支持全文索引。

二 单表引擎修改

首先去查询

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

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

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

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

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

这里写图片描述

原因找到,现在可以更改该表的引擎:

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

这里写图片描述

可以看到ENGINE引擎已经改成InnoDB了

三 修改默认表引擎

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值