帮看下我这如何查看mysql版本是啥版本,我蒙了

mysql(68)
mysql锁等待分析--李晓蒙
1、简单说明
使用innodb存储引擎后,mysql有三张表来分析锁及阻塞的问题,在information_schema下面有三张表:INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS,通过这三张表,可以更简单地监控当前的事务并分析可能存在的问题。&
mysql& show tables like '%INNODB%';
+-----------------------------------------+
| Tables_in_information_schema (%INNODB%) |
+-----------------------------------------+
| INNODB_LOCKS&&&&&&&&&&&&&&&&&&&&&&&&&&& |
| INNODB_TRX&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
| INNODB_LOCK_WAITS&&&&&&&&&&&&&&&&&&&&&& |
INNODB_TRX表及结构&
比较常用的列:&
trx_id:InnoDB存储引擎内部唯一的事物ID
trx_status:当前事务的状态
trx_requested_lock_id:等待事务的锁ID
trx_wait_started:事务等待的开始时间
trx_weight:事务的权重,反应一个事务修改和锁定的行数,当发现死锁需要回滚时,权重越小的值被回滚
trx_mysql_thread_id:MySQL中的进程ID,与show processlist中的ID值相对应
trx_query:事务运行的SQL语句
其余两个表字段相对较少&&
INNODB_LOCKS&
INNODB_LOCK_WAITS
2、锁定测试
Database changed
mysql& create table mytest1 (id int(4),pername char(10),bithday date,telphone char(11));
Query OK, 0 rows affected, 2 warnings (0.06 sec)
+----------------+
| Tables_in_test |
+----------------+
| mytest1&&&&&&& |
+----------------+
1 row in set, 1 warning (0.00 sec)
--以mytest1表进行测试,里面的记录如下:
mysql& select * from mytest1;
+------+---------+------------+----------+
| id&& | pername | bithday&&& | telphone |
+------+---------+------------+----------+
|&&& 1 | Jone&&& |
|&&& 2 | Tom&&&& |
|&&& 3 | Rose&&& |
|&&& 4 | Jack&&& |
|&&& 5 | Block&& |
|&&& 6 | Block&& |
+------+---------+------------+----------+
6 rows in set (0.00 sec)
--将自动提交改为手动提交&
mysql& show variables like '%commit%';
+--------------------------------+-------+
| Variable_name&&&&&&&&&&&&&&&&& | Value |
+--------------------------------+-------+
| autocommit&&&&&&&&&&&&&&&&&&&& | ON&&& |
| binlog_order_commits&&&&&&&&&& | ON&&& |
| innodb_api_bk_commit_interval& | 5&&&& |
| innodb_commit_concurrency&&&&& | 0&&&& |
| innodb_flush_log_at_trx_commit | 1&&&& |
+--------------------------------+-------+
5 rows in set (0.00 sec)
mysql& set @@autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql& show variables like '%commit%';
+--------------------------------+-------+
| Variable_name&&&&&&&&&&&&&&&&& | Value |
+--------------------------------+-------+
| autocommit&&&&&&&&&&&&&&&&&&&& | OFF&& |
| binlog_order_commits&&&&&&&&&& | ON&&& |
| innodb_api_bk_commit_interval& | 5&&&& |
| innodb_commit_concurrency&&&&& | 0&&&& |
| innodb_flush_log_at_trx_commit | 1&&&& |
+--------------------------------+-------+
5 rows in set (0.00 sec)
--将表进行加锁
mysql& select * from mytest1
+------+---------+------------+----------+
| id&& | pername | bithday&&& | telphone |
+------+---------+------------+----------+
|&&& 1 | Jone&&& |
|&&& 2 | Tom&&&& |
|&&& 3 | Rose&&& |
|&&& 4 | Jack&&& |
|&&& 5 | Block&& |
|&&& 6 | Block&& |
+------+---------+------------+----------+
6 rows in set (0.00 sec)
--重新开一个窗口执行另一个语句
mysql& select count(*) from test.mytest1
ERROR 1205 (HY000): Lock w try restarting transaction
3、查看锁定情况
mysql& select r.trx_id waiting_trx_id,r.trx_mysql_thread_Id waiting_thread,r.trx_query waiting_query,b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,b.trx_query blocking_query&
from information_schema.innodb_lock_waits w inner join information_schema.innodb_trx b&
on b.trx_id = w.blocking_trx_id& inner join information_schema.innodb_trx r on r.trx_id = w.requesting_trx_
+----------------+----------------+----------------------------------------------+-----------------+-----------------+----------------+
| waiting_trx_id | waiting_thread | waiting_query&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | blocking_trx_id | blocking_thread | blocking_query |
+----------------+----------------+----------------------------------------------+-----------------+-----------------+----------------+
| 5458&&&&&&&&&& |&&&&&&&&&&&&& 4 | select count(*) from test.mytest1 for update | 5450&&&&&&&&&&& |&&&&&&&&&&&&&& 3 | NULL&&&&&&&&&& |
+----------------+----------------+----------------------------------------------+-----------------+-----------------+----------------+
1 row in set (0.01 sec)
这里可以很清楚的看到阻塞的thread 3,被阻塞的thread 4
+----+-------------+-----------+--------------------+---------+-------+---------------------------------+----------------------------------------------+
| Id | User&&&&&&& | Host&&&&& | db&&&&&&&&&&&&&&&& | Command | Time& | State&&&&&&&&&&&&&&&&&&&&&&&&&& | Info&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
+----+-------------+-----------+--------------------+---------+-------+---------------------------------+----------------------------------------------+
|& 1 | system user |&&&&&&&&&& | NULL&&&&&&&&&&&&&& | Daemon& | 18882 | Waiting for ndbcluster to start | NULL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
|& 3 | root&&&&&&& | localhost | test&&&&&&&&&&&&&& | Sleep&& |& 1025 |&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | NULL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
|& 4 | root&&&&&&& | localhost | information_schema | Query&& |&&& 45 | Sending data&&&&&&&&&&&&&&&&&&& | select count(*) from test.mytest1 for update |
|& 5 | root&&&&&&& | localhost | information_schema | Query&& |&&&& 0 | init&&&&&&&&&&&&&&&&&&&&&&&&&&& | show full processlist&&&&&&&&&&&&&&&&&&&&&&& |
|& 6 | root&&&&&&& | localhost | test&&&&&&&&&&&&&& | Sleep&& |&& 212 |&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | NULL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
+----+-------------+-----------+--------------------+---------+-------+---------------------------------+----------------------------------------------+
5 rows in set (0.00 sec)
由于我这里是两个会话窗口,所以很容易判断出id 3(thread 3),为阻塞会话!
知道会话后,可以采用kill进行查杀
mysql& kill 3;&&&&&&&&&&&&&&&&&&&&&&&&& --3指的是thread id(processlist中的id)
Query OK, 0 rows affected (0.00 sec)
查杀以后,第二个会话迅速将结果显示出来
4、李晓蒙 总结
--以前使用processlist时,显示太多,根本找不锁的根本原因,会话少时,可以凭直觉查看
--直接使用show engine innodb status查看,可以查看到一些东西,但是不全面,显示太多
mysql& show
Per second averages calculated from the last 6 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 22 srv_active, 0 srv_shutdown, 18645 srv_idle
srv_master_thread log flush and writes: 18667
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 25
OS WAIT ARRAY INFO: signal count 25
Mutex spin waits 228, rounds 723, OS waits 3
RW-shared spins 22, rounds 660, OS waits 22
RW-excl spins 0, rounds 0, OS waits 0
Spin rounds per wait: 3.17 mutex, 30.00 RW-shared, 0.00 RW-excl
------------
TRANSACTIONS
------------
Trx id counter 5458
Purge done for trx's n:o & 5441 undo n:o & 0 state: running but idle
History list length 26
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 6, OS thread handle 0x7fb, query id 403 localhost root init
show engine innodb status
---TRANSACTION 0, not started
MySQL thread id 5, OS thread handle 0x7fb316a02700, query id 393 localhost root cleaning up
---TRANSACTION 5457, ACTIVE 3 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s)&&&&&&&&&&&&&&&&&&&&&&&&& 指出一个行锁
MySQL thread id 4, OS thread handle 0x7fb316a43700, query id 402 localhost root Sending data
select count(*) from test.mytest1 for update
------- TRX HAS BEEN WAITING 3 SEC FOR THIS LOCK TO BE GRANTED:&&&&&&&&&&&&&&&&&& 等待时间
RECORD LOCKS space id 12 page no 3 n bits 80 index `GEN_CLUST_INDEX` of table `test`.`mytest1` trx id 5457 lock_mode X waiting
Record lock, heap no 2 PHYSICAL RECORD: n_fields 7; info bits 0
&0: len 6; hex ; asc&&&&&& ;;
&1: len 6; hex f; asc&&&&& /;;
&2: len 7; hex a0; asc&&&& [& ;;
&3: len 4; hex ; asc&&&& ;;
&4: len 10; hex 4a6f6e20; asc Jone&&&&& ;;
&5: len 3; hex 8f9422; asc&& &;;
&6: len 11; hex ; asc && ;;
这一段说的是等待内容,包括表的内容,指出了表的内容mytest1
------------------
TABLE LOCK table `test`.`mytest1` trx id 5457 lock mode IX
RECORD LOCKS space id 12 page no 3 n bits 80 index `GEN_CLUST_INDEX` of table `test`.`mytest1` trx id 5457 lock_mode X waiting
Record lock, heap no 2 PHYSICAL RECORD: n_fields 7; info bits 0
&0: len 6; hex ; asc&&&&&& ;;
&1: len 6; hex f; asc&&&&& /;;
&2: len 7; hex a0; asc&&&& [& ;;
&3: len 4; hex ; asc&&&& ;;
&4: len 10; hex 4a6f6e20; asc Jone&&&&& ;;
&5: len 3; hex 8f9422; asc&& &;;
&6: len 11; hex ; asc && ;;
---TRANSACTION 5450, ACTIVE 813 sec
2 lock struct(s), heap size 360, 7 row lock(s)
MySQL thread id 3, OS thread handle 0x7fb316a84700, query id 388 localhost root cleaning up
TABLE LOCK table `test`.`mytest1` trx id 5450 lock mode IX
RECORD LOCKS space id 12 page no 3 n bits 80 index `GEN_CLUST_INDEX` of table `test`.`mytest1` trx id 5450 lock_mode X
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; info bits 0
&0: len 8; hex d756d;
而这一段正好说明了,5450正在锁定表mytest1,所以可以确定是5450(thread 3)正执有资源
如此去查看,非常耗费时间!
--使用mysqladmin debug查看,能看到所有产生锁的线程,但无法判断哪个才是根因。
所以,感觉在新的版本中,使用语句查询确实是一个好办法,能够迅速的找到阻塞的原因!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:86180次
积分:2299
积分:2299
排名:第12463名
原创:139篇
转载:70篇
评论:12条
(2)(8)(6)(7)(7)(4)(11)(1)(5)(1)(7)(3)(3)(4)(11)(17)(5)(4)(4)(2)(4)(12)(11)(6)(4)(3)(7)(4)(5)(8)(7)(11)(7)(9)温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
一、下载问题第1次下载了与系统不匹配的mysql.我的CentOS 是6.2的,却选择了CentOS4&5版本的mysqlMySQL-community-5.1.71-1.rhel5.i386.rpm-bundle.tar安装时出现类似提示语:[root@localhost instpkg]# rpm -ivh MySQL-server-XXX&Preparing... & & & & & & & &########################################### [100%] file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.6.13-1.el6.i686 conflicts with file from package mysql-libs-5.1.47-4.el6.i686 file /usr/share/mysql/danish/errmsg.sys from install of MySQL-server-5.6.13-1.el6.i686 conflicts with file from package mysql-libs-5.1.47-4.el6.i686 file /usr/share/mysql/dutch/errmsg.sys from install of MySQL-server-5.6.13-1.el6.i686 conflicts with file from package mysql-libs-5.1.47-4.el6.i686 file /usr/share/mysql/english/errmsg.sys from install of MySQL-server-5.6.13-1.el6.i686 conflicts with file from package mysql-libs-5.1.47-4.el6.i686 file /usr/share/mysql/estonian/errmsg.sys from install of MySQL-server-5.6.13-1.el6.i686 conflicts with file from package mysql-libs-5.1.47-4.el6.i686
file /usr/share/mysql/charsets/swe7.xml from install of MySQL-server-5.6.13-1.el6.i686 conflicts with file from package mysql-libs-5.1.47-4.el6.i686[root@localhost instpkg]#----conflicts with file from 提示语一直没仔细看,不知道是什么意思。摸索了半大天,突然觉得自己下载错版本了,又重新下载了符合CentOS 6的版本,本以为这次大功可告成,没想到还是出现同样的情况找了许久的度娘,终于看到有人跟自己遇到同样的问题,方才意识到是安装包跟现有的版本冲突了。解决方法如下:/Linux/70.htm先查看系统下有哪些包含MySQL字符串的包,再把查到的mysql-libs-5.1.61-4.el6.i686这个包卸载掉。[root@localhost bin]# rpm -qa |grep -i mysqlmysql-libs-5.1.61-4.el6.i686MySQL-client-5.6.10-1.linux_glibc2.5.i386[root@localhost bin]# rpm -ev --nodeps mysql-libs-5.1.61-4.el6.i686最后再重新执行安装命令即可:[root@localhost bin]# rpm -ivh MySQL-server-5.6.10-1.linux_glibc2.5.i386.rpm问题二、# rpm -e mysql -versionrpm: arguments to --root (-r) must begin with a /[root@localhost instpkg]# rpm -qa |grep -i mysqlmysql-libs-5.1.47-4.el6.i686[root@localhost instpkg]# rpm -ev --nodeps mysql-libs-5.1.47-4.e16.i686error: package mysql-libs-5.1.47-4.e16.i686 is not installed按照上面的解决方法卸载掉libs包,老提示不在。我蒙了。后来想想,前几天曾经犯过小写L与1分不清的错误。估计包名写错了把包名拷贝了一下后再执行,果然又犯了这个错误。。终于安装成功了。今天犯了1个错,就是粗心粗心
阅读(2645)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Linux 安装mysql 版本冲突',
blogAbstract:'遇到问题:一、下载问题第1次下载了与系统不匹配的mysql.我的CentOS 是6.2的,却选择了CentOS4&5版本的mysqlMySQL-community-5.1.71-1.rhel5.i386.rpm-bundle.tar安装时出现类似提示语:[root@localhost instpkg]# rpm -ivh MySQL-server-XXX&Preparing... & & & & & & & &########################################### [100%]',
blogTag:'mysql',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:1,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}SQL Server是微软发布的新一代数据平台产品。SQL Server不仅延续现有数据平台的强大能力,全面支持云技术与平台,并且能够快速构建相应的解决方案实现私有云与公有云之间数据的扩展与应用的迁移,帮助数以千计的企业用户突破性地快速实现各种数据体验,完全释放对企业的洞察力,欢迎您下载使用。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内
Navicat MySQL是一套强大的MySQL资料库伺服器管理及开发工具。它可以用于在任何3.21或以上的MySQL版本,并支援最新版MySQL的大部份功能,包括触发器、预存程序、函式、事件、检视。
微软SQL server 2000 PRO 个人中文版,可以安装到 xp 等操作系统上面,用于程序员调试开发用。个人版只能有十个链接,其他和企业版一样个人版 在 Windows 2000 上需要
PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。 利用PowerDesigner可以制作数据流程图、概念数
Navicat for Oracle 是一套专为 Oracle 设计的强大数据库管理工具。它可以用于任何版本 8i 或以上的 Oracle 数据库服务器,并支持大部份 Oracle 最新版本的功能,包
Navicat for SQL Server 是一套专为 Microsoft SQL Server设计的强大数据库管理及开发工具。它可以用于 SQL Server 、2008R2 及
创建MSSQL脚本工具
一款图形化界面的MySQL数据库管理工具,可以让你轻松的远程维护数据库。最新SQLyog MySQL GUI 11.2.6-0 Ultimate 中文版 带序列号。
为防止资源被无情转载,继续使用注
mysql数据库官方正式版v5.7.3.0
其他下载地址:}

我要回帖

更多关于 linux查看mysql版本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信