zoukankan      html  css  js  c++  java
  • mysqldump 参数--lock-tables浅析 及 in_use 含义

    mysqldump有一个参数--lock-tables,以前对这个参数也没有详细了解过,直到上次有个网友问“参数lock-tables 是一次性锁定当前库的所有表,还是锁定当前导出表?“ ,之前一直以为只是锁定当前导出表,后面看了参数说明后,

    -l, --lock-tables   Lock all tables for read.

                          (Defaults to on; use --skip-lock-tables to disable.)

    自己也不怎么确认了,当时就测试了一下。准备一个稍微大一点的库,如果数据库太小,那么可能mysqldum命令一下子就导出了所有库,很难清晰的看到实验结果。

    执行下面命令做逻辑备份

    [root@DB-Server ~]# mysqldump -u root -p --default-character-set=utf8  --opt --extended-insert=false --lock-tables MyDB > db_backup_MyDB.sql

    Enter password:

    同时立即执行下面命令 

    mysql> show open tables where in_use >0;
    +----------+--------------------------------+--------+-------------+
    | Database | Table                          | In_use | Name_locked |
    +----------+--------------------------------+--------+-------------+
    | MyDB     | AO_60DB71_VERSION              |      1 |           0 |
    | MyDB     | AO_AEFED0_TEAM_TO_MEMBER       |      1 |           0 |
    | MyDB     | AO_4B00E6_STASH_SETTINGS       |      1 |           0 |
    | MyDB     | AO_2D3BEA_FOLIOCF              |      1 |           0 |
    | MyDB     | AO_AEFED0_TEAM_ROLE            |      1 |           0 |
    | MyDB     | AO_60DB71_DETAILVIEWFIELD      |      1 |           0 |
    | MyDB     | AO_60DB71_LEXORANK             |      1 |           0 |
    | MyDB     | AO_6714C7_REPORT_SCHEDULE      |      1 |           0 |
    | MyDB     | AO_E8B6CC_SYNC_AUDIT_LOG       |      1 |           0 |
    | MyDB     | cwd_application                |      1 |           0 |
    | MyDB     | clusternode                    |      1 |           0 |
    | MyDB     | AO_86ED1B_GRACE_PERIOD         |      1 |           0 |
    | MyDB     | AO_60DB71_WORKINGDAYS          |      1 |           0 |
    | MyDB     | cwd_directory                  |      1 |           0 |
    | MyDB     | AO_2D3BEA_BASELINE             |      1 |           0 |
    | MyDB     | fieldlayoutitem                |      1 |           0 |
    | MyDB     | JQUARTZ_BLOB_TRIGGERS          |      1 |           0 |
    | MyDB     | AO_013613_HD_SCHEME_MEMBER     |      1 |           0 |
    | MyDB     | AO_2D3BEA_ALLOCATION           |      1 |           0 |
    | MyDB     | AO_013613_WL_SCHEME            |      1 |           0 |
    | MyDB     | AO_7DEABF_EXEC_CLUSTER_MESSAGE |      1 |           0 |
    ....................................................................

    如上截图,执行mysqldump命令的时候,使用show open tables where in_use >0命令,你会看到MyDB里面的所有表的In_use的值都为1,意味着是当执行mysqldump命令时,是一次性锁定当前库的所有表。而不是锁定当前导出表。

     

    In_use

     

    The number of table locks or lock requests there are for the table. For example, if one client acquires a lock for a table using LOCK TABLE t1 WRITE, In_use will be 1. If another client issues LOCK TABLE t1 WRITE while the table remains locked, the client will block waiting for the lock, but the lock request causes In_use to be 2. If the count is zero, the table is open but not currently being used. In_use is also increased by the HANDLER ... OPEN statement and decreased by HANDLER ... CLOSE.

    我们只需要努力,然后剩下的交给时间。
  • 相关阅读:
    入职小白随笔之Android四大组件——内容提供器详解(Content Provider)
    入职小白随笔之Android四大组件——广播详解(broadcast)
    入职小白随笔之Android四大组件——活动详解(activity)
    入职小白随笔之高通项目编译流程
    Java基础学习-Random类和Java数组
    Java基础学习-流程控制语句
    Java基础学习-三元运算符和键盘录入的基本步骤和使用
    Java基础学习-Eclipse综述和运算符的使用
    Java基础学习-类型转换之隐式转换
    SQLite----Android Studio3.6.3 当前最新版本数据库查找与导出方法
  • 原文地址:https://www.cnblogs.com/lgj8/p/14980283.html
Copyright © 2011-2022 走看看