mysql 引擎和事务
mysql 默认引擎lnnoDB, 还有MyISAM, 可以使用命令SHOW ENGINES; 查看所有可用引擎
lnnoDB 支持事务, 支持外键
MylSAM 不支持事务, 不支持外键, 插入和查询的效率更高些 # 跟非关系型数据库有啥区别??
1. 修改默认引擎:
1. 找到配置文件my.cnf: mysql --help |grep my.cnf, 或者改my.ini文件, 方法一样
显示的配置文件从左往右都会加载,
2. 如果显示的配置文件一个都没有就新建一个 /etc/my.cnf
配置文件/etc/my.cnf中的 [mysqld] 下面加入default-storage-engine=MylSAM
3. 重启mysql
# 有的引擎安装时mysql 都没有默认编译, 要使用就需要重新编译mysql (只有换数据库的需求, 没有换引擎的需求)
2. 修改表的引擎:
方式一: ALTER TABLE 表名 ENGINE=INNODB;
方式二: CREAT TABLE 表名 () ENGINE=INNODB;
3. 事务 # 普通的增删改查都是 隐性事务
4个特性:
原子性: 事务是一个整体, commit 或者 rollback
一致性: 两种状态, 要么是开始事务时的状态, 要么是事务结束后的状态
持久性: 事务提交之后, 数据正常保存
隔离性: 每个人读写的隔离的, 四种隔离级别
4种隔离级别:
读未提交: 查到了事务未提交的数据 (唯一不用加锁)
不可重复读: 提交之后才会被查到 (Oracle默认事务隔离等级)
可重复读: 一个事务查询操作读到的数据一样 (MySQL默认事务隔离等级)
串行化: 一个事务一个事务执行, 单进程
事务sql 语句:
set session transaction isolation level read uncommitted; # 设置事务隔离级别
START TRANSACTION; # 自动提交功能自动关闭即: SET autocommit=0; 开启为1
update;
update;
COMMIT; # ROOLBACK;