在SQLite中,我使用SELECT
从一个数据库中读取数据,执行一些修改并将其写入另一个数据库。
查看iotop
的输出,进程性能(仅使用一个核心)是I / O绑定的(IO> 80%,CPU <20%)。我在iotop
中可以看到的大部分动作都是在“DISK READ”下进行的,并且只是偶尔会出现“DISK WRITE”下的内容。
流程性能是否可能受SELECT
/读取事务的约束?基本上我在网上看到的SQLite的所有与性能相关的信息都是INSERT
/ write。关于阅读数据有什么需要知道和优化的吗?
一个效率低下的查询,即在缺少索引的字段上通过SELECT对IO的影响比在CPU上影响更大吗?
答案 0 :(得分:0)
问题相当广泛,所以答案也是如此:是的,选择缺少索引的字段会对IO产生强烈影响。
根据您的查询,架构和数据,SQLite可能正在执行全表扫描。
运行explain query plan可以让您更好地了解SQLite在您的特定情况下正在做什么。