在sqlite(特别是版本3)中,是否应在事务中运行ANALYZE?
如果是这样,并且我已经进行了很多更改,那么长事务将要结束时,是否可以在同一事务中运行ANALYZE,还是应该先提交该事务并开始进行ANALYZE的另一事务?
该文档没有以任何其他方式说明这种情况。
ANALYZE从索引列读取数据,并将统计信息写入某些内部表。这有点类似于以下查询:
INSERT OR REPLACE INTO sqlite_statXXX
SELECT 'MyTable', 'MyColumn', COUNT(*), AVG(MyColumn) FROM MyTable
为每个索引列执行一次。
像任何其他将少量数据写入数据库的SQL语句一样,事务开销将比实际写入数据本身要大得多。
在你的情况下,是不是有必要为您更改的数据可用,而不改变统计,所以你也可以同样做到在同一事务的分析一下。
如果数据库很大,以至于ANALYZE可以长时间运行,则可以将其执行延迟到以后才与更重要的事务不冲突时才有意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句