哈喽,小伙伴,继续给大家分享数据库的支持,事务控制和锁定语句。
MYSQL支持对MyISAM和MEMORY存储引擎的表进行表级锁定,对BDB存储引擎的表进行页级锁定,对InnoDB存储引擎的表进行行级锁定。
LOCK TABLES 可以锁定用于当前线程的表。如果表被其他线程锁定,则当前线程会等待,直到可以获取所有锁定为止。
UPLOCK TABLES 可以释放当前线程获得的任何锁定。当前线程执行另一个LOCK TABLES时,或当与服务器的链接被关闭时,所有由当前线程锁定的表被隐含地解锁。
事务控制
默认情况下,MYSQL是自动提交的,如果需要通过明确的Commit和Rollback来提交和回滚事物,那么就需要通过明确的事物控制命令来开始事物,这是和Oracle的事物有着明显不同的地方。
分布式事务的使用
1、分布式事务的原理
资源管理器用于提供通向事务资源的途径。
事务管理器用于协调作为一个分布式事务一部分的事物。
在第一阶段,所有的分支被预备好。
在第二阶段,TM告知RMs是否要提交或回滚。
例如,当一个事务管理器发现,一个分布式事务只由一个事务资源组成(即单一分支),则该资源可以被告知同时进行预备和提交。
MYSQL的分布事务还存在比较严重的缺陷,在数据库或者应用异常的情况下,肯能会导致分布式事务的不完整。如果应用对于数据的完整性要求不高,则可以考虑使用。如果应用对事务的完整性有比较高的要求,那么对于当前的版本,则不推荐使用分布式事务。
总结,事务控制和锁定是MYSQL的重要特点之一。简单介绍了MYSQL提供事务控制和锁定,并对分布式事务进行简单的介绍。在后期的分享中,还会介绍到锁机制、死锁和应用中需要注意的问题。
欢迎大家在评论区留下自己的观点!
领取专属 10元无门槛券
私享最新 技术干货