面试题答案
一键面试交互模式优化方法
- 禁用日志:在导入前执行
PRAGMA journal_mode = OFF;
,关闭日志记录,减少I/O操作,导入完成后再恢复。 - 设置事务:将导入操作放在事务中,如
BEGIN;
开始事务,导入完成后COMMIT;
提交事务,减少每次插入的开销。 - 增加缓存大小:通过
PRAGMA cache_size = <value>;
适当增大缓存大小,减少磁盘I/O,<value>
为页面数量,根据系统内存调整。
批处理模式优化方法
- 使用分块读取:在批处理脚本中(如Python脚本调用SQLite),分块读取CSV文件,每次读取一定行数并批量插入,减少内存占用和I/O次数。
- 同样禁用日志和使用事务:和交互模式类似,在批处理脚本连接数据库后,先禁用日志,开始事务,完成导入后提交事务并恢复日志。
- 调整导入工具参数:如果使用第三方工具导入,查看并调整工具的相关参数,如导入速度限制、缓冲区大小等。
两种模式优化方法优劣分析
- 交互模式
- 优点:操作直接,适合手动调试和少量数据测试。
- 缺点:对于大规模数据,手动操作易出错,且事务长时间运行可能影响数据库其他操作。
- 批处理模式
- 优点:自动化程度高,可通过脚本灵活控制,适合大规模数据导入,可分块处理降低内存压力。
- 缺点:编写脚本相对复杂,调试成本较高,需要对编程语言和SQLite接口有一定了解。