mysql insert速度慢

jobwithjava 2008-05-15 05:15:28
库中有5万多条记录,但有的表字段(type:longtext)特别大(用来存放书的章节,每一章放到一个字段中),我查看整个表对应的文件,已经有900M了,现在通过jdbc(ResultSet,PreparedStatement)一次往表里边插入1000到3000条数据时候,要十多分钟,感觉很慢,有什么方法能提高性能,更快一点啊?

现在库只有我一人使用,不会因为大量连接导致慢。
已经对longtext字段做了fulltext索引。
...全文
1183 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcoolx 2008-05-27
  • 打赏
  • 举报
回复
让索引disable


[Quote=引用 12 楼 jobwithjava 的回复:]
alter table yourtablename disable keys; 这个起什么作用呢?
[/Quote]
wildlily980 2008-05-26
  • 打赏
  • 举报
回复
alert table tablename disable keys;
这句话写在存储过程中编译通不过啊,我已经把tablename改成我的表名了。
---------------------------------------------
alert 改成alter另外建议查查mysql 语法.
索引会拖慢insert 速度.
大量插入数据时,可以先关闭索引,然后再重建索引,这个要比直接insert快。手册上是这么建议的。
ironlong 2008-05-26
  • 打赏
  • 举报
回复
alert table tablename disable keys;
这句话写在存储过程中编译通不过啊,我已经把tablename改成我的表名了。
jobwithjava 2008-05-16
  • 打赏
  • 举报
回复
alter table yourtablename disable keys; 这个起什么作用呢?
jobwithjava 2008-05-16
  • 打赏
  • 举报
回复
刚才把程序和表按各位推荐的方法修改完成,测一下,谢谢啦。。
懒得去死 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jobwithjava 的回复:]
不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。

我怎么不理解你的意思呢
[/Quote]

意思就是尽量在一个begin end;块内COMMIT;
jobwithjava 2008-05-16
  • 打赏
  • 举报
回复
不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。

我怎么不理解你的意思呢
懒得去死 2008-05-16
  • 打赏
  • 举报
回复
1、set @@autocommit = 0;
2、建议使用INSERT INTO .. VALUES (),(),...();
3、删掉你的索引,或者alter table yourtablename disable keys;
jobwithjava 2008-05-16
  • 打赏
  • 举报
回复
哈哈,果然快了很多,我的做法:

1,insert into tablename set column1=?,...
2,alert table tablename disable keys;

还有没有更好的方法啦,,,请教了。过两三天结贴。:)
liuyann 2008-05-15
  • 打赏
  • 举报
回复

[Quote]======= L3 - 2008-05-15 17:31:27 - sunday_bj --- 0 ===================================
写成一条sql语句试试呢,insert into tables value (),(),()......
一条insert比多条insert效率更高
[/Quote]

不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。

==== ====

liuyann 2008-05-15
  • 打赏
  • 举报
回复

[Quote]======= L3 - 2008-05-15 17:31:27 - sunday_bj --- 0 ===================================
写成一条sql语句试试呢,insert into tables value (),(),()......
一条insert比多条insert效率更高
[/Quote]

==== ====

jobwithjava 2008-05-15
  • 打赏
  • 举报
回复
INSERT INTO table (column1,column2,column3,column4,column5)VALUES (?,?,?,?,?)

这是我现在的sql.

通过问号使用pst.setXXX(index,content)来设置数据,能写成上边的形式吗?
是这样:
INSERT INTO table VALUES (?,?,?,?,?)

???
sunday_bj 2008-05-15
  • 打赏
  • 举报
回复
insert into table values (),(),()......
sunday_bj 2008-05-15
  • 打赏
  • 举报
回复
写成一条sql语句试试呢,insert into tables value (),(),()......
一条insert比多条insert效率更高
jobwithjava 2008-05-15
  • 打赏
  • 举报
回复
现在已经用了:
conn.setAutoCommit(false);

addBatch();
executeBatch();

conn.setAutoCommit(true);

我直接用jdbc完成插入。
WWWWA 2008-05-15
  • 打赏
  • 举报
回复
用事务试试,插入完提交数据

56,679

社区成员

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

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