mysql 插入十万以上数据速度变慢
有两张表,表a和表b,表的数据库引擎都是innoDB,都设置aotocommit为false,现在分别向两张表插入100多万的数据,均为批量插入。发现插入表a的速度挺快的,而插入表b的速度在10万以内蛮快的,而在10万以上比较慢,每次批量插入都要挺长时间,不知道为什么,向大家请教一下。
表a的字段类型为:三个TEXT,一个LONGTEXT,一个INT(11)。表b的字段类型为一个TEXT,一个INT(11)
批量插入的语句为:
int numBatch = 0;
while(){
++numBatch;
//.....中间有代码省略
insert.addBatch();
if(numBatch % 10000 == 0){
insert.executeBatch();
localDBcon.commit();
System.out.println(numBatch);
}
}
是不是跟longtext数据类型有关系
也有可能和你的配置设置有关系
表间关系、主键、外键、约束、索引、TRIGGER等等,贴出来看看
两个表是独立的,表b有一个主键,无索引,无约束,无外键,都无。表a无主键,表a虽然有longtext类型,但插入百万数据不慢,而是表b插入前10万不慢,后面就开始变慢了。可能跟数据库的配置有关吧
我现在的猜测是表b有主键,插入数据在10万以上以后,是不是需要去判断主键是否唯一,所以速度变慢了。而表a没有主键,插入速度不变。不知道是不是这个原因
SQL code
Code highlighting produced by Actipro CodeHighlighter (fr
相关问答:
一个行业网站,要实现的功能要求为:
一搜索表单可选搜索 产品/资讯/商家,搜索时希望先搜标题后全文,当前的数据量估计3万多,定位期望在百万级也可用。
数据类型为innodb,当前的方法是对关键词进行 ......
我用一个循环往数据库里面存文件,本来可以作为文件存放数据库里面只放文件的位置的,但是没有办法租的服务器网页空间大小有限制数据库没有限制。语句是这样的
public static final DataBase.MAXSIZE=102 ......
我是用mysql自带的C API
if(mysql_real_connect(&mysql,"125.0.0.108","root","root","home",3306,NULL,0))
{
AfxMessageBox("数据库连接失败") ......
假如数据库中有个test表,表中有id,Name,num,记录时间
id为自增长主键,name是名字,num表示其数量
1 nike 100 系统时间
2 nike 300 &n ......
我在书上看到说每一个表都属于某一个模式,如果要为表指定模式,有三种方法:
1)
在创建表时显式的给出模式名,比如create table "xxx".sno(......);
2)
在创建模式的时候同时创建表
3) ......