gpt4 book ai didi

sql - sybase更新越来越慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:39 32 4
gpt4 key购买 nike

我有一个大约 4GB 的大文本文件,超过 800 万行,我正在编写一个 perl 脚本来逐行读取这个文件,进行一些处理并将信息更新到 sybase,我是批量完成的方式,每批更新提交1000行,但是问题来了,一开始,一个批只花费10到20秒,但是随着处理的进行,更新一个批变得越来越慢,一个批花费3到4分钟,我绝对不知道为什么会这样!任何人都可以帮我分析这可能是什么原因?在此先感谢,跪下...

最佳答案

==>I'm writing a perl script to read this file line by line, do some processing and update the info to sybase

Please do entire processing at one go mean process your source file at one go; Prepare data structure using hash, array as per requirement and then start inserting data into database.

在向数据库中插入大数据时,请记住以下几点。

1- 如果每列数据不是太大,那么您也可以一次插入整个数据。(您可能需要良好的 RAM,但不确定大小,因为它取决于您需要处理的数据集)。

2- 你应该使用 perl DBI 的 execute_array 以便你可以一次性插入数据。

3- 如果您没有足够的 RAM 来一次插入数据,那么请将您的数据分开(可能分为 8 部分,每次 100 万行)。

4- 还要确保您只准备了一次声明。在每次运行中,您只是在执行新数据集。

5- 关闭您的 auto_commit。

使用 perl DBI 的 execute_array 的示例代码。我已经用它向 mysql 中插入了大约 1000 万条数据。

请将您的数据以数组的形式保存在如下数组中。 @column1_data、@column2_data、@column3_data

 print $logfile_handle, "Total records to insert--".scalar(@column1_data);
print $logfile_handle, "Inserting data into database";
my $sth = $$dbh_ref->prepare("INSERT INTO $tablename (column1,column2,column3) VALUES (?,?,?)")
or print ($logfile_handle, "ERROR- Couldn't prepare statement: " . $$dbh_ref->errsr) && exit;
my $tuples = $sth->execute_array(
{ ArrayTupleStatus => \my @tuple_status },
\@column1_data,
\@column2_data,
\@column3_data
);

$$dbh_ref->do("commit");
print ($logfile_handle,"Data Insertion Completed.");
if ($tuples) {
print ($logfile_handle,"Successfully inserted $tuples records\n");
} else {
##print Error log or those linese which are not inserted
my $status = $tuple_status[$tuple];
$status = [0, "Skipped"] unless defined $status;
next unless ref $status;
print ($logfile_handle, "ERROR- Failed to insert (%s,%s,%s): %s\n",
$column1_data[$tuple], $column2_data[$tuple],$column3_data[$tuple], $status->[1]);
}
}

关于sql - sybase更新越来越慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605503/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com