在大用户量提交数据插入到MySQL中时候的问题?

简单的牛牛 发布于 2010/11/12 17:15
阅读 713
收藏 3

请问高人们,做到一个功能,客户需要往一张表中记录数据,在insert之前要先将原先的数据delete掉,在用户量非常多的时候会报Lock wait timeout exceeded; try restarting transaction Query异常,数据库是MySQL,Struts2做的请求处理。

请问有什么好的办法避免这种问题吗?

刚才查了一下mysql的表中主键是自增的情况会出现锁表的情况,不知道是否是引起整个问题的根源呢。

我的SQL顺序是先delete,然后insert,将这一组操作放到一个事物里去。

请大家指正,谢谢~

加载中
0
红薯
红薯

如果做大量数据的插入和删除,最好是每隔500或者1000次操作时提交事务,再重启新的事务

0
张林
张林

我想问一下你的库是MYISAM还是innodb的,如果是MYISAM每次存入数据都会锁住整个表,而innodb每次只行锁,因此有大量数据要进行频繁修改的话用innodb,另外innodb支持事务。但缺点也显而易见,innodb备份麻烦,不支持直接复制库就运行。

0
简单的牛牛
简单的牛牛

谢谢高手们~~~

0
川口人
川口人

解决啦  说说怎么解决的呀  

0
简单的牛牛
简单的牛牛

引用来自#5楼“门徒”的帖子

解决啦  说说怎么解决的呀  

 其实到最后也没找到很好的解决方法,还是控制数据库操作次数...将处理单元尽量分开...

返回顶部
顶部