Sqlite在4GB中删除速度慢

时间:2018-06-05 05:44:38

标签: sqlite database-performance

我一直在使用fat32文件系统。我有一个4 GB大小的数据库。数据库由1个父表和1个子表组成。父表有10行,子表有4000行。 1行子表的大小为1 MB。

当我删除父表中的行时,删除级联1MB大小的子记录。 (pragma foreign_keys打开)当我尝试通过级联删除100 MB数据(1个父记录 - 100个子记录)时,完成需要太长时间(差不多1-10分钟),并且持续时间根据数据大小增加/减少(100 Mb:1-10分钟,300 MB:3-30分钟等)。

我尝试了其他帖子建议的一些pragma命令(synchronous,temp_store,journal_mode),我也尝试在外键上添加索引,但这些并没有帮助解决我的问题。(实际上,在外键上添加索引后,1 MB数据删除变得更快/ st,但100 MB数据删除持续时间没有变化)你能否给我任何提高删除性能的建议?

CREATE TABLE "ANHXT" (
  "id" integer primary key autoincrement,
  "ANH_AD" text,
  "ANH_DBGMHWID" text,
  "ANH_TYPE" integer,
  "ANH_INDEXNO" int64_t
)

CREATE TABLE "PRCXT" (
  "id" integer primary key autoincrement,
  "ANP_SEGMENTNO" integer not null,
  "ANP_VALUE" blob,
  "ANH_PRC_id" bigint,
  constraint "fk_ANHPRC_ANH_PRC" foreign key ("ANH_PRC_id") references  "ANHXT" ("id") on update cascade on delete cascade deferrable initially deferred
)

CREATE UNIQUE INDEX UQC_ANH_TYPE on ANHXT( ANH_TYPE)
CREATE UNIQUE INDEX UQC_ANP_SEGMENTNO_ANAHTARID on PRCXT( ANP_SEGMENTNO,ANH_PRC_id)
CREATE INDEX findex on PRCXT( ANH_PRC_id)

0 个答案:

没有答案