摘要:
Trx_id:InnoDB存储引擎内部唯一的事务id Trx_status:当前的事务状态,running、lock wait、rolling back or commtting. Trx_started:事务的开始hijack Trx_requested_lock_id:事务等待的锁的id(如果事 阅读全文
摘要:
Select * from information_schema.innodb_trx; -- 记录当前运行的事务 Select * from information_schema.innodb_locks; -- 记录当前出现的锁 Select * from information_schema. 阅读全文
摘要:
Delete:删除一条数据时,先对记录加X锁,再执行删除操作。 Insert:插入一条记录时,会先加“隐式锁”来保护这条新插入的记录在本事务提交前不被别的事务访问到。 Update: 如果被更新的列,修改前后没有导致存储空间变化,那么会先给记录加X锁,再直接对记录进行修改。 如果被更新的列,修改前后 阅读全文
摘要:
对于普通的select语句,InnoDB不会加任何锁 1、Select …… lock in share mode 将查到的数据加上一个S锁,运行其他事务继续获取这些记录的S锁,不能获取这些记录的X锁(会阻塞) 使用场景:读取数据后,其他事务不能修改,但是自己也不一定能修改,因为其他事务也可以使用“ 阅读全文
摘要:
读锁:共享锁、shared locks、S锁。 写锁:排他锁、exclusive locks、X锁 Select:不加锁 X锁X锁:冲突 X锁S锁:冲突 S锁X锁:冲突 S锁S锁:不冲突 阅读全文
摘要:
multi-version concurrence control多版本并发控制,指的是在使用read committed、repeatable read这两种隔离级别的事务在执行普通的select操作时访问记录的版本链过程。 可以是不同的事务的读写、写读操作并发执行,从而提高系统性能。 Read 阅读全文
摘要:
对于使用read uncommitted隔离级别的事务来说,直接读取记录的最新版本就好了,对于使用serializable隔离级别的事务来说,使用加锁的方式来访问记录。对于使用read committed和repeatable read隔离级别的事务来说,就需要用到版本链,核心就是需要判断版本链中的 阅读全文
摘要:
对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必须的,创建的表中有主键或者非null唯一值是不会包含row_id列): Trx-id:每次对某条记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。 Roll_pointer:每次对某条记录 阅读全文
摘要:
1、修改隔离级别 Set session transaction isolation level read uncommitted; 2、查看隔离级别 Select @@tx_isolation 3、事务的4种隔离级别 (1)读未提交read uncommitted 一个事务可以读到其他事务还没有提 阅读全文
摘要:
1、空间上的代价 一个索引都为对应的一个B+树,树中每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,所以一个索引也是会占用磁盘空间的。 2、时间上的代价 索引是对数据的排序,那么当对表中的数据进行增删改操作时,都需要去维护修改内容涉及到的B+树索引。所以在进行增删改操作时可能需要额外的 阅读全文