Otomatik işlem devre dışı bırakılmadan önce otomatik olarak etkinleştirilir, çünkü otomatik işlemin etkinleştirilmesi (yani senkronizasyonun gerçekleşmesini bekler, bu da, takılan her satırdan sonra verilerin sabit disk gibi kalıcı depolama birimine yazılmasını bekler).
Otomatik işlem yanlışsa, eşitleme beklemez.
Senkronizasyonun beklemede beklemedeki ve beklemedeki fark, verilerin aslında sabit diske mi yoksa tamponda mı (IO'nun arabelleğe alınabileceğini veya sabit diskin arabelleğe alınabileceğinin) garantisidir.
Kısacası, otomatik işlemin devre dışı bırakılması size performans artışı sağlar. Ve varsayılan olarak otomatik işlemin etkinleştirildiğini düşünüyorum.
AÇIK taahhüt ve hala sadece toplu operasyondan önce işlem olarak başlar ve sonra hareketi tamamlamak için denemek performans artışı ihtiyaç otomatik olmasını istiyorsanız optimizasyonu bir başka yolu. Bu sayede sqlite her ekleme işleminden sonra otomatik işlem yapmaz ve iyi bir performans artışı sağlar.
DÜZENLEME:
Eğer sadece otomatik devre dışı bırakıyorsunuz bir işlemi başlamadan bu işlem için taahhüt ve işlem bittikten sonra bu 'açık' Tekrar olacak. Satırları ayrı ayrı eklediğinizde/güncelleştirdiğinizde (toplu olarak değil), otomatik işlemin hangi olduğuna karar verirseniz, her ekleme/güncelleştirme için açıkça bir işlemi başlatmanız gerekmez. Otomatik taahhüdün doğru olarak ayarlanması ile ilgili olarak, gerçeğinden sonra, taahhüt için çağrı yapmaz. Otomatik olarak 'u doğru yaparsanız ve zaten eklediğiniz/güncellediyseniz, herhangi bir efektiniz olmaz ve bu ekleme/güncellemeyi yapmadan önce otomatik olarak doğru garantileri olmaz.
Here's some information about speeding up Sqlite INSERTs.
Buna yanıt olarak kabul edilen yanıttaki bazı bilgilerle çelişen bir yanıt ekledim. Bilginize. – Gray