mysql 尽量不要使用 联合主键_MySQL的高级部分

本文详细介绍了MySQL的存储引擎,包括MyISAM和InnoDB的区别,强调了InnoDB支持事务的优势。还探讨了MySQL事务的ACID特性,并通过示例展示了如何使用BEGIN、COMMIT和ROLLBACK操作。此外,文章提到了并发事务可能导致的问题,如脏读、不可重复读和虚读,以及对应的解决方案。最后,文章简述了MySQL的存储程序,包括存储过程和存储函数,以及它们的区别和应用场景。
摘要由CSDN通过智能技术生成

(1)存储引擎的介绍

介绍:当客户端发送一条SQL语句给服务器时,服务器端通过缓存、语法检查、校验通过之后,然后会通过调用底层的一些软件组织,去从数据库中查询数据,然后将查询到的结果集返回给客户端,而这些底层的软件组织就是存储引擎。

MySQL的存储引擎:

- MySQL的核心就是存储引擎,MySQL可以设置多种不同的存储引擎,不同的存储引擎在索引、存储、以及锁的策略上是不同的。

- Mysql5.5之前,使用的是myisam存储引擎,支持全文搜索,不支持事务。

- Mysql5.5以后,使用的是innodb存储引擎,支持事务以及行级锁

f2ea712eb4063b4604fc52d8ebe02d71.png

(2)MySQL事务的介绍

介绍:事务是一个操作序列,这些操作要么都做,要么都不做,是一个不能分割的工作单位。在两条或两条以上的SQL语句才能完成的业务时,才需要用事务,因为事务时同步原则,效率比较低。

事务的ACID特性:

- 原子性:放在同一事务的一组操作时不可分割的

- 一致性:在事务的执行前后,整体的状态是不变的

- 隔离性:事务之间是独立存在的,两个不同事务之间互不影响

- 持久性:事务执行之后,将会永久的影响到数据库。

#例:一个事务操作

BEGIN;

update t_account set money=money+100 where id =1;

update t_account set money=money-100 where id =2;

COMMIT;

#一个回滚操作

BEGIN;

update t_account set money=money+100 where id =1;

update t_account set money=money-100 where id =2;

COMMIT;

注意:MySQL数据库,dml操作采用的是自动提交

#查看自动提交

show variables like ‘autocommit‘;

#修改自动提交

set autocommit=0;

(3)MySQL事务并发时产生的问题

脏读:在一个事务的执行范围内,读到了另一事务未提交的数据。

解决:读已提交,一个数据库只能读到另一个事务提交后的数据。(Oracle默认的事务隔离级别)

不可重复读:一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值