spring+hibernate在MYSQL下的一些问题
今天在帮朋友调试一个关于多线程访问同一张表引起的Lock wait timeout exceede的问题,感觉引起的原因有:
1,没有进行优化,尽量避免多线程
2,根据它后面报的异常,提醒我可以Hibernate 的Session没有使用得当,(也是我解决的方案)
3,用synchronized修饰更新表的函数
估计是原来程序在修改完该表时立刻进行了插入操作导致的,
所以我在更新后进行getHibernateTemplate().flush();
最后,在插入操作(save())时,原本他是又创建了一个新的DAO,再将记录插入到数据库中,而因为是同一个DAO,我将其删掉,直接调用save(),这个问题也就解决了!
调试之前:
public boolean createCurrentSL(Users u){
try {
String queryString = "update Appendlist set isCurrent=? where isCurrent='1' and uid=?";
Object[] objs=new Object[2];
objs[0]=false;
objs[1]=u.getUid();
getHibernateTemplate().bulkUpdate(queryString,objs);
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml");
IAppendlistDAO alDAO=(IAppendlistDAO)factory.getBean(IAppendlistDAO.BEAN_NAME);
Calendar cal=Calendar.getInstance();
if(cal.get(Calendar.MONTH)!=Calendar.DECEMBER)
cal.set(Calendar.MONTH, Calendar.MONTH+1);
else
cal.set(Calendar.MONTH, Calendar.JANUARY);
int max=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=1;i<=max;i++){
Appendlist al=new Appendlist();
al.setUsers(u);
al.setMonthday(i);
al.setIsCurrent(true);
al.setAlDemo("ABSENT");
alDAO.save(al);
}
return true;
} catch (RuntimeException re) {
System.out.println("createCurrentSL failed");
re.printStackTrace();
return false;
}
}
调试之后:
public boolean createCurrentSL(Users u){
try {
String queryString = "update Appendlist set isCurrent=? where isCurrent='1' and uid=?";
Object[] objs=new Object[2];
objs[0]=false;
objs[1]=u.getUid();
getHibernateTemplate().bulkUpdate(queryString,objs);
getHibernateTemplate().flush();
Calendar cal=Calendar.getInstance();
if(cal.get(Calendar.MONTH
相关文档:
[MySQL优化] -- 如何了解SQL的执行频率
时间:2010-2-28来源:HaCMS开源社区 作者:chuxu
MySQL 客户端连接成功后,通过 show [session|global]status 命令 可以提供服务器状态信息,也可以在操作系统上使用 mysqladmin extended-status 命令获得这些消息。 show [session|global] status 可以根据需要加上参数&ldquo ......
Mysql 常用函数
ASCII(str)
返回字符串str的第一个字符的ASCII值(str是空串时返回0)
mysql> select ASCII('2');
-> 50
mysql> select ASCII(2);
-> 50
mysql> select ASCII('dete');
- ......
转自http://www.phpvim.net/windows/build-mysql-client-on-cygwin.html
MinTTY 是一个小巧但却很实用的 Cygwin 终端机,但有个严重的问题就是无法调用交互性的 Windows 原生程序,比如说
mysql.exe,当你在 MinTTY 中输入如下的命令:
1
$ mysql -uroot
-p
本来 mysql.exe 会提示输入密码,但在 MinTTY 中程序会直 ......
在phpmyadmin的根目录下建立config.inc.php
写入如下代码:
<?php
//phpmyadmin 配置文件
//本地MySQL数据库
$i=1;
$cfg['Servers'][$i]['host'] =
'localhost';
$cfg['Servers'][$i]['user'] ......
cmd下切换到 mysql 安装目录
例
d:/mysql/bin
(如果用WAMP安装则是D:\wamp\bin\mysql\mysql5.1.30\bin)
前提:mysql用户root密码为空.
输
入 mysql -u root mysql
mysql> 状态下输入
update user set password=password('新密码') where user='root';
回
显
Quer ......