首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
其他数据库开发
MySQL/Postgresql
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
mysql insert速度慢
[已结帖,结帖人:jobwithjava]
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
结帖率:
100.00%
发表于:
2008-05-15 17:15:28
楼主
库中有5万多条记录,但有的表字段(type:longtext)特别大(用来存放书的章节,每一章放到一个字段中),我查看整个表对应的文件,已经有900M了,现在通过jdbc(ResultSet,PreparedStatement)一次往表里边插入1000到3000条数据时候,要十多分钟,感觉很慢,有什么方法能提高性能,更快一点啊?
现在库只有我一人使用,不会因为大量连接导致慢。
已经对longtext字段做了fulltext索引。
问题点数:
20
回复次数:
16
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
WWWWA
aaaa
等级:
可用分等级:
掌柜
总技术分:
104063
总技术分排名:
54
2
7
7
发表于:
2008-05-15 17:17:27
1
楼 得分:
0
用事务试试,插入完提交数据
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
发表于:
2008-05-15 17:20:56
2
楼 得分:
0
现在已经用了:
conn.setAutoCommit(false);
addBatch();
executeBatch();
conn.setAutoCommit(true);
我直接用jdbc完成插入。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sunday_bj
等级:
可用分等级:
中农
总技术分:
715
总技术分排名:
27106
发表于:
2008-05-15 17:31:27
3
楼 得分:
5
写成一条sql语句试试呢,insert into tables value (),(),()......
一条insert比多条insert效率更高
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sunday_bj
等级:
可用分等级:
中农
总技术分:
715
总技术分排名:
27106
发表于:
2008-05-15 17:33:35
4
楼 得分:
5
insert into table values (),(),()......
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
发表于:
2008-05-15 17:40:06
5
楼 得分:
0
INSERT INTO table (column1,column2,column3,column4,column5)VALUES (?,?,?,?,?)
这是我现在的sql.
通过问号使用pst.setXXX(index,content)来设置数据,能写成上边的形式吗?
是这样:
INSERT INTO table VALUES (?,?,?,?,?)
???
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
liuyann
╔──────────╗ │
等级:
可用分等级:
富农
总技术分:
45914
总技术分排名:
200
4
发表于:
2008-05-15 21:44:35
6
楼 得分:
0
引用
======= L3 - 2008-05-15 17:31:27 - sunday_bj --- 0 ===================================
写成一条sql语句试试呢,insert into tables value (),(),()......
一条insert比多条insert效率更高
=
=
=
=
思
想
重
于
技
巧
=
=
=
=
reply via CSDN viewer
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
liuyann
╔──────────╗ │
等级:
可用分等级:
富农
总技术分:
45914
总技术分排名:
200
4
发表于:
2008-05-15 21:45:40
7
楼 得分:
0
引用
======= L3 - 2008-05-15 17:31:27 - sunday_bj --- 0 ===================================
写成一条sql语句试试呢,insert into tables value (),(),()......
一条insert比多条insert效率更高
不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。
=
=
=
=
思
想
重
于
技
巧
=
=
=
=
reply via CSDN viewer
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yueliangdao0608
我喜欢上帝,尤其是他老婆。
等级:
可用分等级:
掌柜
总技术分:
61338
总技术分排名:
138
4
7
3
发表于:
2008-05-16 08:54:32
8
楼 得分:
10
1、set @@autocommit = 0;
2、建议使用INSERT INTO .. VALUES (),(),...();
3、删掉你的索引,或者alter table yourtablename disable keys;
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
发表于:
2008-05-16 09:13:56
9
楼 得分:
0
不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。
我怎么不理解你的意思呢
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yueliangdao0608
我喜欢上帝,尤其是他老婆。
等级:
可用分等级:
掌柜
总技术分:
61338
总技术分排名:
138
4
7
3
发表于:
2008-05-16 09:24:32
10
楼 得分:
0
引用 9 楼 jobwithjava 的回复:
不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。
我怎么不理解你的意思呢
意思就是尽量在一个begin end;块内COMMIT;
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
发表于:
2008-05-16 09:57:22
11
楼 得分:
0
刚才把程序和表按各位推荐的方法修改完成,测一下,谢谢啦。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
发表于:
2008-05-16 10:57:37
12
楼 得分:
0
alter table yourtablename disable keys; 这个起什么作用呢?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jobwithjava
JobWithJava
等级:
可用分等级:
短工
总技术分:
1
总技术分排名:
333201
发表于:
2008-05-16 14:04:24
13
楼 得分:
0
哈哈,果然快了很多,我的做法:
1,insert into tablename set column1=?,...
2,alert table tablename disable keys;
还有没有更好的方法啦,,,请教了。过两三天结贴。:)
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ironlong
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
355090
发表于:
2008-05-26 17:18:31
14
楼 得分:
0
alert table tablename disable keys;
这句话写在存储过程中编译通不过啊,我已经把tablename改成我的表名了。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wildlily980
小李
等级:
可用分等级:
掌柜
总技术分:
4519
总技术分排名:
5018
发表于:
2008-05-26 20:24:27
15
楼 得分:
0
alert table tablename disable keys;
这句话写在存储过程中编译通不过啊,我已经把tablename改成我的表名了。
---------------------------------------------
alert 改成alter另外建议查查mysql 语法.
索引会拖慢insert 速度.
大量插入数据时,可以先关闭索引,然后再重建索引,这个要比直接insert快。手册上是这么建议的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
fcoolx
fcoolx
等级:
可用分等级:
掌柜
总技术分:
4205
总技术分排名:
5384
发表于:
2008-05-27 10:26:42
16
楼 得分:
0
让索引disable
引用 12 楼 jobwithjava 的回复:
alter table yourtablename disable keys; 这个起什么作用呢?
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
abc推荐给好友