我一直在運行一個查詢,通過匹配來自另一個表的ID來向表中添加一列。兩者都有大約6億行,所以這是合理的,這將需要一段時間,但令人擔憂的是,磁盤上的讀取速度很高(〜500MB/s),但根據iotop
,sqlite正在寫入0B/s。我的.db文件上的文件大小在幾個小時內沒有改變,但向6億行表添加一列應至少改變一個字節,不是?是高讀,但絕對沒有寫在SQLite查詢正常?
這是SQLite的正常行爲嗎?該機器非常強大,四核i7上的Ubuntu 16具有64GB RAM和NVMe SSD。查詢和表格架構如下。
ALTER TABLE tableA ADD address TEXT;
UPDATE tableA SET address = (SELECT address FROM tableB WHERE tableA.ID = tx_out.ID);
Table schema:
CREATE TABLE tableA (
ID TEXT,
column1 INT,
column2 TEXT,
);
CREATE TABLE tx_out (
ID TEXT,
sequence INT,
address TEXT
);
也許寫入事務日誌第一? [WAL](https://sqlite.org/wal.html) – lad2025
@ lad2025可能,我發現一個-journal文件根據這個文件https://sqlite.org/tempfiles.html但它只有25KB,是正常的對於這麼大的交易? – jamzsabb