私は、ofstreamで普通のバイナリファイルに書き込んでいるのと同じ速度でMYSQL DBテーブルに書き込みたいと思います。普通のファイルに書き込んでいるかのようにMYSQL DBに書き込む方法
通常、ofstreamを使用してファイルに100Mバイトを書き込むのにかかる時間は1秒未満です。
MYSQLでは、これらの100Mバイトを9秒以上で挿入しましたが、これは非常に長い時間です(MYISAMテーブルと複数行の挿入文を使用しました)。言い換えれば
、私はそれが(パースチェックし、...など)を行うものではありませんようにMySQLを設定したい、それはとてもバイナリファイル
たかのようにちょうどテーブルへの書き込みがあり、それを達成する方法は?
編集1:挿入どこMAXに使用されるコードのためのスニペットここ
されています。ここでは
は、私が移入するテーブル、
create table Frames
(
f1 varchar(8) not null ,
f2 varchar(6) not null ,
f3 varchar(6) not null ,
f4 varchar(2) not null ,
f5 varchar(4),
f6 varchar(16000),
f7 varchar(4) not null
);
編集2でありますが10000に設定されている。
for (int c = 0; c < 100; ++c)
{
string query("insert into Frames (f1,f2,f3,f4,f5,f6,f7) values");
for (int i = 1; i <= MAX; ++i)
{
query += "('AAAAAAAA','000001','000002','05','5005','000000000100000000010000000001000000000100','MKJE')";
query += (i==MAX) ? ";" : "," ;
}
if (mysql_query(conn, query.c_str())) {
fprintf(stderr, "%s\n", mysql_error(conn));
return(1);
}
}
おかげであなたはあなたのために良いですパフォーマンスを見つけるまで
インデックスを作成してから挿入してから、ジョブが完了したら作成し直すことをお勧めします。インデックスは挿入、更新、削除の操作に影響します – jonju
テーブルの説明を貼り付けます – rocks
@jonju:実際には、テーブルにインデックスはありませんが、書き込みはまだ遅いです... –