文章目录
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 table 表 engine='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 into 表 value(5);
Query OK, 1 rows affected (0.01 sec)
mysql> commit; # 提交事务
Query OK, 0 rows affected