免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5713 | 回复: 14
打印 上一主题 下一主题

mysql线程问题找高手求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
[收藏(0)] [报告]
发表于 2009-10-20 22:04 |只看该作者 |正序浏览
5可用积分
下面是在二进制里面找的一段记录
#091017 19:50:17 server id 1  end_log_pos 50866061         Query        thread_id=41119        exec_time=0        error_code=0
SET TIMESTAMP=1255780217/*!*/;
update UserTable set mapNum = 2,posX = 2448,posY
想问一下是否可以通过线程ID “thread_id=41119 ”,找到是哪个用户执行的这条update语句。
ps:
show processlist;只能看到目前正在运行的线程id所使用的用户。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
14 [报告]
发表于 2009-10-23 11:44 |只看该作者
C好的人可以读读MYSQL的原码哦。

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
13 [报告]
发表于 2009-10-22 18:16 |只看该作者
原帖由 cenalulu 于 2009-10-20 22:04 发表
1. create table thread_log ( thread_id int,user_name char(50) )
2. 在my.cnf中配置
init_connection='insert into thread_log values(connection_id(),user())'

很简单的两个配置,就可以做到thread_ ...



学习下

论坛徽章:
0
12 [报告]
发表于 2009-10-22 14:11 |只看该作者
Marks:
init_connect

Note that the content of init_connect is not executed for users that have the SUPER privilege
对有Super权限的用户,该功能不启作用。

论坛徽章:
0
11 [报告]
发表于 2009-10-21 23:39 |只看该作者
打开genral query log这些信息就都有了

论坛徽章:
0
10 [报告]
发表于 2009-10-21 17:58 |只看该作者

回复 #2 cenalulu 的帖子

很好。。学习一下

论坛徽章:
0
9 [报告]
发表于 2009-10-21 13:30 |只看该作者
哈哈,太感谢各位了!

论坛徽章:
0
8 [报告]
发表于 2009-10-21 13:28 |只看该作者
原帖由 cenalulu 于 2009-10-20 22:04 发表
1. create table thread_log ( thread_id int,user_name char(50) )
2. 在my.cnf中配置
init_connection='insert into thread_log values(connection_id(),user())'

很简单的两个配置,就可以做到thread_ ...

另外那个记录表也可以考虑使用内存表:
create table thread_log ( thread_id int,user_name char(50) ) engine=memory;

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
7 [报告]
发表于 2009-10-21 12:16 |只看该作者
原帖由 leoxqing 于 2009-10-21 12:13 发表

枫影兄的意思是说,做一个job每隔一段时间(例如2s)将show processlist的线程和用户记入一张表中,通过这种方式来查!就怕这样很耗数据库资源。



按我说的方法,只会在thread每次connect之初,在数据库中插入一条记录,这些记录不会做修改操作,用archive或者myisam都可以,既节省空间,又不影响性能。

论坛徽章:
0
6 [报告]
发表于 2009-10-21 12:13 |只看该作者
原帖由 枫影谁用了 于 2009-10-21 11:53 发表
不难的。用TABLE记录。。直接查就发现了。。。。。

枫影兄的意思是说,做一个job每隔一段时间(例如2s)将show processlist的线程和用户记入一张表中,通过这种方式来查!就怕这样很耗数据库资源。

论坛徽章:
0
5 [报告]
发表于 2009-10-21 12:12 |只看该作者
原帖由 枫影谁用了 于 2009-10-21 11:53 发表
不难的。用TABLE记录。。直接查就发现了。。。。。

枫影兄的意思是说,做一个job每隔一段时间(例如2s)将show processlist的线程和用户记入一张表中,通过这种方式来查!就怕这样很耗数据库资源。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP