免费注册 查看新帖 |

Chinaunix

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

mysql经常锁表,请问大家是不是我哪里配置不对了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-23 17:11 |只看该作者 |倒序浏览
本帖最后由 sulwan 于 2010-07-23 19:50 编辑

锁表内容:


mysql> SHOW PROCESSLIST;
+--------+----------+-----------------+----------+---------+------+----------------+------------------------------------------------------------------------------------------------------+
| Id     | User     | Host            | db       | Command | Time | State          | Info                                                                                                 |
+--------+----------+-----------------+----------+---------+------+----------------+------------------------------------------------------------------------------------------------------+
| 174133 | root     | localhost       | NULL     | Query   |    0 | NULL           | SHOW PROCESSLIST                                                                                     |
| 177472 | bdrsU | localhost       | bdrsU | Sleep   |  913 |                | NULL                                                                                                 |
| 177473 | bdrsU | localhost       | bdrsU | Sleep   |  913 |                | NULL                                                                                                 |
| 179302 | root     | 127.0.0.1:60397 | bdrsU | Query   |  158 | Writing to net | SELECT id, classid, className, uid, schoolName, shortName, title, keyword, content, staff, traffic,  |
| 179366 | bdrsU | localhost       | bdrsU | Query   |  126 | Table lock     | UPDATE core_course SET pv=pv+1 WHERE id='24138'                                                      |
| 179369 | bdrsU | localhost       | bdrsU | Query   |  125 | Table lock     | SELECT * FROM `core_course` WHERE mid = 'a14cfc2e3dd343a4'                                           |
| 179382 | bdrsU | localhost       | bdrsU | Query   |  119 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 248 AND classid IN (380,381,382,630,631,632) AND delete |
| 179384 | bdrsU | localhost       | bdrsU | Sleep   |  119 |                | NULL                                                                                                 |
| 179387 | bdrsU | localhost       | bdrsU | Query   |  117 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 256 AND classid IN (641,27,33,32,31,23,21,36,29,34,25,2 |
| 179389 | bdrsU | localhost       | bdrsU | Sleep   |  117 |                | NULL                                                                                                 |
| 179396 | bdrsU | localhost       | bdrsU | Query   |  112 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 450 AND classid IN (366) AND deleted = 'N' AND userdel  |
| 179398 | bdrsU | localhost       | bdrsU | Sleep   |  112 |                | NULL                                                                                                 |
| 179399 | bdrsU | localhost       | bdrsU | Query   |  111 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179403 | bdrsU | localhost       | bdrsU | Query   |  109 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179408 | bdrsU | localhost       | bdrsU | Query   |  107 | Table lock     | SELECT * FROM `core_course` WHERE id = '29842'                                                       |
| 179409 | bdrsU | localhost       | bdrsU | Query   |  107 | Table lock     | SELECT * FROM core_course WHERE aid ='3' AND deleted = 'N' AND userdel = 'N' AND audit = 'Y' ORDER B |
| 179413 | bdrsU | localhost       | bdrsU | Query   |  105 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179422 | bdrsU | localhost       | bdrsU | Query   |  101 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 249 AND classid IN (67,69,68,70,74,72,73,71) AND delete |
| 179423 | bdrsU | localhost       | bdrsU | Sleep   |  101 |                | NULL                                                                                                 |
| 179426 | bdrsU | localhost       | bdrsU | Query   |  100 | Table lock     | SELECT * FROM `core_course` WHERE mid = '876206874f815efd'                                           |
| 179447 | bdrsU | localhost       | bdrsU | Query   |   88 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 558 AND classid IN (364) AND deleted = 'N' AND userdel  |
| 179448 | bdrsU | localhost       | bdrsU | Sleep   |   88 |                | NULL                                                                                                 |
| 179457 | bdrsU | localhost       | bdrsU | Query   |   75 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 341 AND classid IN (348,346) AND deleted = 'N' AND user |
| 179459 | bdrsU | localhost       | bdrsU | Query   |   81 | Table lock     | SELECT * FROM `core_course` WHERE mid = '312819e3189b3dd8'                                           |
| 179471 | bdrsU | localhost       | bdrsU | Sleep   |   75 |                | NULL                                                                                                 |
| 179474 | bdrsU | localhost       | bdrsU | Query   |   73 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 657 AND classid IN (502,503,504,524,505) AND deleted =  |
| 179477 | bdrsU | localhost       | bdrsU | Sleep   |   73 |                | NULL                                                                                                 |
| 179481 | bdrsU | localhost       | bdrsU | Query   |   71 | Table lock     | select classid,core_column.mid,core_column.typename,core_column.id from core_course left join core_c |
| 179482 | bdrsU | localhost       | bdrsU | Sleep   |   71 |                | NULL                                                                                                 |
| 179500 | bdrsU | localhost       | bdrsU | Query   |   63 | Table lock     | SELECT * FROM core_course WHERE aid ='549' AND deleted = 'N' AND userdel = 'N' AND audit = 'Y' ORDER |
| 179558 | bdrsU | localhost       | bdrsU | Query   |   32 | Table lock     | select classid,core_column.mid,core_column.typename,core_column.id from core_course left join core_c |
| 179565 | bdrsU | localhost       | bdrsU | Query   |   27 | Table lock     | SELECT count(*) FROM core_course WHERE aid = 426 AND classid IN (12 AND deleted = 'N' AND userdel  |
| 179568 | bdrsU | localhost       | bdrsU | Sleep   |   27 |                | NULL                                                                                                 |
| 179569 | bdrsU | localhost       | bdrsU | Query   |   27 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179573 | bdrsU | localhost       | bdrsU | Query   |   25 | Table lock     | select classid,core_column.mid,core_column.typename,core_column.id from core_course left join core_c |
| 179574 | bdrsU | localhost       | bdrsU | Sleep   |   25 |                | NULL                                                                                                 |
| 179601 | root     | localhost       | bdrsU | Query   |   12 | Table lock     | SELECT * FROM `core_course`
LIMIT 0, 30                                                             |
| 179609 | bdrsU | localhost       | bdrsU | Query   |    8 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179618 | bdrsU | localhost       | bdrsU | Query   |    4 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179621 | bdrsU | localhost       | bdrsU | Query   |    2 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179623 | bdrsU | localhost       | bdrsU | Query   |    2 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179625 | bdrsU | localhost       | bdrsU | Query   |    1 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179627 | bdrsU | localhost       | bdrsU | Query   |    1 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179628 | askU | localhost       | askU | Sleep   |    0 |                | NULL                                                                                                 |
| 179629 | bdrsU | localhost       | bdrsU | Query   |    0 | Table lock     | SELECT * FROM `core_course` WHERE id = '29839'                                                       |
| 179630 | bdrsU | localhost       | bdrsU | Query   |    0 | Table lock     | SELECT * FROM `core_course` WHERE id = '29840'                                                       |
+--------+----------+-----------------+----------+---------+------+----------------+------------------------------------------------------------------------------------------------------+
46 rows in set (0.00 sec)




主机环境centos5.4

my.cnf配置文件如下:
[mysqld]
datadir=/opt/mysql/var
socket=/tmp/mysql.sock
user=mysql
skip-name-resolve
long-query-time=2
min_examined_row_limit=2
slow-query-log-file=/tmp/slow_query.log
long_query_time=2
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 8M
sort_buffer_size = 8M
net_buffer_length = 2M
read_buffer_size = 32M
read_rnd_buffer_size = 24M
myisam_sort_buffer_size = 128M
max_connections = 400
table_open_cache = 256
join_buffer_size = 4M
thread_cache_size = 8
query_cache_limit = 2M
wait_timeout=1000
tmp_table_size=300M
table_cache = 512
#thread_concurrency = 8



# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
#log-error=/tmp/mysqld.log
#pid-file=/opt/mysql/var/mysqld.pid


mysql 版本:5.5.4-m3


我的表的类型是:myisam

论坛徽章:
0
2 [报告]
发表于 2010-07-23 19:00 |只看该作者
UPDATE core_course SET pv=pv+1 WHERE id='24138'   

你的表是什么类型的表 myisam?

论坛徽章:
0
3 [报告]
发表于 2010-07-23 19:49 |只看该作者
是的

论坛徽章:
0
4 [报告]
发表于 2010-07-25 00:59 |只看该作者
转innodb或HEAP

论坛徽章:
0
5 [报告]
发表于 2010-07-25 21:07 |只看该作者
转innodb或HEAP
wangbin 发表于 2010-07-25 00:59



    能分享一下原因吗?

论坛徽章:
0
6 [报告]
发表于 2010-08-06 15:56 |只看该作者
能分享一下原因吗?
surpass_li 发表于 2010-07-25 21:07



   
我曾经被这个问题困惑了很长时间,先是转换表类型可以减轻一点点。

后来发现防火墙竟然离线运行,小规模的攻击就停了,全锁!把防火墙设置正常,这个世界清净了!

论坛徽章:
0
7 [报告]
发表于 2010-08-06 16:22 |只看该作者
能分享一下原因吗?
surpass_li 发表于 2010-07-25 21:07



    INNODB是行锁定,锁粒度小。ISAM的是表锁,粒度大。

论坛徽章:
0
8 [报告]
发表于 2010-08-08 20:34 |只看该作者
INNODB是行锁定,锁粒度小。ISAM的是表锁,粒度大。
909413335 发表于 2010-08-06 16:22



    明白了,谢谢

论坛徽章:
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
9 [报告]
发表于 2010-08-09 13:19 |只看该作者
明白了,谢谢
surpass_li 发表于 2010-08-08 20:34



    事务繁忙的表都是建议innodb的
   手册上有这个提示信息的

论坛徽章:
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
10 [报告]
发表于 2010-08-09 13:21 |只看该作者
mysql 版本:5.5.4-m3

LZ将这个已经用在生产环境了?
吃螃蟹的人啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP