• ADADADADAD

    Oracle和MySQL中有意向锁吗[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:07:42

    作者:文/会员上传

    简介:

    锁的分类:0、无1、NULL,可以某些情况下,如分布式数据库的查询会产生此锁。2、SS,表结构共享锁3、SX,表结构共享锁+被操作的记录的排它锁(TM)4、S, 表结构共享锁+所有记录共享锁5、

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    锁的分类:
    0、无
    1、NULL,可以某些情况下,如分布式数据库的查询会产生此锁。
    2、SS,表结构共享锁
    3、SX,表结构共享锁+被操作的记录的排它锁(TM)
    4、S, 表结构共享锁+所有记录共享锁
    5、SRX 表结构共享锁+所有记录排它锁
    6、X表结构排它锁+所有记录排它锁(TX)
    表上的5种锁的含义:
    RS(SS):是一种纯粹的意向锁,它表征事务要通过SELECT FOR UPDATE访问某些行;
    RX(SX):是一种纯粹的意向锁,它表征事务要通过 UPDATE/ DELETE/INSERT修改某些行;
    S:全表范围的共享锁,不需要在每行上做出标识;
    X:全表范围的排它锁,不需要在每行上做出标识;
    SRX(SSX):是意向锁RX与S锁的组合,它表征事务既对表加S锁,同时要修改个别行,即要在个别行上加X锁;(如果你使用ORACLE8,可以在一个表上建立一个自引用,如EMP表上的MGR引用EMPNO,删除一条记录,可以观察到SRX锁)
    在行上,ORALCE只有X锁,
    但由SELECT FOR UPDATE 获得的X锁在表级表征为RS锁,
    由INSERT/UPDATE/DELETE 获得的X锁在表级表征为RX锁
    http://blog.itpub.net/29990276/viewspace-1979920/
    SELECT /*+ no_merge(l) ,no_merge(t)*/
    L.ADDR,
    L.KADDR,
    L.SID,
    T.NAME,
    L.ID1,
    T.ID1_TAG,
    L.ID2,
    T.ID2_TAG,
    L.TYPE,
    L.LMODE,
    CASE
    WHEN LMODE = 0 THEN
    '无'
    WHEN LMODE = 1 THEN
    'NULL,可以某些情况下,如分布式数据库的查询会产生此锁'
    WHEN LMODE = 2 THEN
    'SS,表结构共享锁,是一种纯粹的意向锁,它表征事务要通过SELECT FOR UPDATE访问某些行'
    WHEN LMODE = 3 THEN
    'SX,表结构共享锁+被操作的记录的排它锁(TM),是一种纯粹的意向锁,它表征事务要通过 UPDATE/ DELETE/INSERT修改某些行;'
    WHEN LMODE = 4 THEN
    'S, 表结构共享锁+所有记录共享锁'
    WHEN LMODE = 5 THEN
    'SRX 表结构共享锁+所有记录排它锁,表结构排它锁+所有记录排它锁(TX)'
    WHEN LMODE = 6 THEN
    'X 表结构排它锁+所有记录排它锁(TX)'
    END AS "表示含义",
    L.CTIME,
    T.DESCRIPTION
    FROM V$LOCK L, V$LOCK_TYPE T
    WHERE L.TYPE = T.TYPE
    AND L.LMODE IN (0, 1, 2, 3, 4, 5, 6)
    ORDER BY L.LMODE;

    MySQL中的意向锁用IS和IX表示,他是逐层从数据库层-->表-->页-->record一一加锁,他也是表征下一级锁的类型,并且IX IS互相且自身之间并不阻塞,只是为了保证数据库的一定的物理结构出现。

    SELECT
    r.trx_id waiting_trx_id,
    r.trx_mysql_thread_id waiting_thread,
    r.trx_query waiting_query,
    b.trx_id locking_trx_id,
    b.trx_mysql_thread_id blocking_thread,
    b.trx_query blocking_query
    FROM information_schema.INNODB_LOCK_WAITS w
    INNER JOIN information_schema.innodb_trx b
    ON b.trx_id = w.blocking_trx_id
    INNER JOIN information_schema.innodb_trx r
    ON r.trx_id = w.requesting_trx_id;

    Oracle和MySQL中有意向锁吗.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: oraclemysql