MySql事务原理

MySql存储引擎

先简单说一下MySql的存储引擎~

  • ISAM
    不支持事务,硬盘崩溃时数据无法恢复,不支持外键

MyISAM

ISAM的扩展,不支持事务、外键,但查询速度快,支持全文索引,表级锁

InnoDB

MySql5.5版本后默认引擎(唯一支持事务的存储引擎)
1.支持事务、外键
2.数据多版本读取
3.不支持全文索引
4.行级锁

Memory

全表锁,存储在内存中,速度快,但会占用和数据量成正比的内存空间且数据在mysql重启时会丢失,默认使用HASH索引,但不适用于精确查找,主要用于那些内容变化不频繁的代码表

查看当前数据库引擎

show engines; #查看所有
show variables like '%storage_engine%';
show variables like 'default_storage_engine'; #查看当前默认使用

查看/修改表的存储引擎

show table status from 数据库 where name='表'
alter tableengine='INNODB'
  • 一张表,ID自增,先insert 17条记录,再del15,16,17条记录,重启MySql,问新插入ID是多少?
    若存储引擎是InnoDB,重启后ID是15,不重启则是18.因为最大ID保存在内存中。
    若存储引擎是MyISAM,则ID是18,不论重启与否,因为最大ID保存在数据文件中。
  • InnoDB和MyISAM执行select count(*)哪个更快?
    MyISAM更快,因为内部维护了一个计数器,可以直接调用。

MySQL事务

在MySQL中只有使用了 Innodb 数据库引擎的数据库或表才支持事务,事务可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

实现

1、用start transaction,rollback,commit来实现:

mysql> start transaction;  # 开始事务
Query OK, 0 rows affected (0.00 sec)

mysql> insert intovalue(5);
Query OK, 1 rows affected (0.01 sec)
 
mysql> commit; # 提交事务
Query OK, 0 rows affected 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值