状态
show status like '参数';
table_locks_immediate:产生表级锁定的次数;
table_locks_waited:出现表级锁定争用而发生等待的次数;
max_used_connections:响应连接数
Innodb_row_lock_current_waits:当前正在等待锁定的数量;
Innodb_row_lock_time:从系统启动到现在锁定总时间长度;
Innodb_row_lock_time_avg:每次等待所花平均时间;
Innodb_row_lock_time_max:从系统启动到现在等待最常的一次所花的时间;
Innodb_row_lock_waits:系统启动后到现在总共等待的次数;
Innodb_buffer_pool_pages_total
:缓冲池总页数
Innodb_buffer_pool_pages_free
:空闲页数
Innodb_buffer_pool_pages_data
:数据页数,
LRU
列表中页的数量
,
包含
young sublist
和
old sublist。
参数
show variables like '参数';
innodb_page_size:InnoDB读取页大小
max_connections:最大连接数
datadir:存储位置
innodb_buffer_pool_size:缓存池大小
autocommit:是否自动提交MDL,MXL,MML语句
innodb_old_blocks_pct:Buffer Pool的LRU链表中old区(冷数据)占比
innodb_old_blocks_time:数据从old区转到yong区的访问间隔(ms)
所有连接
show full processlist;
加锁
全局锁
flush tables with read lock;
unlock tables;解锁
表级锁
-- 表级读锁:当前会话只能读不能写,其他会话正常读,写阻塞;
-- 表级写锁:当前会话能读能写,其他会话读写阻塞;
lock table 表名称 read(write),表名称2 read(write),其他;
show open tables; 查看表锁情况
unlock tables; 删除表锁
show open tables; 查看表锁情况
unlock tables; 删除表锁
行级锁
共享读锁(S):
允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。
SELECT
*
FROM
表名
WHERE
... LOCK
IN
SHARE MODE
--
共享读锁 手动添加
select
*
from table
--
无锁
排他写锁(X)
:允许获得排他写锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁(不是
读)和排他写锁。
自动加:对于
UPDATE
、
DELETE
和
INSERT
语句,
InnoDB
会自动给涉及数据集加排他锁(
X)
;
手动加:
SELECT
*
FROM
table_name
WHERE
... FOR
UPDATE