如何提高Mysql 批量插入和更新 数据库的效率了?

wswxfwps 2016-03-23 04:17:00
如题:如何提高Mysql 批量插入和更新 数据库的效率了?
我现在达到了这种程度:

30个字段,一秒钟 insert 5500条记录,1秒钟更新2400条 算快么?
也就是10w条记录:
插入: 18s左右
更新: 38s左右

还能快么?求指教
...全文
461 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wswxfwps 2016-03-25
  • 打赏
  • 举报
回复
引用 1 楼 mchdba 的回复:
将commit设置成0、sync_binlog设置成0试试看。
commit 设置0 是 con.setAutoCommit(false); 么? sync_binlog 怎么用代码实现了?
zhu19774279 2016-03-25
  • 打赏
  • 举报
回复
话说update不应该啊,一条update语句通常都是同时更新所有符合条件的数据,一次性更新10万数据也就是1s的事。 一条数据update一次这种情况,数据量太大一般都分库分表降低压力,挤在一个库里不科学。
zhu19774279 2016-03-25
  • 打赏
  • 举报
回复
不共用connection应该不会锁。其实是我猜的,因为没见过J2EE的程序多人执行简单update功能的时候会把自己锁起来 sync_binlog是改配置文件,代码只能去调用shell命令,那个效率不高
wswxfwps 2016-03-25
  • 打赏
  • 举报
回复
引用 7 楼 zhu19774279 的回复:
话说update不应该啊,一条update语句通常都是同时更新所有符合条件的数据,一次性更新10万数据也就是1s的事。 一条数据update一次这种情况,数据量太大一般都分库分表降低压力,挤在一个库里不科学。
还有个疑问: 网上说 Mysql的引擎innodb 适合大数据的插入和更新,但是我发现我把引擎改成myisam 速度居然还快些? 这是怎么回事了?
九月茅桃 2016-03-24
  • 打赏
  • 举报
回复
将commit设置成0、sync_binlog设置成0试试看。
wswxfwps 2016-03-24
  • 打赏
  • 举报
回复
引用 2 楼 zhu19774279 的回复:
想快用多线程吧,我用的jdbc+线程池+batch,不同线程成绩大概如下: 1线程:13.455s; 2线程:8.517s; 4线程:9.808s; 8线程:10.382s 这个时间跟CPU和硬盘有很大关系。我的是双核CPU,所以2个线程最快,如果你的CPU核数更多或者能上固态硬盘,应该能取得更好的成绩。 软件:Windows 7 64bit + MySQL 5.7.10 硬件:Intel G2020(2.9GHz),8G内存,7200普通机械硬盘 表信息: CREATE TABLE `test` ( `tb1` CHAR(20) NULL DEFAULT NULL ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
有个疑问: 如果多线程同时更新一张表的话,会不会锁表了? 如果锁表的话那不跟一个线程一样么?
zhu19774279 2016-03-24
  • 打赏
  • 举报
回复
忘了说,我只测试了insert
zhu19774279 2016-03-24
  • 打赏
  • 举报
回复
想快用多线程吧,我用的jdbc+线程池+batch,不同线程成绩大概如下: 1线程:13.455s; 2线程:8.517s; 4线程:9.808s; 8线程:10.382s 这个时间跟CPU和硬盘有很大关系。我的是双核CPU,所以2个线程最快,如果你的CPU核数更多或者能上固态硬盘,应该能取得更好的成绩。 软件:Windows 7 64bit + MySQL 5.7.10 硬件:Intel G2020(2.9GHz),8G内存,7200普通机械硬盘 表信息: CREATE TABLE `test` ( `tb1` CHAR(20) NULL DEFAULT NULL ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧