mysql中的并发

MySQL排错指南的笔记1

InnoDB使用简写的S代表读锁/共享锁,使用X代表写锁/排它锁

mysql中的4种锁:表锁 行锁 页锁 元数据锁

1 表锁(p52-54)

当设置表锁的时候,这个表都会被锁住。如果设置读锁那么并发访问时写时禁止的,如果设置的时写锁,那么读和写都是禁止的。MyISAM支持表锁

当出现缓慢的时候可以使用 show processlist

mysql> show processlist\G
*************************** 1. row ***************************
     Id: 25   # 连接线程的ID
   User: root   # 用户
   Host: localhost:57782 # 
     db: test  # database name 
Command: Sleep  # 线程中当前执行的命令 
   Time: 14606  # 消耗的时间
  State:        # 线程的内部状态
   Info: NULL   # 当前线程正在进行的工作,NULL 表示线程正在休眠,等待下一条用户命令,如果展示的
                # 查询命令表明该语句正在执行
*************************** 2. row ***************************
     Id: 26
   User: root
   Host: localhost:57783
     db: test
Command: Sleep
   Time: 14585
  State:
   Info: NULL
*************************** 3. row ***************************
     Id: 45
   User: ODBC
   Host: localhost:61723
     db: test
Command: Sleep
   Time: 57
  State:
   Info: NULL
*************************** 4. row ***************************
     Id: 46
   User: root
   Host: localhost:61744
     db: NULL
Command: Query
   Time: 0
  State: init
   Info: show processlist
4 rows in set (0.00 sec)

2 行锁(p54-59)

会锁住一行,可以修改表中没有被行锁锁住的行。行锁在存储引擎的级别进行设置,InnoDB时使用行锁的主要引擎

通常行锁锁住会等待 innodb_lock_wait_timeout(默认值时50s)的时间,然后报错

当出现错误后我们可以查看 information_schema.processlist(mysql默认自带的表)该表与show processlist展示的信息相同,只是将信息存在了表中

可以使用 show engine innodb status(InnoDB监控器的一部分)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值