我对MySQL中的事务和锁定有些困惑。
例如:
START TRANSACTION;
SELECT * from XYX;
UPDATE abc SET summary=788 WHERE type=1;
TRUNCATE TABLE pqr;
INSERT INTO ABL VALUE('OK');
COMMIT;
答案 0 :(得分:0)
什么是transaction?
交易包括在数据库中执行的工作单元 管理系统(或类似系统)对数据库,并进行处理 以独立于其他交易的连贯可靠的方式。
此外,还有一个documentation on MySQL site
什么是database lock?
当多个用户需要时,使用锁作为读锁或写锁 同时访问数据库。
所以,这是完全不同的事情,你不能'比较'它们。
答案 1 :(得分:0)
需要大量解释才能完整覆盖您的问题。 简而言之,事务是一种原子操作"。如果它在内部全部提交则会被提交,如果它在内部全部回滚,则会被回滚。
锁是一种在并行/并发环境中避免脏读和重读(以及两个同时进行更新,互相混淆的过程)的机制。 一般来说,事务级别定义了锁定策略。
几乎所有东西都包含在一个事务中,包括select和truncate。
我建议你阅读书籍,了解交易级别,锁定(策略,粒度,性能,死锁,饥饿,贪食哲学家......)