龙源期刊网 http://www.qikan.com.cn
浅议mysql锁表机制
作者:吴金洪
来源:《商情》2015年第23期
【摘要】 MySQ有三种锁的级别:页级、表级、行级。本文简要分析三种锁的特点,简要的分析了表级锁的典型应用MyISAM。 【关键词】页级 表级 行级
MyISAM存储引擎只支持表锁,是现在用得最多的存储引擎。 一、查询表级锁争用情况
可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:
mysql> show status like ‘table%’; +———————–+———-+ | Variable_name | Value | +———————–+———-+ | Table_locks_immediate | 76939364 | | Table_locks_waited | 305089 |+———————–+———-+
Table_locks_waited的值比较高,说明存在着较严重的表级锁争用情况。 二、MySQL表级锁的锁模式
MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table WriteLock)。MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁。所以对MyISAM表进行操作,会有以下情况:对MyISAM表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。
相关推荐: