Mysql Lock Summary

Source: Internet
Author: User

Lock

MyISAM only supports table locks
createtable crm_member; ##查看引擎altertable crm_member engine = MyISAM; ##更改表引擎
Read Lock Demo

Session 1 Read lock Other session can be read and not writable

lock table crm_member read;

Session 1 Lock Wait time setting

select @@global.lock_wait_timeout; ##查看锁等待时间设置set @@global.lock_wait_timeout = 20; ##设置锁等待时间为20秒

Session 2 query data does not affect

MariaDB [memberselectfromwhereid4;+------+| name |+------+222  |+------+1rowinset (0.00 sec)

Session 2 Update data

MariaDB [member]> MariaDB [member]> update crm_member set name = ‘222‘ where id = 4;## 进入锁等待

Session 1 Viewing process

97 | root | localhost           memberQuery   |   120fortablelevellockupdateset‘222‘whereid4 |    0.000 |## 等待一个表级别的锁

Session 1 Release Lock

MariaDB [memberunlocktables;Query0rows affected (0.00 sec)

Session 2 Get lock Update data immediately

MariaDB [member]> update crm_member set name = ‘222‘ where id = 4;Query OK, 0 rows affected (3 min 9.38 sec)Rows matched: 1  Changed: 0  Warnings: 0

Session 2 Lock Wait timeout

MariaDB [memberupdateset‘222‘whereid41205Locktimeouttransaction
Write lock Demo

Session 1 Adding a write lock

MariaDB [memberlocktablewrite;Query0rows affected (0.00 sec)

Session 1 Adding a write lock

MariaDB [memberlocktablewrite;Query0rows affected (0.00 sec)

Session 2 reading data

MariaDB [member]> select name from crm_member where id = 4;

Session 1 Viewing process

MariaDB [member]> show processlist;| 109 | root | localhost           | member | Query   |     2 | Waiting for table metadata lock | select name from crm_member where id = 4 |    0.000 |## 等待一个元数据的锁

Session 2 Read Data lock wait timeout

MariaDB [member]> select name from crm_member where id = 4;ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
InnoDB locks support both table locks (same as MyISAM) and row locks. Row It lock demo

Mode 1 Session 1 direct Update other session can not read non-writable unless snapshot read

MariaDB [member]> begin;Query OK, 0 rows affected (0.00 sec)MariaDB [member]> update crm_member set name = ‘aaaaaa‘ where id = 4;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0

Mode 2 Session 1 For-update Other session cannot be read not writable unless snapshot read

MariaDB [member]> begin;Query OK, 0 rows affected (0.00 sec)MariaDB [member]> select name from crm_member where id = 4 for update;

Session 2 Mode 1 transaction Mode start update operation same record

MariaDB [member]> begin;Query OK, 0 rows affected (0.00 sec)MariaDB [member]> update crm_member set name = ‘bbb‘ where id = 4;## 进入锁等待

Session 2 Mode 2 Normal update operation

MariaDB [member]> update crm_member set name = ‘bbb‘ where id = 4;

Session 1 Viewing process

MariaDB [member]> Show processlist;+-----+------+---------------------+--------+---------+-------+----------+---------------------------------- ---------------+----------+|Id|User| Host | db | Command | Time| State | Info | Progress |+-----+------+---------------------+--------+---------+-------+----------+---------------------------------- ---------------+----------+|109| Root | localhost |member|Query|2| Updating |UpdateCrm_memberSetName =' CCC ' where ID=4|0.000|+-----+------+---------------------+--------+---------+-------+----------+---------------------------------- ---------------+----------+# # There's an update waiting

Session 2 Lock Wait timeout

MariaDB [member]> update crm_member set name = ‘bbb‘ where id = 4;ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

Session 1 Viewing data has changed

MariaDB [member]> select name from crm_member where id = 4;+------+| name |+------+| ccc  |+------+

Session 2 read data not changed can only read UNCOMMITTED version of data

MariaDB [member]> select name from crm_member where id = 4;+------+| name |+------+| bbb  |+------+

Mysql Lock Summary

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.