私は、別のテーブルのIDを照合してテーブルにカラムを追加するクエリを実行しています。どちらも約6億行ありますので、これには時間がかかりますが、ディスクには高い読み取り速度(〜500MB/s)がありますが、sqliteはiotop
に従って0B/sを書いています。私の.dbファイルのファイルサイズは数時間で変更されていませんが、6億行のテーブルに列を追加すると、少なくとも1バイトは変更されますか?読み込み率は高いですが、SQLiteクエリでは書き込みはありません。
これはSQLiteの通常の動作ですか?このマシンはかなり強力で、64GB RAMとNVMe SSDを搭載したクアッドコアi7のUbuntu 16です。クエリとテーブルスキーマは以下のとおりです。それは第三だ後
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