知识大全 MYSQL死锁相关查找
Posted 知
篇首语:不怕百事不利,就怕灰心丧气。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MYSQL死锁相关查找相关的知识,希望对你有一定的参考价值。
MYSQL死锁相关查找 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
如果遇到死锁了 怎么解决呢?找到原始的锁ID 然后KILL掉一直持有的那个线程就可以了 但是众多线程 可怎么找到引起死锁的线程ID呢? MySQL 发展到现在 已经非常强大了 这个问题很好解决 直接从数据字典连查找
我们来演示下
线程A 我们用来锁定某些记录 假设这个线程一直没提交 或者忘掉提交了 那么就一直存在 但是数据里面显示的只是SLEEP状态
mysql> set @@automit= ;
Query OK rows affected ( sec)
mysql> use test;
Reading table information for pletion of table and column names
You can turn off this feature to get a quicker startup with A
Database changed
mysql> show tables;
+ +
| Tables_in_test |
+ +
| demo_test |
| t |
+ +
rows in set ( sec)
mysql> select * from t ;
+ + + + + + + +
| id | fname | lname | birthday | c | c | c |
+ + + + + + + +
| | lily | lucy | | | | |
| | lily | lucy | | | | |
+ + + + + + + +
rows in set ( sec)
mysql> update t set birthday = where id = ;
Query OK row affected ( sec)
Rows matched: Changed: Warnings:
mysql> select connection_id()
+ +
| connection_id() |
+ +
| |
+ +
row in set ( sec)
mysql>
线程B 我们用来进行普通的更新 但是遇到问题了 此时不知道是哪个线程把这行记录给锁定了?
mysql> use test;
Reading table information for pletion of table and column names
You can turn off this feature to get a quicker startup with A
Database changed
mysql> select @@automit;
+ +
| @@automit |
+ +
| |
+ +
row in set ( sec)
mysql> update t set birthday= where id = ;
ERROR (HY ) Lock wait timeout exceeded; try restarting transaction
mysql> select connection_id()
+ +
| connection_id() |
+ +
| |
+ +
row in set ( sec)
mysql> show processlist;
+ + + + + + + + +
| Id | User | Host | db | Command | Time | State | Info |
+ + + + + + + + +
| | root | localhost | NULL | Sleep | | | NULL |
| | root | localhost | NULL | Sleep | | | NULL |
| | root | localhost | test | Sleep | | | NULL |
| | root | localhost | test | Query | | init | show processlist |
| | root | localhost | NULL | Sleep | | | NULL |
+ + + + + + + + +
rows in set ( sec)
mysql> show engine innodb status\\G
TRANSACTIONS
Trx id counter
Purge done for trx s n:o < undo n:o < state: running but idle
History list length
LIST OF TRANSACTIONS FOR EACH SESSION:
TRANSACTION not started
MySQL thread id OS thread handle x f a c query id localhost root init
show engine innodb status
TRANSACTION ACTIVE sec starting index read
mysql tables in use locked
LOCK WAIT lock struct(s) heap size row lock(s)
MySQL thread id OS thread handle x f a bd query id localhost root updating
update t set birthday= where id =
TRX HAS BEEN WAITING SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id page no n bits index `PRIMARY` of table `test` `t ` trx id lock_mode X waiting
Record lock heap no PHYSICAL RECORD: n_fields ; pact format; info bits
: len ; hex ; asc ;;
: len ; hex e c; asc ;;
: len ; hex e d c ; asc ~ ( ;;
: len ; hex c c ; asc lily ;;
: len ; hex c ; asc lucy ;;
: len ; hex fcc ; asc W;;
: len ; hex ; asc ;;
: len ; hex ; asc ;;
: len ; hex ; asc ;;
TRANSACTION ACTIVE sec
lock struct(s) heap size row lock(s) undo log entries
MySQL thread id OS thread handle x f a b query id localhost root cleaning up
Trx read view will not see trx with id >= sees <
上面的信息很繁多 也看不清楚到底哪里是哪里
不过现在 我们只要从数据字典里面拿出来这部分信息就OK了
mysql> SELECT * FROM information_schema INNODB_TRX\\G
*************************** row ***************************
trx_id:
trx_state: RUNNING
trx_started: : :
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight:
trx_mysql_thread_id:
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use:
trx_tables_locked:
trx_lock_structs:
trx_lock_memory_bytes:
trx_rows_locked:
trx_rows_modified:
trx_concurrency_tickets:
trx_isolation_level: REPEATABLE READ
trx_unique_checks:
trx_foreign_key_checks:
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched:
trx_adaptive_hash_timeout:
trx_is_read_only:
trx_automit_non_locking:
row in set ( sec)
cha138/Article/program/MySQL/201311/29500相关参考
引起数据库死锁的是:进程号其执行的SQL语法如下 EventTypeParametersEventInfo LanguageEvent select*fromtest insert
1查哪个过程被锁 查V$DB_OBJECT_CACHE视图: SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER=过程的所属用户ANDLOCKS!=; 查是哪一个S
知识大全 巧用MySQL InnoDB引擎锁机制解决死锁问题[2]
巧用MySQLInnoDB引擎锁机制解决死锁问题[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 巧用MySQL InnoDB引擎锁机制解决死锁问题[1]
巧用MySQLInnoDB引擎锁机制解决死锁问题[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 MySQL数据库中查找执行效率慢的SQL语句[1]
MySQL数据库中查找执行效率慢的SQL语句[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 MySQL数据库中查找执行效率慢的SQL语句[2]
MySQL数据库中查找执行效率慢的SQL语句[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
举个例子来说 有个文章表里面有个type字段他存储的是文章类型有头条推荐热点图文……等等 现在有篇文章他既是头条又是热点还是图文 type中以的格式存储 们我们如何用sql查找所有type
ASP程序直接连接MYSQL数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在网上查找大量
单机系统当程序出错或某一外部条件始终不能满足时,就可能出现死循环或无休止的等待状态,即称为死锁。分布式多机系统由于系统复杂,管理困难,竞用资源的情况又十分严重,更容易发生死锁问题。在多机系统中,若
单机系统当程序出错或某一外部条件始终不能满足时,就可能出现死循环或无休止的等待状态,即称为死锁。分布式多机系统由于系统复杂,管理困难,竞用资源的情况又十分严重,更容易发生死锁问题。在多机系统中,若