
adoconnection1CommandTimeout = 0命令执行超时时间(以秒为单位),设置为零说明无限制adoconnection1ConnectionTimeout = 0连接数据库超时时间(以秒为单位),设置为零说明无限制
对查询中经常作为查询条件的字段增加索引,比如说
select from table1 where name like 'xxx' and create_time > '2013-06-01'这里就可以为name 和 create_time分别创建索引;
ALTER TABLE table1 ADD INDEX `ind_CreateTime` (`create_time`);ALTER TABLE table1 ADD INDEX `ind_name` (`name`);
2 优化导致慢查询的SQL语句。可以将一条查询分解为多条小范围的查询,将结果union在一起。尽量减少在where 条件中使用 like or between等运算符
没试过么大的。你可尝试:
mysql -uroot -p 进入控制台。
mysql> create dataname;
mysql>use dataname;
mysql>source path/to/shujukusql
慢慢看看。
其次如果有原库,尝试使用Xtrabacku来备份。可以在从库上在线备份。如果有MyISAM库会自动锁库。混全模式有一个脚本 innobackupex来执行。总之搜索。这个有大理文档。建议大库建议使用。
1设置内存大小,防止内存溢出
2利用缓存:redis管道(Pipelining)。非阻塞请求/响应服务器能够实现异步处理,即使旧的请求还未被响应,也能处理新的请求。
3批次插入,如:每1000条执行一次批量插入语句
4使用事务提高插入性能
使用事务可以在插入出错时进行回滚。
且在进行一个INSERT *** 作时,MySQL内部会建立一个事务,在事务内才进行真正插入处理 *** 作。通过使用事务可以减少创建事务的消耗,所有插入都在执行后才进行提交 *** 作。
以spring+mybatis为例
1配置datasource时指定如下信息
2读取properties下的所有配置文件
3jdbcproperties文件内容如下:
要是你使用了事务那就得尽量启用短事务长事务很容易导致数据库中 *** 作的表被锁死。你可以在数据库中使用sp_who查询出你正在使用的数据库是否有sleeping的或者AWAITING COMMAND的然后调试你的代码看看是什么原因导致出现这个问题的。还有就是可能因为你使用的sql语句查询数据量过大而且使用过多的子查询导致sql语句执行效率很低然后会是数据库无法及时响应。这个是我个人的经历。具体其他的我就不是很清楚了 希望能够帮到你
以上就是关于如何解决访问sql数据库超时问题全部的内容,包括:如何解决访问sql数据库超时问题、mysql数据库检查表经常超时,怎样解决、CENTOS下如何用mysql命令导入3G数据库总是超时失败等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)