更改mysql配置如下:
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:50M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set _buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 10M
# Set _log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 128M
innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
innodb_support_xa=off
用mysql-connector-odbc-5[1]15-win32msi这个驱动程序
哥们,你建主键了没?
排除了以上问题,还慢,就看看你的连接了,如果是自己写的,那么建议你找个别人写好的连接类试试。有时候代码没问题,db没问题,那么只有时连接的问题了!!
希望对你有用。
mysql使用jdbc的批量插入需要在连接Mysql的地方加上rewriteBatchedStatements=true
,也就是springdatasourceurl = jdbc:mysql://1921681544:3306/ml_testuseSSL=false&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true
,如果不加这个的话,和自己循环插入差不多
代码写的很菜 ,$batches那么大 ,先不说 循环 10000次 ,关键的是循环一次就要查询一下数据库 ,查询了 10000 次数据库。
来 10000 次 ,自然慢 ,加上还有事物的处理 ,不慢才怪。
不关事物的事 ,代码太烂。
这个过程的含义很不明确:
update d set e=nnsn,flag='1'
where flag='0' and rownum=1;
这个where条件句与前面那个游标没有任何关系,也就是说,你前面取了2000条记录,然后把d表里flag='0' and rownum=1这一条记录改了2000多次。实际上,d表里这一条记录只可能保留最后那一次更新的值。这是在做什么?
以上就是关于mysqL update 太慢,求解决方法全部的内容,包括:mysqL update 太慢,求解决方法、java,jdbc,大量数据update更新效率很慢,哪位大神可怜可怜我吧、数据库批量更新事务速度奇慢为啥等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)