mysql存储引擎,事务,事务回滚

查看已有表的使用存储引擎:

>show create table 表名G;

查看当前数据库的默认存储引擎和可提供的存储引擎:

>show engines;

修改存储引擎:

step1:修改配置文件/etc/my.cnf

  default_storage_engine=存储引擎

step2:重启mysqld服务

修改表的存储引擎:

alter table 表名  engine=存储引擎;

创建表时指定存储引擎:

create table 表名 (字段 类型)engine=存储引擎;

常用的存储引擎:

INNODB:支持外键,事务,事务回滚,行级锁

表文件:**.frm(表结构)     **.ibd(数据和索引)

MYISAM:不支持外键,事务,事务回滚,表级锁

表文件:**.frm (表结构)  **.MYD(表数据)**MYI(索引信息)

锁粒度:

表级锁:一次直接对整张表进行加锁

页级锁:对整个页面进行加锁

行级锁:只锁定某一行

锁类型:show status like "Table_lock%";

读锁:(共享锁)支持并发读

写锁:(排它锁,互斥锁)独占,上锁期间其他的线程不能进行读表和写表。

事务:一次数据库连接到操作到结束的过程(只针对于表中数据

事务回滚:在访问过程中,任意一步操作失败,都可恢复之前的所有操作。

事务日志:记录对所有innodb存储引擎表的操作      ibdata1:未提交的命令

                                                                              ib_logfile0,ib_logfile1:已提交完成的命令

事务特性:

A:原子性   整个操作是一个整体,不可分割,要么成功,要么失败

C:一致性  事务操作前后各个终端的数据记录无变化

I:隔离性   事务在未提交之前,各个终端相互隔离,互不影响

D:持久性  数据事务一旦提交,不可恢复

mysql>show variables like "autocommit";

mysql>set autocommit=off;                                关闭自动提交,默认为自动提交

mysql>rollback;                     //回滚

mysql>commit;                      //提交

在未提交之前各个终端看到的数据是不一样的。只针对于表中的数据

select操作多的表,使用于myisam存储引擎,节约系统资源

insert操作多的表,使用于innodb存储引擎,并发访问量大

原文地址:https://www.cnblogs.com/krystal-LA-zx/p/13447030.html