提问人:AKASH CHOUDHURY 提问时间:6/10/2023 最后编辑:James ZAKASH CHOUDHURY 更新时间:6/10/2023 访问量:46
对于 2 GB 文件,加载 DATA INFILE 大约需要 3 分钟。updated_at列设置为 DEFAULT CURRENT_TIMESTAMP
Load DATA INFILE taking approx 3min for a 2 GB file. updated_at column set to DEFAULT CURRENT_TIMESTAMP
问:
所有记录都具有相同的 TIMESTAMP 值。 我没有在 LOAD DATA INFILE 语句中为updated_at列设置任何值。 为什么会有这样的行为
预计秒数会有所不同,因为不可能在 1 秒内插入 500 万条记录。
2023-05-07 06:26:36 示例。至少某些记录的秒数应该不同
mysql -h$1 -u$2 -p$3 --local-infile=1 -e "LOAD DATA LOCAL INFILE '$4' INTO TABLE abc FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES ( legal_name, pg_merchant_id, ip_addr)"
表结构:
CREATE TABLE `abc` (
`pg_merchant_id` varchar(10) NOT NULL,
`legal_name` varchar(100) NOT NULL,
`ip_addr` varchar(150) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `updated_at_idx` (`updated_at`)
)
答:
0赞
ysth
6/10/2023
#1
CURRENT_TIMESTAMP
将是 LOAD 语句开始的时间。这在文档中有所说明:
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_current-timestamp :
CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP() 是 NOW() 的同义词。
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_now :
NOW() 返回一个常量时间,指示语句开始执行的时间。(在存储的函数或触发器中,NOW() 返回函数或触发语句开始执行的时间。这与 SYSDATE() 的行为不同,后者返回执行的确切时间。
我建议您在加载完成后设置updated_at;如果执行加载文件并在事务中更新,则它们不会看到以前的值。
即便如此,另一个团队也需要知道任何报表或交易可能需要的时间,并寻找至少过去那么久updated_at。如果它们只是与当前时间进行比较,它们将错过一些更新或插入。
评论