事务与mysql中的锁定

时间:2014-02-26 10:54:55

标签: mysql sql transactions locking

我对MySQL中的事务和锁定有些困惑。

  • MySQL中的事务和锁定有什么区别?它们之间是如何相互关联的?
  • 事务是仅与DML(INSERT,UPDATE和DELETE)相关还是与SELECT查询相关?
  • 交易是否涵盖截断?

例如:

START TRANSACTION;
SELECT * from XYX; 
UPDATE abc SET summary=788 WHERE type=1; 
TRUNCATE TABLE pqr;
INSERT INTO ABL VALUE('OK');
COMMIT;

2 个答案:

答案 0 :(得分:0)

什么是transaction

  

交易包括在数据库中执行的工作单元   管理系统(或类似系统)对数据库,并进行处理   以独立于其他交易的连贯可靠的方式。

此外,还有一个documentation on MySQL site

什么是database lock

  

当多个用户需要时,使用锁作为读锁或写锁   同时访问数据库。

所以,这是完全不同的事情,你不能'比较'它们。

答案 1 :(得分:0)

需要大量解释才能完整覆盖您的问题。 简而言之,事务是一种原子操作"。如果它在内部全部提交则会被提交,如果它在内部全部回滚,则会被回滚。

锁是一种在并行/并发环境中避免脏读和重读(以及两个同时进行更新,互相混淆的过程)的机制。 一般来说,事务级别定义了锁定策略。

几乎所有东西都包含在一个事务中,包括select和truncate。

我建议你阅读书籍,了解交易级别,锁定(策略,粒度,性能,死锁,饥饿,贪食哲学家......)